{"version":3,"file":"ngx-dev-toolbar.mjs","sources":["../../../../libs/ngx-dev-toolbar/src/dev-toolbar-state.service.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/angular-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bolt-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bug-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/code-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/database-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/discord-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/docs-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/export-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/filter-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gauge-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gear-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/git-branch-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/import-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/layout-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lightbulb-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lighting-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lock-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/moon-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/network-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/puzzle-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/refresh-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/star-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/sun-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/terminal-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/toggle-left-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/translate-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/trash-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/users-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list/list.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list-item/list-item.component.ts","../../../../libs/ngx-dev-toolbar/src/components/tool-button/tool-button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/window/window.component.ts","../../../../libs/ngx-dev-toolbar/src/components/toolbar-tool/toolbar-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/input/input.component.ts","../../../../libs/ngx-dev-toolbar/src/components/select/select.component.ts","../../../../libs/ngx-dev-toolbar/src/utils/storage.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/button/button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/card/card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/clickable-card/clickable-card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/link-button/link-button.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/settings.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/home-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/dev-toolbar.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets.service.ts","../../../../libs/ngx-dev-toolbar/src/ngx-dev-toolbar.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\n\ninterface DevToolbarState {\n  isHidden: boolean;\n  activeToolId: string | null;\n  error: string | null;\n  theme: 'light' | 'dark';\n  delay: number;\n  config: DevToolbarConfig;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DevToolbarStateService {\n  // Initial state\n  private state = signal<DevToolbarState>({\n    isHidden: true,\n    activeToolId: null,\n    delay: 3000,\n    error: null,\n    theme: 'dark',\n    config: {},\n  });\n\n  // Selectors\n  readonly isVisible = computed(\n    () => !this.state().isHidden || this.hasActiveTool()\n  );\n  readonly isDarkTheme = computed(() => this.state().theme === 'dark');\n  readonly activeToolId = computed(() => this.state().activeToolId);\n  readonly hasActiveTool = computed(() => this.state().activeToolId !== null);\n  readonly error = computed(() => this.state().error);\n  readonly theme = computed(() => this.state().theme);\n  /**\n   * The delay to hide the toolbar\n   */\n  readonly delay = computed(() => this.state().delay);\n  readonly config = computed(() => this.state().config);\n  /**\n   * Indicates if the toolbar is enabled based on config.\n   * When disabled, toolbar UI won't render and services won't return forced values.\n   * @default true\n   */\n  readonly isEnabled = computed(() => this.state().config.enabled ?? true);\n\n  // State updates\n  setVisibility(isVisible: boolean): void {\n    if (isVisible) {\n      this.state.update((state) => ({\n        ...state,\n        isHidden: false,\n      }));\n    } else {\n      if (this.activeToolId() === null) {\n        setTimeout(() => {\n          this.state.update((state) => ({\n            ...state,\n            isHidden: true,\n          }));\n        }, this.state().delay);\n      }\n    }\n  }\n\n  setTheme(theme: 'light' | 'dark'): void {\n    this.state.update((state) => ({\n      ...state,\n      theme,\n    }));\n  }\n\n  setActiveTool(toolId: string | null): void {\n    this.state.update((state) => ({\n      ...state,\n      activeToolId: toolId,\n    }));\n\n    if (toolId === null) {\n      this.setVisibility(false);\n    } else {\n      this.setVisibility(true);\n    }\n  }\n\n  // Public actions\n  toggleTool(toolId: string | null): void {\n    const currentToolId = this.activeToolId();\n    this.setActiveTool(currentToolId === toolId ? null : toolId);\n  }\n\n  toggleVisibility(): void {\n    this.state.update((state) => ({\n      ...state,\n      isHidden: !state.isHidden,\n    }));\n  }\n\n  setConfig(config: DevToolbarConfig): void {\n    this.state.update((state) => ({\n      ...state,\n      config,\n    }));\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'ndt-angular-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <defs>\n        <linearGradient\n          id=\"angular-gradient\"\n          x1=\"6\"\n          x2=\"18\"\n          y1=\"20\"\n          y2=\"4\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0\" stop-color=\"#E40035\" />\n          <stop offset=\".24\" stop-color=\"#F60A48\" />\n          <stop offset=\".352\" stop-color=\"#F20755\" />\n          <stop offset=\".494\" stop-color=\"#DC087D\" />\n          <stop offset=\".745\" stop-color=\"#9717E7\" />\n          <stop offset=\"1\" stop-color=\"#6C00F5\" />\n        </linearGradient>\n      </defs>\n      <g fill=\"url(#angular-gradient)\">\n        <polygon points=\"14.1,2.7 20.1,15.7 20.7,5.8\" />\n        <polygon points=\"15.6,16.4 8.4,16.4 7.4,18.6 12,21.2 16.6,18.6\" />\n        <polygon points=\"9.6,13.5 14.4,13.5 12,7.7\" />\n        <polygon points=\"9.9,2.7 3.3,5.8 3.9,15.7\" />\n      </g>\n    </svg>\n  `,\n})\nexport class AngularIconComponent {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-bolt-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M160,16,144,96H208l-96,144,16-80H64Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class BoltIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-bug-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M140,88a16,16,0,1,1,16,16A16,16,0,0,1,140,88ZM100,72a16,16,0,1,0,16,16A16,16,0,0,0,100,72Zm120,72a91.84,91.84,0,0,1-2.34,20.64L236.81,173a12,12,0,0,1-9.62,22l-18-7.85a92,92,0,0,1-162.46,0l-18,7.85a12,12,0,1,1-9.62-22l19.15-8.36A91.84,91.84,0,0,1,36,144v-4H16a12,12,0,0,1,0-24H36v-4a91.84,91.84,0,0,1,2.34-20.64L19.19,83a12,12,0,0,1,9.62-22l18,7.85a92,92,0,0,1,162.46,0l18-7.85a12,12,0,1,1,9.62,22l-19.15,8.36A91.84,91.84,0,0,1,220,112v4h20a12,12,0,0,1,0,24H220ZM60,116H196v-4a68,68,0,0,0-136,0Zm56,94.92V140H60v4A68.1,68.1,0,0,0,116,210.92ZM196,144v-4H140v70.92A68.1,68.1,0,0,0,196,144Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class BugIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-code-icon',\n  standalone: true,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path d=\"M240,128l-48,40H64L16,128,64,88H192Z\" opacity=\"0.2\"></path>\n      <path\n        d=\"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\"\n      ></path>\n    </svg>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-database-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M216,80c0,26.51-39.4,48-88,48S40,106.51,40,80s39.4-48,88-48S216,53.49,216,80Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class DatabaseIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-discord-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class DiscordIconComponent {\n  fill = input<string>('#000000');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-docs-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM168,216H56V72h76.69L168,107.31v84.53c0,.06,0,.11,0,.16s0,.1,0,.16V216Zm32-32H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Zm-56-32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,152Zm0,32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,184Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class DocsIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-export-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M216,112v96a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V112A16,16,0,0,1,56,96H80a8,8,0,0,1,0,16H56v96H200V112H176a8,8,0,0,1,0-16h24A16,16,0,0,1,216,112ZM93.66,69.66,120,43.31V136a8,8,0,0,0,16,0V43.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,69.66Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class ExportIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-filter-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M227.81,66.76l-.08.09L160,139.17v55.49A8,8,0,0,1,156.94,201l-32,21.33A8,8,0,0,1,112,216V139.17L44.27,66.85l-.08-.09A16,16,0,0,1,56,40H200a16,16,0,0,1,11.84,26.76Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M230.6,49.53A23.94,23.94,0,0,0,200,32H56A24,24,0,0,0,38.15,65.67L104,139.37V216a8,8,0,0,0,11.58,7.16l32-16A8,8,0,0,0,152,200V139.37l65.85-73.7A23.93,23.93,0,0,0,230.6,49.53ZM203.36,54.86a8,8,0,0,1,.07,9.12L136,139.17V196.58l-16,8V139.17L52.57,64A8,8,0,0,1,56,48H200A8,8,0,0,1,203.36,54.86Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class FilterIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-gauge-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M232,152a103.93,103.93,0,0,1-5.9,34.63,8,8,0,0,1-7.57,5.37H37.46a8.05,8.05,0,0,1-7.57-5.41A104.06,104.06,0,0,1,24,151.19C24.44,94,71.73,47.49,129,48A104,104,0,0,1,232,152Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M114.34,154.34l96-96a8,8,0,0,1,11.32,11.32l-96,96a8,8,0,0,1-11.32-11.32ZM128,88a63.9,63.9,0,0,1,20.44,3.33,8,8,0,1,0,5.11-15.16A80,80,0,0,0,48.49,160.88,8,8,0,0,0,56.43,168c.29,0,.59,0,.89-.05a8,8,0,0,0,7.07-8.83A64.92,64.92,0,0,1,64,152,64.07,64.07,0,0,1,128,88Zm99.74,13a8,8,0,0,0-14.24,7.3,96.27,96.27,0,0,1,5,75.71l-181.1-.07A96.24,96.24,0,0,1,128,56h.88a95,95,0,0,1,42.82,10.5A8,8,0,1,0,179,52.27,110.8,110.8,0,0,0,129,40h-1A112.05,112.05,0,0,0,22.35,189.25,16.07,16.07,0,0,0,37.46,200H218.53a16,16,0,0,0,15.11-10.71,112.35,112.35,0,0,0-5.9-88.3Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class GaugeIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-gear-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M207.86,123.18l16.78-21a99.14,99.14,0,0,0-10.07-24.29l-26.7-3a81,81,0,0,0-6.81-6.81l-3-26.71a99.43,99.43,0,0,0-24.3-10l-21,16.77a81.59,81.59,0,0,0-9.64,0l-21-16.78A99.14,99.14,0,0,0,77.91,41.43l-3,26.7a81,81,0,0,0-6.81,6.81l-26.71,3a99.43,99.43,0,0,0-10,24.3l16.77,21a81.59,81.59,0,0,0,0,9.64l-16.78,21a99.14,99.14,0,0,0,10.07,24.29l26.7,3a81,81,0,0,0,6.81,6.81l3,26.71a99.43,99.43,0,0,0,24.3,10l21-16.77a81.59,81.59,0,0,0,9.64,0l21,16.78a99.14,99.14,0,0,0,24.29-10.07l3-26.7a81,81,0,0,0,6.81-6.81l26.71-3a99.43,99.43,0,0,0,10-24.3l-16.77-21A81.59,81.59,0,0,0,207.86,123.18ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8.06,8.06,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8.06,8.06,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class GearIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-git-branch-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class GitBranchIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-import-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class ImportIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-layout-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path d=\"M104,104V208H40a8,8,0,0,1-8-8V104Z\" opacity=\"0.2\"></path>\n      <path\n        d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V96H40V56ZM40,112H96v88H40Zm176,88H112V112H216v88Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class LayoutIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-lightbulb-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class LightbulbIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-lighting-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path d=\"M96,240l16-80L48,136,160,16,144,96l64,24Z\" opacity=\"0.2\"></path>\n      <path\n        d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class LightingIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-lock-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Zm-68-56a12,12,0,1,1-12-12A12,12,0,0,1,140,152Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class LockIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-moon-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M224.3,150.3a8.1,8.1,0,0,0-7.8-5.7l-2.2.4A84,84,0,0,1,111,41.6a5.7,5.7,0,0,0,.3-1.8A7.9,7.9,0,0,0,109,33a8.1,8.1,0,0,0-8.1-1.1A104,104,0,1,0,225.4,156.9,8.1,8.1,0,0,0,224.3,150.3Z\"\n        opacity=\"0.2\"\n      />\n      <path\n        d=\"M233.5,137.3a12.1,12.1,0,0,0-11.8-8.6,7.9,7.9,0,0,0-1.3.1,80,80,0,0,1-98.2-98.2,12,12,0,0,0-15.6-14A104.2,104.2,0,0,0,32,120c0,57.4,46.6,104,104,104A104.2,104.2,0,0,0,239.4,149.6,12,12,0,0,0,233.5,137.3ZM136,208A88,88,0,0,1,48,120a87.6,87.6,0,0,1,64.8-84.7,96,96,0,0,0,111.9,112A87.6,87.6,0,0,1,136,208Z\"\n      />\n    </svg>\n  `,\n})\nexport class MoonIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-network-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M152,40V72a8,8,0,0,1-8,8H112a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h32A8,8,0,0,1,152,40ZM80,168H48a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8H80a8,8,0,0,0,8-8V176A8,8,0,0,0,80,168Zm128,0H176a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8h32a8,8,0,0,0,8-8V176A8,8,0,0,0,208,168Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M232,112H136V88h8a16,16,0,0,0,16-16V40a16,16,0,0,0-16-16H112A16,16,0,0,0,96,40V72a16,16,0,0,0,16,16h8v24H24a8,8,0,0,0,0,16H56v32H48a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16H72V128H184v32h-8a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16h-8V128h32a8,8,0,0,0,0-16ZM112,40h32V72H112ZM80,208H48V176H80Zm128,0H176V176h32Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class NetworkIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-puzzle-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M204,168a28,28,0,0,0,12-2.69V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V165.31a28,28,0,1,1,0-50.62V72a8,8,0,0,1,8-8h46.69a28,28,0,1,1,50.61,0H208a8,8,0,0,1,8,8v42.69A28,28,0,1,0,204,168Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M220.27,158.54a8,8,0,0,0-7.7-.46,20,20,0,1,1,0-36.16A8,8,0,0,0,224,114.69V72a16,16,0,0,0-16-16H171.78a35.36,35.36,0,0,0,.22-4,36.15,36.15,0,0,0-11.36-26.25,36,36,0,0,0-60.55,23.63,36.56,36.56,0,0,0,.14,6.62H64A16,16,0,0,0,48,72v32.22a35.36,35.36,0,0,0-4-.22,36.12,36.12,0,0,0-26.24,11.36,35.7,35.7,0,0,0-9.69,27,36.08,36.08,0,0,0,33.31,33.6,36.56,36.56,0,0,0,6.62-.14V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V165.31A8,8,0,0,0,220.27,158.54ZM208,208H64V165.31a8,8,0,0,0-11.43-7.23,20,20,0,1,1,0-36.16A8,8,0,0,0,64,114.69V72h46.69a8,8,0,0,0,7.23-11.43,20,20,0,1,1,36.16,0A8,8,0,0,0,161.31,72H208v32.23a35.68,35.68,0,0,0-6.62-.14A36,36,0,0,0,204,176a35.36,35.36,0,0,0,4-.22Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class PuzzleIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-refresh-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class RefreshIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-star-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class StarIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-sun-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M128,60a68,68,0,1,0,68,68A68.07,68.07,0,0,0,128,60Z\"\n        opacity=\"0.2\"\n      />\n      <path\n        d=\"M128,44a8,8,0,0,0,8-8V16a8,8,0,0,0-16,0V36A8,8,0,0,0,128,44ZM57.31,68.69a8,8,0,0,0,11.32-11.32L54.63,43.37A8,8,0,0,0,43.31,54.69ZM44,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H36A8,8,0,0,0,44,128Zm24.63,59.31-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,212a8,8,0,0,0-8,8v20a8,8,0,0,0,16,0V220A8,8,0,0,0,128,212Zm70.69-24.69a8,8,0,0,0-11.32,11.32l14,14a8,8,0,0,0,11.32-11.32ZM240,120H220a8,8,0,0,0,0,16h20a8,8,0,0,0,0-16Zm-24.69-62.63-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,88a36,36,0,1,1,36-36A36,36,0,0,1,128,164Z\"\n      />\n    </svg>\n  `,\n})\nexport class SunIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-terminal-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class TerminalIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-toggle-left-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M112,128A32,32,0,1,1,80,96,32,32,0,0,1,112,128Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M176,56H80a72,72,0,0,0,0,144h96a72,72,0,0,0,0-144Zm0,128H80A56,56,0,0,1,80,72h96a56,56,0,0,1,0,112ZM80,88a40,40,0,1,0,40,40A40,40,0,0,0,80,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,80,152Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class ToggleLeftIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-translate-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M250.73,210.63l-56-112a12,12,0,0,0-21.46,0l-20.52,41A84.2,84.2,0,0,1,114,126.22,107.48,107.48,0,0,0,139.33,68H160a12,12,0,0,0,0-24H108V32a12,12,0,0,0-24,0V44H32a12,12,0,0,0,0,24h83.13A83.69,83.69,0,0,1,96,110.35,84,84,0,0,1,83.6,91a12,12,0,1,0-21.81,10A107.55,107.55,0,0,0,78,126.24,83.54,83.54,0,0,1,32,140a12,12,0,0,0,0,24,107.47,107.47,0,0,0,64-21.07,108.4,108.4,0,0,0,45.39,19.44l-24.13,48.26a12,12,0,1,0,21.46,10.73L151.41,196h65.17l12.68,25.36a12,12,0,1,0,21.47-10.73ZM163.41,172,184,130.83,204.58,172Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class TranslateIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-trash-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class TrashIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n  selector: 'ndt-users-icon',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <svg\n      [attr.fill]=\"fill()\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 256 256\"\n    >\n      <path\n        d=\"M224,128a95.76,95.76,0,0,1-31.8,71.37A72,72,0,0,0,128,160a40,40,0,1,0-40-40,40,40,0,0,0,40,40,72,72,0,0,0-64.2,39.37h0A96,96,0,1,1,224,128Z\"\n        opacity=\"0.2\"\n      ></path>\n      <path\n        d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z\"\n      ></path>\n    </svg>\n  `,\n})\nexport class UsersIconComponent {\n  fill = input<string>('#FFFF');\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { AngularIconComponent } from './angular-icon.component';\nimport { BoltIconComponent } from './bolt-icon.component';\nimport { BugIconComponent } from './bug-icon.component';\nimport { CodeIconComponent } from './code-icon.component';\nimport { DatabaseIconComponent } from './database-icon.component';\nimport { DiscordIconComponent } from './discord-icon.component';\nimport { DocsIconComponent } from './docs-icon.component';\nimport { ExportIconComponent } from './export-icon.component';\nimport { FilterIconComponent } from './filter-icon.component';\nimport { GaugeIconComponent } from './gauge-icon.component';\nimport { GearIconComponent } from './gear-icon.component';\nimport { GitBranchIconComponent } from './git-branch-icon.component';\nimport { IconName } from './icon.models';\nimport { ImportIconComponent } from './import-icon.component';\nimport { LayoutIconComponent } from './layout-icon.component';\nimport { LightbulbIconComponent } from './lightbulb-icon.component';\nimport { LightingIconComponent } from './lighting-icon.component';\nimport { LockIconComponent } from './lock-icon.component';\nimport { MoonIconComponent } from './moon-icon.component';\nimport { NetworkIconComponent } from './network-icon.component';\nimport { PuzzleIconComponent } from './puzzle-icon.component';\nimport { RefreshIconComponent } from './refresh-icon.component';\nimport { StarIconComponent } from './star-icon.component';\nimport { SunIconComponent } from './sun-icon.component';\nimport { TerminalIconComponent } from './terminal-icon.component';\nimport { ToggleLeftIconComponent } from './toggle-left-icon.component';\nimport { TranslateIconComponent } from './translate-icon.component';\nimport { TrashIconComponent } from './trash-icon.component';\nimport { UsersIconComponent } from './users-icon.component';\n\n@Component({\n  selector: 'ndt-icon',\n  standalone: true,\n  imports: [\n    AngularIconComponent,\n    BoltIconComponent,\n    BugIconComponent,\n    CodeIconComponent,\n    DatabaseIconComponent,\n    DocsIconComponent,\n    DiscordIconComponent,\n    ExportIconComponent,\n    FilterIconComponent,\n    GaugeIconComponent,\n    GearIconComponent,\n    GitBranchIconComponent,\n    ImportIconComponent,\n    LayoutIconComponent,\n    LightbulbIconComponent,\n    LightingIconComponent,\n    LockIconComponent,\n    NetworkIconComponent,\n    PuzzleIconComponent,\n    RefreshIconComponent,\n    StarIconComponent,\n    TerminalIconComponent,\n    ToggleLeftIconComponent,\n    UsersIconComponent,\n    SunIconComponent,\n    MoonIconComponent,\n    TranslateIconComponent,\n    TrashIconComponent,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @switch (name()) { @case ('angular') {\n    <ndt-angular-icon />\n    } @case ('bolt') {\n    <ndt-bolt-icon [fill]=\"fill()\" />\n    } @case ('bug') {\n    <ndt-bug-icon [fill]=\"fill()\" />\n    } @case ('code') {\n    <ndt-code-icon [fill]=\"fill()\" />\n    } @case ('database') {\n    <ndt-database-icon [fill]=\"fill()\" />\n    } @case ('docs') {\n    <ndt-docs-icon [fill]=\"fill()\" />\n    } @case ('export') {\n    <ndt-export-icon [fill]=\"fill()\" />\n    } @case ('filter') {\n    <ndt-filter-icon [fill]=\"fill()\" />\n    } @case ('gauge') {\n    <ndt-gauge-icon [fill]=\"fill()\" />\n    } @case ('gear') {\n    <ndt-gear-icon [fill]=\"fill()\" />\n    } @case ('git-branch') {\n    <ndt-git-branch-icon [fill]=\"fill()\" />\n    } @case ('import') {\n    <ndt-import-icon [fill]=\"fill()\" />\n    } @case ('layout') {\n    <ndt-layout-icon [fill]=\"fill()\" />\n    } @case ('lighting') {\n    <ndt-lighting-icon [fill]=\"fill()\" />\n    } @case ('lightbulb') {\n    <ndt-lightbulb-icon [fill]=\"fill()\" />\n    } @case ('lock') {\n    <ndt-lock-icon [fill]=\"fill()\" />\n    } @case ('network') {\n    <ndt-network-icon [fill]=\"fill()\" />\n    } @case ('puzzle') {\n    <ndt-puzzle-icon [fill]=\"fill()\" />\n    } @case ('refresh') {\n    <ndt-refresh-icon [fill]=\"fill()\" />\n    } @case ('star') {\n    <ndt-star-icon [fill]=\"fill()\" />\n    } @case ('terminal') {\n    <ndt-terminal-icon [fill]=\"fill()\" />\n    } @case ('toggle-left') {\n    <ndt-toggle-left-icon [fill]=\"fill()\" />\n    } @case ('user') {\n    <ndt-users-icon [fill]=\"fill()\" />\n    } @case ('sun') {\n    <ndt-sun-icon [fill]=\"fill()\" />\n    } @case ('moon') {\n    <ndt-moon-icon [fill]=\"fill()\" />\n    } @case ('translate') {\n    <ndt-translate-icon [fill]=\"fill()\" />\n    } @case ('discord') {\n    <ndt-discord-icon [fill]=\"fill()\" />\n    } @case ('trash') {\n    <ndt-trash-icon [fill]=\"fill()\" />\n    } }\n  `,\n})\nexport class DevToolbarIconComponent {\n  private readonly stateService = inject(DevToolbarStateService);\n\n  name = input.required<IconName>();\n\n  fill = computed(() =>\n    this.stateService.theme() === 'dark' ? '#FFFFFF' : '#000000'\n  );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Container component for displaying lists of items with consistent scrolling,\n * empty states, and layout across all tools.\n *\n * @example\n * ```html\n * <ndt-list\n *   [hasItems]=\"items().length > 0\"\n *   [hasResults]=\"filteredItems().length > 0\"\n *   emptyMessage=\"No items found\"\n *   noResultsMessage=\"No items match your filter\"\n * >\n *   @for (item of filteredItems(); track item.id) {\n *     <ndt-list-item ... />\n *   }\n * </ndt-list>\n * ```\n */\n@Component({\n  selector: 'ndt-list',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    @if (!hasItems()) {\n      <div class=\"empty-state\">\n        <p>{{ emptyMessage() }}</p>\n        @if (emptyHint()) {\n          <p class=\"hint\">{{ emptyHint() }}</p>\n        }\n      </div>\n    } @else if (!hasResults()) {\n      <div class=\"empty-state\">\n        <p>{{ noResultsMessage() }}</p>\n      </div>\n    } @else {\n      <div class=\"list-container\">\n        <ng-content />\n      </div>\n    }\n  `,\n  styleUrls: ['./list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListComponent {\n  /**\n   * Whether the list has any items at all (before filtering).\n   * When false, shows the emptyMessage.\n   */\n  hasItems = input<boolean>(true);\n\n  /**\n   * Whether the list has any results after filtering.\n   * When false (but hasItems is true), shows the noResultsMessage.\n   */\n  hasResults = input<boolean>(true);\n\n  /**\n   * Message to display when there are no items at all.\n   * @example \"No feature flags found\"\n   */\n  emptyMessage = input<string>('No items found');\n\n  /**\n   * Optional hint text to display below the empty message.\n   * @example \"Call setAvailableOptions() to configure features\"\n   */\n  emptyHint = input<string | undefined>(undefined);\n\n  /**\n   * Message to display when items exist but none match the current filter.\n   * @example \"No flags match your filter\"\n   */\n  noResultsMessage = input<string>('No results match your filter');\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * List item component with consistent layout, dot badge indicator,\n * and forced state highlighting.\n *\n * @example\n * ```html\n * <ndt-list-item\n *   title=\"Analytics Dashboard\"\n *   description=\"Advanced reporting tools\"\n *   [isForced]=\"false\"\n *   [currentValue]=\"true\"\n *   [originalValue]=\"undefined\"\n * >\n *   <ndt-select ... />\n * </ndt-list-item>\n * ```\n */\n@Component({\n  selector: 'ndt-list-item',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"list-item\" [class.list-item--forced]=\"isForced()\">\n      <div class=\"info\">\n        <h3>{{ title() }}</h3>\n        @if (description()) {\n          <div class=\"description-wrapper\">\n            <span\n              class=\"dot-indicator\"\n              [class.dot-indicator--on]=\"displayValue()\"\n              [class.dot-indicator--off]=\"!displayValue()\"\n              [title]=\"tooltipText()\"\n            ></span>\n            <p>{{ description() }}</p>\n          </div>\n        }\n      </div>\n      <div class=\"actions\">\n        <ng-content />\n      </div>\n    </div>\n  `,\n  styleUrls: ['./list-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListItemComponent {\n  /**\n   * Display title for the list item\n   * @example \"Analytics Dashboard\"\n   */\n  title = input.required<string>();\n\n  /**\n   * Optional description text\n   * @example \"Advanced reporting and data visualization tools\"\n   */\n  description = input<string | undefined>(undefined);\n\n  /**\n   * Whether this item's state is forced via the dev toolbar\n   */\n  isForced = input<boolean>(false);\n\n  /**\n   * Current enabled/granted state of the item\n   */\n  currentValue = input.required<boolean>();\n\n  /**\n   * Original value before forcing (only present when isForced is true)\n   */\n  originalValue = input<boolean | undefined>(undefined);\n\n  /**\n   * Value to display in the dot indicator.\n   * For forced items: shows originalValue\n   * For non-forced items: shows currentValue\n   */\n  protected displayValue = computed(() => {\n    const originalValue = this.originalValue();\n    return this.isForced() && originalValue !== undefined\n      ? originalValue\n      : this.currentValue();\n  });\n\n  /**\n   * Tooltip text explaining the indicator state\n   */\n  protected tooltipText = computed(() => {\n    const value = this.displayValue();\n    const state = value ? 'enabled' : 'disabled';\n\n    if (this.isForced() && this.originalValue() !== undefined) {\n      return `Originally: ${state}`;\n    }\n\n    return `Current state: ${state}`;\n  });\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  computed,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n  selector: 'ndt-tool-button',\n  standalone: true,\n  template: `\n    <button\n      class=\"tool-button\"\n      [class.tool-button--active]=\"isActive()\"\n      [class.tool-button--focus]=\"isFocused()\"\n      (mouseenter)=\"onMouseEnter()\"\n      (focusin)=\"onFocus()\"\n      (focusout)=\"onBlur()\"\n      (mouseleave)=\"onMouseLeave()\"\n      (keydown.escape)=\"onEscape()\"\n    >\n      @if (isTooltipVisible()) {\n      <span\n        class=\"tooltip\"\n        [@tooltipAnimation]=\"tooltipState ? 'visible' : 'hidden'\"\n      >\n        {{ tooltip() }}\n      </span>\n      }\n      <ng-content />\n    </button>\n  `,\n  styleUrls: ['./tool-button.component.scss'],\n  animations: [\n    trigger('tooltipAnimation', [\n      state(\n        'hidden',\n        style({\n          opacity: 0,\n          transform: 'translateX(-50%) translateY(1rem)',\n        })\n      ),\n      state(\n        'visible',\n        style({\n          opacity: 1,\n          transform: 'translateX(-50%) translateY(0)',\n        })\n      ),\n      transition('hidden => visible', [animate('200ms ease-out')]),\n      transition('visible => hidden', [animate('150ms ease-in')]),\n    ]),\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarToolButtonComponent {\n  // Injects\n  private readonly state = inject(DevToolbarStateService);\n  private readonly elementRef = inject(ElementRef);\n\n  // Inputs\n  readonly title = input.required<string>();\n  readonly toolId = input.required<string>();\n\n  // Outputs\n  readonly open = output<void>();\n\n  // Signals\n  readonly isActive = computed(\n    () => this.state.activeToolId() === this.toolId()\n  );\n  readonly isToolbarVisible = this.state.isVisible;\n\n  readonly isFocused = signal(false);\n  readonly tooltip = computed(\n    () =>\n      this.elementRef.nativeElement.parentElement?.getAttribute(\n        'data-tooltip'\n      ) ?? ''\n  );\n  readonly isTooltipVisible = computed(\n    () => this.tooltip() && !this.isActive()\n  );\n\n  // Properties\n  protected tooltipState = false;\n  private readonly hideDelay = 3000;\n\n  // Public methods\n  onClick(): void {\n    this.isFocused.set(false);\n    this.open.emit();\n  }\n\n  onMouseEnter(): void {\n    this.tooltipState = true;\n  }\n\n  onMouseLeave(): void {\n    this.tooltipState = false;\n  }\n\n  onEscape(): void {\n    this.isFocused.set(false);\n  }\n\n  onFocus(): void {\n    this.isFocused.set(true);\n  }\n\n  onBlur(): void {\n    this.isFocused.set(false);\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarWindowOptions } from '../toolbar-tool/toolbar-tool.models';\n\n@Component({\n  selector: 'ndt-window',\n  standalone: true,\n  template: `\n    <div class=\"ndt-window\" [attr.data-theme]=\"theme()\">\n      <div class=\"ndt-header\">\n        <div class=\"ndt-header__content\">\n          <div class=\"ndt-header__title\">\n            <h1>{{ config().title }}</h1>\n            @if (config().isBeta) {\n            <span class=\"beta-tag\">BETA</span>\n            }\n          </div>\n          @if (config().description) {\n          <p class=\"ndt-header__description\">{{ config().description }}</p>\n          }\n        </div>\n        <div class=\"ndt-header__controls\">\n          @if (config().isMinimizable) {\n          <button aria-label=\"Minimize\" class=\"control\" (click)=\"onMinimize()\">\n            −\n          </button>\n          } @if (config().isMaximizable) {\n          <button aria-label=\"Maximize\" class=\"control\" (click)=\"onMaximize()\">\n            □\n          </button>\n          } @if (config().isClosable) {\n          <button\n            aria-label=\"Close\"\n            class=\"control control--close\"\n            (click)=\"onClose()\"\n          >\n            ×\n          </button>\n          }\n        </div>\n      </div>\n\n      <div class=\"divider\"></div>\n      <div class=\"ndt-content\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./window.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarWindowComponent {\n  readonly devToolbarStateService = inject(DevToolbarStateService);\n  readonly config = input.required<DevToolbarWindowOptions>();\n  readonly closed = output<void>();\n  readonly maximize = output<void>();\n  readonly minimize = output<void>();\n\n  readonly theme = computed(() => this.devToolbarStateService.theme());\n\n  protected onClose(): void {\n    this.closed.emit();\n  }\n\n  protected onMaximize(): void {\n    this.maximize.emit();\n  }\n\n  protected onMinimize(): void {\n    this.minimize.emit();\n  }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  computed,\n  contentChild,\n  inject,\n  input,\n  viewChild,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\nimport { DevToolbarToolButtonComponent } from '../tool-button/tool-button.component';\nimport { DevToolbarWindowComponent } from '../window/window.component';\nimport { DevToolbarWindowOptions } from './toolbar-tool.models';\n\n@Component({\n  selector: 'ndt-toolbar-tool',\n  standalone: true,\n  imports: [\n    CdkConnectedOverlay,\n    OverlayModule,\n    DevToolbarWindowComponent,\n    DevToolbarToolButtonComponent,\n    DevToolbarIconComponent,\n  ],\n  template: `\n    <div #trigger=\"cdkOverlayOrigin\" class=\"ndt-toolbar-tool\" cdkOverlayOrigin>\n      <div\n        class=\"ndt-toolbar-tool__icon\"\n        (click)=\"onOpen()\"\n        (keydown.enter)=\"onOpen()\"\n        (keydown.space)=\"onOpen()\"\n        tabindex=\"0\"\n      >\n        <div #buttonContainer [attr.data-tooltip]=\"title()\">\n          @if (icon()) {\n          <ndt-tool-button [title]=\"title()\" [toolId]=\"options().id\">\n            <ndt-icon [name]=\"icon()\" />\n          </ndt-tool-button>\n          } @else {\n          <ng-content select=\"ndt-tool-button\"></ng-content>\n          }\n        </div>\n      </div>\n\n      @if (isActive()) {\n      <ng-template\n        #contentTemplate\n        [cdkConnectedOverlayOrigin]=\"trigger\"\n        [cdkConnectedOverlayOpen]=\"isActive()\"\n        [cdkConnectedOverlayPositions]=\"positions()\"\n        [cdkConnectedOverlayWidth]=\"width()\"\n        [cdkConnectedOverlayHeight]=\"height()\"\n        [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-tool-overlay']\"\n        cdkConnectedOverlay\n      >\n        <ndt-window [@slideAnimation] [config]=\"options()\" (closed)=\"onClose()\">\n          <ng-content />\n        </ndt-window>\n      </ng-template>\n      }\n    </div>\n  `,\n  styleUrl: './toolbar-tool.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('slideAnimation', [\n      transition(':enter', [\n        style({\n          transform: 'translateY(20px)',\n          opacity: 0,\n        }),\n        animate(\n          '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n          style({\n            transform: 'translateY(0)',\n            opacity: 1,\n          })\n        ),\n      ]),\n      transition(':leave', [\n        style({\n          transform: 'translateY(0)',\n          opacity: 1,\n        }),\n        animate(\n          '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n          style({\n            transform: 'translateY(20px)',\n            opacity: 0,\n          })\n        ),\n      ]),\n    ]),\n  ],\n})\nexport class DevToolbarToolComponent {\n  state = inject(DevToolbarStateService);\n  buttonContainer = viewChild.required<ElementRef>('buttonContainer');\n  buttonComponent = contentChild(DevToolbarToolButtonComponent);\n\n  options = input.required<DevToolbarWindowOptions>();\n  icon = input.required<IconName>();\n  title = input.required<string>();\n  isActive = computed(() => this.state.activeToolId() === this.options().id);\n  height = computed(() => {\n    switch (this.options().size) {\n      case 'small':\n        return 320;\n      case 'medium':\n        return 480;\n      case 'tall':\n        return 620;\n      case 'large':\n        return 620;\n      default:\n        return 480;\n    }\n  });\n\n  width = computed(() => {\n    switch (this.options().size) {\n      case 'small':\n        return 320;\n      case 'medium':\n        return 480;\n      case 'tall':\n        return 480;\n      case 'large':\n        return 620;\n      default:\n        return 400;\n    }\n  });\n  positions = computed(() => {\n    const triggerXPosition = this.getButtonContainerXPosition();\n    const windowCenter = window.innerWidth / 2;\n    const offsetX = windowCenter - triggerXPosition - 22;\n    return [\n      {\n        originX: 'center' as const,\n        originY: 'center' as const,\n        overlayX: 'center' as const,\n        overlayY: 'center' as const,\n        offsetY: -(Math.ceil(this.height() / 2) + 36),\n        offsetX,\n      },\n    ];\n  });\n\n  onOpen(): void {\n    this.state.setActiveTool(this.options().id);\n  }\n\n  onClose(): void {\n    this.state.setActiveTool(null);\n  }\n\n  getButtonContainerXPosition(): number {\n    const buttonContainerRect =\n      this.buttonContainer()?.nativeElement?.getBoundingClientRect();\n    return buttonContainerRect?.left ?? 0;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  input,\n  model,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'ndt-input',\n  standalone: true,\n  imports: [FormsModule],\n  template: `\n    <input\n      [attr.aria-label]=\"ariaLabel()\"\n      [type]=\"type()\"\n      [class]=\"inputClass()\"\n      [ngModel]=\"value()\"\n      [placeholder]=\"placeholder()\"\n      (ngModelChange)=\"value.set($event)\"\n    />\n  `,\n  styleUrls: ['./input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarInputComponent {\n  value = model.required<string>();\n\n  type = input<string>('text');\n  placeholder = input<string>('');\n  ariaLabel = input<string>('');\n  inputClass = input<string>('input');\n}\n","import { CdkMenuModule } from '@angular/cdk/menu';\nimport { ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n  model,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\nexport interface SelectOption {\n  value: string;\n  label: string;\n}\n\n@Component({\n  selector: 'ndt-select',\n  standalone: true,\n  imports: [CommonModule, FormsModule, OverlayModule, CdkMenuModule],\n  template: `\n    <div\n      class=\"ndt-select\"\n      [class.small]=\"size() === 'small'\"\n      [class.open]=\"isOpen()\"\n      [attr.aria-label]=\"ariaLabel()\"\n      [attr.aria-expanded]=\"isOpen()\"\n      [attr.aria-controls]=\"selectMenuId\"\n      [attr.data-theme]=\"theme()\"\n      cdkOverlayOrigin\n      #trigger=\"cdkOverlayOrigin\"\n      (click)=\"toggle()\"\n      (keydown.enter)=\"toggle()\"\n      (keydown.space)=\"toggle()\"\n      tabindex=\"0\"\n      role=\"combobox\"\n    >\n      <span class=\"select__value\">{{ selectedLabel() }}</span>\n      <span class=\"select__arrow\" aria-hidden=\"true\"></span>\n    </div>\n\n    <ng-template\n      cdkConnectedOverlay\n      [cdkConnectedOverlayOrigin]=\"trigger\"\n      [cdkConnectedOverlayOpen]=\"isOpen()\"\n      [cdkConnectedOverlayPositions]=\"positions\"\n      [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-select-overlay']\"\n      (overlayOutsideClick)=\"close()\"\n    >\n      <div\n        [id]=\"selectMenuId\"\n        class=\"ndt-select-menu\"\n        cdkMenu\n        role=\"listbox\"\n        [attr.data-theme]=\"theme()\"\n      >\n        @for (option of options(); track option.value) {\n        <button\n          class=\"select-menu-item\"\n          [class.selected]=\"option.value === value()\"\n          [attr.aria-selected]=\"option.value === value()\"\n          cdkMenuItem\n          type=\"button\"\n          (click)=\"selectOption(option)\"\n        >\n          {{ option.label }}\n        </button>\n        }\n      </div>\n    </ng-template>\n  `,\n  styleUrls: ['./select.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarSelectComponent {\n  readonly devToolbarStateService = inject(DevToolbarStateService);\n\n  value = model<string>();\n  options = input.required<SelectOption[]>();\n  ariaLabel = input<string>('');\n  label = input<string>('');\n  size = input<'small' | 'medium'>('medium');\n  readonly theme = computed(() => this.devToolbarStateService.theme());\n\n  protected readonly selectMenuId = `select-menu-${Math.random()\n    .toString(36)\n    .slice(2, 11)}`;\n  isOpen = signal(false);\n\n  selectedLabel = computed(() => {\n    const selected = this.options()?.find((opt) => opt.value === this.value());\n    return selected?.label ?? '';\n  });\n\n  positions: ConnectedPosition[] = [\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: 4,\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: -4,\n    },\n  ];\n\n  toggle() {\n    this.isOpen.update((v) => !v);\n  }\n\n  close() {\n    this.isOpen.set(false);\n  }\n\n  selectOption(option: SelectOption) {\n    this.value.set(option.value);\n    this.close();\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolsStorageService {\n  private readonly PREFIX = 'AngularDevTools.';\n  private readonly TOOLS_KEY = `${this.PREFIX}keys`;\n  private readonly SETTINGS_KEY = `${this.PREFIX}settings`;\n\n  public set<T>(key: string, value: T): void {\n    const toolKey = this.getToolKey(key);\n    this.addToolKey(toolKey);\n    localStorage.setItem(toolKey, JSON.stringify(value));\n  }\n\n  public get<T>(key: string): T | null {\n    const toolKey = this.getToolKey(key);\n    const item = localStorage.getItem(toolKey);\n    return item ? JSON.parse(item) : null;\n  }\n\n  public remove(key: string): void {\n    const toolKey = this.getToolKey(key);\n    localStorage.removeItem(toolKey);\n    this.removeToolKey(toolKey);\n  }\n\n  public getAllSettings(): Record<string, unknown> {\n    const settings: Record<string, unknown> = {};\n\n    const keys = this.getToolKeys();\n    keys.forEach((key) => {\n      const value = this.get(key);\n      if (value !== null) {\n        settings[key] = value;\n      }\n    });\n\n    return settings;\n  }\n\n  public setAllSettings(settings: Record<string, unknown>): void {\n    Object.entries(settings).forEach(([key, value]) => {\n      this.set(key, value);\n    });\n  }\n\n  public clearAllSettings(): void {\n    const keys = this.getToolKeys();\n    keys.forEach((key) => {\n      this.remove(key);\n    });\n  }\n\n  public getToolKeys(): string[] {\n    return JSON.parse(localStorage.getItem(this.TOOLS_KEY) ?? '[]');\n  }\n\n  private addToolKey(key: string) {\n    const currentKeys = this.getToolKeys();\n    if (currentKeys.includes(key)) {\n      return;\n    }\n    currentKeys.push(key);\n    localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n  }\n\n  private removeToolKey(key: string): void {\n    const currentKeys = this.getToolKeys();\n    const index = currentKeys.indexOf(key);\n    if (index !== -1) {\n      currentKeys.splice(index, 1);\n    }\n    localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n  }\n\n  private getToolKey(key: string): string {\n    return key.includes(this.PREFIX) ? key : this.PREFIX + key;\n  }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Internal service for managing app features state and forced overrides.\n *\n * This service handles:\n * - Feature configuration storage\n * - Forced feature state management\n * - localStorage persistence\n * - State validation and cleanup\n *\n * @internal This service is for internal toolbar use only. Consumers should use DevToolbarAppFeaturesService.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalAppFeaturesService {\n  private readonly STORAGE_KEY = 'app-features';\n  private storageService = inject(DevToolsStorageService);\n  private stateService = inject(DevToolbarStateService);\n\n  private appFeaturesSubject = new BehaviorSubject<DevToolbarAppFeature[]>([]);\n  private forcedFeaturesSubject = new BehaviorSubject<ForcedAppFeaturesState>({\n    enabled: [],\n    disabled: [],\n  });\n\n  private readonly forcedFeatures$ = this.forcedFeaturesSubject.asObservable();\n\n  /**\n   * Observable stream of all features with merged forced state\n   */\n  public features$: Observable<DevToolbarAppFeature[]> = combineLatest([\n    this.appFeaturesSubject.asObservable(),\n    this.forcedFeatures$,\n  ]).pipe(\n    map(([appFeatures, forcedState]) => this.mergeForcedState(appFeatures, forcedState))\n  );\n\n  /**\n   * Signal containing current features with merged forced state\n   */\n  public features = toSignal(this.features$, { initialValue: [] });\n\n  constructor() {\n    this.loadForcedFeatures();\n  }\n\n  /**\n   * Set available app features for the application.\n   * Validates features, trims whitespace, and triggers validation of forced state.\n   *\n   * @param features - Array of app features to configure\n   * @throws Error if duplicate feature IDs or empty IDs are detected\n   */\n  setAppFeatures(features: DevToolbarAppFeature[]): void {\n    // Validate for empty IDs\n    const emptyIdFeature = features.find((f) => !f.id || f.id.trim() === '');\n    if (emptyIdFeature) {\n      throw new Error('Feature ID cannot be empty');\n    }\n\n    // Validate for duplicate IDs\n    const ids = features.map((f) => f.id);\n    const duplicateIds = ids.filter((id, index) => ids.indexOf(id) !== index);\n    if (duplicateIds.length > 0) {\n      throw new Error(`Duplicate feature IDs detected: ${duplicateIds.join(', ')}`);\n    }\n\n    // Trim whitespace from names and warn about empty names\n    const processedFeatures = features.map((feature) => {\n      const trimmedName = feature.name.trim();\n      if (!trimmedName) {\n        console.warn(`Feature '${feature.id}' has empty name`);\n      }\n      return {\n        ...feature,\n        name: trimmedName || feature.name,\n      };\n    });\n\n    this.appFeaturesSubject.next(processedFeatures);\n    this.validateAndCleanForcedState();\n  }\n\n  /**\n   * Get observable stream of app features (natural state, no forced state merged)\n   */\n  getAppFeatures(): Observable<DevToolbarAppFeature[]> {\n    return this.appFeaturesSubject.asObservable();\n  }\n\n  /**\n   * Get observable stream of features that have forced overrides\n   */\n  getForcedFeatures(): Observable<DevToolbarAppFeature[]> {\n    return this.features$.pipe(\n      map((features) => {\n        // If toolbar is disabled, return empty array (no forced values)\n        if (!this.stateService.isEnabled()) {\n          return [];\n        }\n        return features.filter((feature) => feature.isForced);\n      })\n    );\n  }\n\n  /**\n   * Force a feature to enabled or disabled state.\n   * Persists the forced state to localStorage.\n   *\n   * @param featureId - ID of the feature to force\n   * @param isEnabled - Whether to force feature to enabled (true) or disabled (false)\n   */\n  setFeature(featureId: string, isEnabled: boolean): void {\n    const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n    // Remove feature from both arrays\n    const newEnabled = enabled.filter((id) => id !== featureId);\n    const newDisabled = disabled.filter((id) => id !== featureId);\n\n    // Add to appropriate array\n    if (isEnabled) {\n      newEnabled.push(featureId);\n    } else {\n      newDisabled.push(featureId);\n    }\n\n    const newState = { enabled: newEnabled, disabled: newDisabled };\n    this.forcedFeaturesSubject.next(newState);\n    this.saveForcedFeatures(newState);\n  }\n\n  /**\n   * Remove forced override for a feature, returning it to natural state.\n   * Persists the change to localStorage.\n   *\n   * @param featureId - ID of the feature to unforce\n   */\n  removeFeatureOverride(featureId: string): void {\n    const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n    const newState = {\n      enabled: enabled.filter((id) => id !== featureId),\n      disabled: disabled.filter((id) => id !== featureId),\n    };\n\n    this.forcedFeaturesSubject.next(newState);\n    this.saveForcedFeatures(newState);\n  }\n\n  /**\n   * Apply a preset forced state (for preset integration).\n   * Validates and cleans invalid feature IDs before applying.\n   *\n   * @param state - Forced features state from preset\n   */\n  applyForcedState(state: ForcedAppFeaturesState): void {\n    const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n\n    // Validate and filter to only valid IDs\n    const validEnabled = state.enabled.filter((id) => configuredFeatureIds.includes(id));\n    const validDisabled = state.disabled.filter((id) => configuredFeatureIds.includes(id));\n\n    const invalidIds = [\n      ...state.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n      ...state.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n    ];\n\n    if (invalidIds.length > 0) {\n      console.warn(`Preset contains invalid feature IDs (ignored): ${invalidIds.join(', ')}`);\n    }\n\n    const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n    this.forcedFeaturesSubject.next(cleanedState);\n    this.saveForcedFeatures(cleanedState);\n  }\n\n  /**\n   * Get current forced state as a snapshot (defensive copy).\n   * Useful for preset exports and debugging.\n   *\n   * @returns Current forced features state\n   */\n  getCurrentForcedState(): ForcedAppFeaturesState {\n    const state = this.forcedFeaturesSubject.value;\n    return {\n      enabled: [...state.enabled],\n      disabled: [...state.disabled],\n    };\n  }\n\n  /**\n   * Merge natural app features with forced state.\n   *\n   * @param appFeatures - Natural feature configuration\n   * @param forcedState - Forced overrides from localStorage/toolbar\n   * @returns Features with merged forced state\n   */\n  private mergeForcedState(\n    appFeatures: DevToolbarAppFeature[],\n    forcedState: ForcedAppFeaturesState\n  ): DevToolbarAppFeature[] {\n    // If toolbar is disabled, return app features without overrides\n    if (!this.stateService.isEnabled()) {\n      return appFeatures;\n    }\n\n    return appFeatures.map((feature) => {\n      const isInEnabled = forcedState.enabled.includes(feature.id);\n      const isInDisabled = forcedState.disabled.includes(feature.id);\n      const isForced = isInEnabled || isInDisabled;\n\n      return {\n        ...feature,\n        isEnabled: isInEnabled ? true : isInDisabled ? false : feature.isEnabled,\n        isForced,\n        originalValue: isForced ? feature.isEnabled : undefined,\n      };\n    });\n  }\n\n  /**\n   * Load forced features state from localStorage on initialization.\n   * Handles missing or corrupted data gracefully.\n   */\n  private loadForcedFeatures(): void {\n    try {\n      const savedState = this.storageService.get<ForcedAppFeaturesState>(this.STORAGE_KEY);\n\n      if (savedState) {\n        this.forcedFeaturesSubject.next(savedState);\n      }\n    } catch (error) {\n      console.error('Failed to load forced app features from localStorage:', error);\n      // Use default empty state on error\n    }\n  }\n\n  /**\n   * Persist forced features state to localStorage.\n   * Handles quota exceeded errors gracefully.\n   *\n   * @param state - Forced state to persist\n   */\n  private saveForcedFeatures(state: ForcedAppFeaturesState): void {\n    try {\n      this.storageService.set(this.STORAGE_KEY, state);\n    } catch (error) {\n      console.error('Failed to persist app features to localStorage:', error);\n      // Continue execution - state is still valid in memory for current session\n    }\n  }\n\n  /**\n   * Validate forced feature IDs against configured features and clean up invalid ones.\n   * Called after setAppFeatures() to ensure forced state references valid features.\n   */\n  private validateAndCleanForcedState(): void {\n    const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n    const currentForcedState = this.forcedFeaturesSubject.value;\n\n    const validEnabled = currentForcedState.enabled.filter((id) =>\n      configuredFeatureIds.includes(id)\n    );\n    const validDisabled = currentForcedState.disabled.filter((id) =>\n      configuredFeatureIds.includes(id)\n    );\n\n    const removedIds = [\n      ...currentForcedState.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n      ...currentForcedState.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n    ];\n\n    if (removedIds.length > 0) {\n      console.warn(`Removed invalid feature IDs from forced state: ${removedIds.join(', ')}`);\n\n      const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n      this.forcedFeaturesSubject.next(cleanedState);\n      this.saveForcedFeatures(cleanedState);\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { AppFeatureFilter, DevToolbarAppFeature } from './app-features.models';\n\n/**\n * Component for managing app features in the dev toolbar.\n *\n * Provides UI for:\n * - Searching features by name and description\n * - Filtering features by state (all/forced/enabled/disabled)\n * - Forcing features to enabled/disabled state via 3-state dropdown\n * - Viewing feature descriptions and current state\n *\n * @example\n * ```html\n * <ndt-app-features-tool />\n * ```\n */\n@Component({\n  selector: 'ndt-app-features-tool',\n  standalone: true,\n  imports: [\n    FormsModule,\n    DevToolbarToolComponent,\n    DevToolbarInputComponent,\n    DevToolbarSelectComponent,\n    DevToolbarIconComponent,\n    DevToolbarListComponent,\n    DevToolbarListItemComponent,\n  ],\n  template: `\n    <ndt-toolbar-tool\n      [options]=\"options\"\n      title=\"App Features\"\n      icon=\"puzzle\"\n    >\n      <div class=\"container\">\n        <div class=\"tool-header\">\n          <ndt-input\n            [value]=\"searchQuery()\"\n            (valueChange)=\"onSearchChange($event)\"\n            placeholder=\"Search features...\"\n          />\n          <div class=\"filter-wrapper\">\n            <ndt-icon name=\"filter\" class=\"filter-icon\" />\n            <ndt-select\n              [value]=\"activeFilter()\"\n              [options]=\"filterOptions\"\n              [size]=\"'medium'\"\n              (valueChange)=\"onFilterChange($event)\"\n            />\n          </div>\n        </div>\n\n        <ndt-list\n          [hasItems]=\"!hasNoFeatures()\"\n          [hasResults]=\"!hasNoFilteredFeatures()\"\n          emptyMessage=\"No app features found\"\n          [emptyHint]=\"'Call setAvailableOptions() to configure features'\"\n          noResultsMessage=\"No features match your filter\"\n        >\n          @for (feature of filteredFeatures(); track feature.id) {\n            <ndt-list-item\n              [title]=\"feature.name\"\n              [description]=\"feature.description\"\n              [isForced]=\"feature.isForced\"\n              [currentValue]=\"feature.isEnabled\"\n              [originalValue]=\"feature.originalValue\"\n            >\n              <ndt-select\n                [value]=\"getFeatureValue(feature)\"\n                [options]=\"featureValueOptions\"\n                [ariaLabel]=\"'Set value for ' + feature.name\"\n                (valueChange)=\"onFeatureChange(feature.id, $event ?? '')\"\n                size=\"small\"\n              />\n            </ndt-list-item>\n          }\n        </ndt-list>\n      </div>\n    </ndt-toolbar-tool>\n  `,\n  styles: [\n    `\n      .container {\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n        padding: 0;\n      }\n\n      .tool-header {\n        position: relative;\n        flex-shrink: 0;\n        display: flex;\n        gap: var(--ndt-spacing-sm);\n        margin-bottom: var(--ndt-spacing-sm);\n\n        ndt-input {\n          flex: 1;\n        }\n\n        .filter-wrapper {\n          flex: 0 0 auto;\n          display: flex;\n          align-items: center;\n          gap: var(--ndt-spacing-md);\n\n          .filter-icon {\n            width: 18px;\n            height: 18px;\n            flex-shrink: 0;\n            opacity: 0.6;\n          }\n\n          ndt-select {\n            flex: 0 0 auto;\n            min-width: 180px;\n          }\n        }\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarAppFeaturesToolComponent {\n  // Injects\n  private readonly appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n  // Signals\n  protected readonly activeFilter = signal<AppFeatureFilter>('all');\n  protected readonly searchQuery = signal<string>('');\n\n  protected readonly features = this.appFeaturesService.features;\n  protected readonly hasNoFeatures = computed(() => this.features().length === 0);\n  protected readonly filteredFeatures = computed(() => {\n    const filtered = this.features().filter((feature) => {\n      const searchTerm = this.searchQuery().toLowerCase();\n      const featureName = feature.name.toLowerCase();\n      const featureDescription = feature.description?.toLowerCase() ?? '';\n\n      const matchesSearch =\n        !this.searchQuery() ||\n        featureName.includes(searchTerm) ||\n        featureDescription.includes(searchTerm);\n\n      const matchesFilter =\n        this.activeFilter() === 'all' ||\n        (this.activeFilter() === 'forced' && feature.isForced) ||\n        (this.activeFilter() === 'enabled' && feature.isEnabled) ||\n        (this.activeFilter() === 'disabled' && !feature.isEnabled);\n\n      return matchesSearch && matchesFilter;\n    });\n\n    // Sort alphabetically by name\n    return filtered.sort((a, b) => a.name.localeCompare(b.name));\n  });\n  protected readonly hasNoFilteredFeatures = computed(\n    () => this.filteredFeatures().length === 0\n  );\n\n  // Other properties\n  protected readonly options = {\n    title: 'App Features',\n    description: 'Override product features to test different tiers and configurations',\n    isClosable: true,\n    size: 'tall',\n    id: 'ndt-app-features',\n  } as DevToolbarWindowOptions;\n\n  protected readonly filterOptions = [\n    { value: 'all', label: 'All Features' },\n    { value: 'forced', label: 'Forced' },\n    { value: 'enabled', label: 'Enabled' },\n    { value: 'disabled', label: 'Disabled' },\n  ];\n\n  protected readonly featureValueOptions = [\n    { value: 'not-forced', label: 'Not Forced' },\n    { value: 'off', label: 'Disabled' },\n    { value: 'on', label: 'Enabled' },\n  ];\n\n  // Public methods\n  /**\n   * Handle filter dropdown change.\n   * Updates the active filter to show all/forced/enabled/disabled features.\n   */\n  onFilterChange(value: string | undefined): void {\n    const filter = this.filterOptions.find((f) => f.value === value);\n    if (filter) {\n      this.activeFilter.set(filter.value as AppFeatureFilter);\n    }\n  }\n\n  /**\n   * Handle feature value change from 3-state dropdown.\n   * - 'not-forced': Remove forced override\n   * - 'on': Force feature to enabled\n   * - 'off': Force feature to disabled\n   */\n  onFeatureChange(featureId: string, value: string): void {\n    switch (value) {\n      case 'not-forced':\n        this.appFeaturesService.removeFeatureOverride(featureId);\n        break;\n      case 'on':\n        this.appFeaturesService.setFeature(featureId, true);\n        break;\n      case 'off':\n        this.appFeaturesService.setFeature(featureId, false);\n        break;\n    }\n  }\n\n  /**\n   * Handle search input change.\n   * Updates the search query to filter features by name/description.\n   */\n  onSearchChange(query: string): void {\n    this.searchQuery.set(query);\n  }\n\n  // Protected methods\n  /**\n   * Get the dropdown value for a feature's current state.\n   * - Returns empty string if not forced (natural state)\n   * - Returns 'on' if forced to enabled\n   * - Returns 'off' if forced to disabled\n   */\n  protected getFeatureValue(feature: DevToolbarAppFeature): string {\n    if (!feature.isForced) return '';\n    return feature.isEnabled ? 'on' : 'off';\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\ninterface ForcedFlagsState {\n  enabled: string[];\n  disabled: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalFeatureFlagService {\n  private readonly STORAGE_KEY = 'feature-flags';\n  private storageService = inject(DevToolsStorageService);\n  private stateService = inject(DevToolbarStateService);\n\n  private appFlags$ = new BehaviorSubject<DevToolbarFlag[]>([]);\n  private forcedFlagsSubject = new BehaviorSubject<ForcedFlagsState>({\n    enabled: [],\n    disabled: [],\n  });\n\n  private readonly forcedFlags$ = this.forcedFlagsSubject.asObservable();\n\n  public flags$: Observable<DevToolbarFlag[]> = combineLatest([\n    this.appFlags$,\n    this.forcedFlags$,\n  ]).pipe(\n    map(([appFlags, { enabled, disabled }]) => {\n      // If toolbar is disabled, return app flags without overrides\n      if (!this.stateService.isEnabled()) {\n        return appFlags;\n      }\n\n      return appFlags.map((flag) => {\n        const isForced = enabled.includes(flag.id) || disabled.includes(flag.id);\n        return {\n          ...flag,\n          isForced,\n          isEnabled: enabled.includes(flag.id)\n            ? true\n            : disabled.includes(flag.id)\n            ? false\n            : flag.isEnabled,\n          originalValue: isForced ? flag.isEnabled : undefined,\n        };\n      });\n    })\n  );\n\n  public flags = toSignal(this.flags$, { initialValue: [] });\n\n  constructor() {\n    this.loadForcedFlags();\n  }\n\n  setAppFlags(flags: DevToolbarFlag[]): void {\n    this.appFlags$.next(flags);\n  }\n\n  getAppFlags(): Observable<DevToolbarFlag[]> {\n    return this.appFlags$.asObservable();\n  }\n\n  getForcedFlags(): Observable<DevToolbarFlag[]> {\n    return this.flags$.pipe(\n      map((flags) => {\n        // If toolbar is disabled, return empty array (no forced values)\n        if (!this.stateService.isEnabled()) {\n          return [];\n        }\n        return flags.filter((flag) => flag.isForced);\n      })\n    );\n  }\n\n  setFlag(flagId: string, isEnabled: boolean): void {\n    const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n    const newEnabled = enabled.filter((id) => id !== flagId);\n    const newDisabled = disabled.filter((id) => id !== flagId);\n\n    if (isEnabled) {\n      newEnabled.push(flagId);\n    } else {\n      newDisabled.push(flagId);\n    }\n\n    const newState = { enabled: newEnabled, disabled: newDisabled };\n    this.forcedFlagsSubject.next(newState);\n    this.storageService.set(this.STORAGE_KEY, newState);\n  }\n\n  removeFlagOverride(flagId: string): void {\n    const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n    const newState = {\n      enabled: enabled.filter((id) => id !== flagId),\n      disabled: disabled.filter((id) => id !== flagId),\n    };\n\n    this.forcedFlagsSubject.next(newState);\n    this.storageService.set(this.STORAGE_KEY, newState);\n  }\n\n  private loadForcedFlags(): void {\n    const savedFlags = this.storageService.get<ForcedFlagsState>(\n      this.STORAGE_KEY\n    );\n\n    if (savedFlags) {\n      this.forcedFlagsSubject.next(savedFlags);\n    }\n  }\n\n  /**\n   * Apply feature flags from a preset (used by Presets Tool)\n   * This method directly sets the forced flags state without user interaction\n   */\n  applyPresetFlags(presetState: ForcedFlagsState): void {\n    this.forcedFlagsSubject.next(presetState);\n    this.storageService.set(this.STORAGE_KEY, presetState);\n  }\n\n  /**\n   * Get current forced state for saving to preset\n   * Returns the raw state of enabled and disabled flag IDs\n   */\n  getCurrentForcedState(): ForcedFlagsState {\n    return this.forcedFlagsSubject.value;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag, FeatureFlagFilter } from './feature-flags.models';\n@Component({\n  selector: 'ndt-feature-flags-tool',\n  standalone: true,\n  imports: [\n    FormsModule,\n    DevToolbarToolComponent,\n    DevToolbarInputComponent,\n    DevToolbarSelectComponent,\n    DevToolbarIconComponent,\n    DevToolbarListComponent,\n    DevToolbarListItemComponent,\n  ],\n  template: `\n    <ndt-toolbar-tool\n      [options]=\"options\"\n      title=\"Feature Flags\"\n      icon=\"toggle-left\"\n    >\n      <div class=\"container\">\n        <div class=\"tool-header\">\n          <ndt-input\n            [value]=\"searchQuery()\"\n            (valueChange)=\"onSearchChange($event)\"\n            placeholder=\"Search...\"\n          />\n          <div class=\"filter-wrapper\">\n            <ndt-icon name=\"filter\" class=\"filter-icon\" />\n            <ndt-select\n              [value]=\"activeFilter()\"\n              [options]=\"filterOptions\"\n              [size]=\"'medium'\"\n              (valueChange)=\"onFilterChange($event)\"\n            />\n          </div>\n        </div>\n\n        <ndt-list\n          [hasItems]=\"!hasNoFlags()\"\n          [hasResults]=\"!hasNoFilteredFlags()\"\n          emptyMessage=\"No flags found\"\n          noResultsMessage=\"No flags found matching your filter\"\n        >\n          @for (flag of filteredFlags(); track flag.id) {\n            <ndt-list-item\n              [title]=\"flag.name\"\n              [description]=\"flag.description\"\n              [isForced]=\"flag.isForced\"\n              [currentValue]=\"flag.isEnabled\"\n              [originalValue]=\"flag.originalValue\"\n            >\n              <ndt-select\n                [value]=\"getFlagValue(flag)\"\n                [options]=\"flagValueOptions\"\n                [ariaLabel]=\"'Set value for ' + flag.name\"\n                (valueChange)=\"onFlagChange(flag.id, $event ?? '')\"\n                size=\"small\"\n              />\n            </ndt-list-item>\n          }\n        </ndt-list>\n      </div>\n    </ndt-toolbar-tool>\n  `,\n  styles: [\n    `\n      .container {\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n        padding: 0;\n      }\n\n      .tool-header {\n        position: relative;\n        flex-shrink: 0;\n        display: flex;\n        gap: var(--ndt-spacing-sm);\n        margin-bottom: var(--ndt-spacing-sm);\n\n        ndt-input {\n          flex: 1;\n        }\n\n        .filter-wrapper {\n          flex: 0 0 auto;\n          display: flex;\n          align-items: center;\n          gap: var(--ndt-spacing-md);\n\n          .filter-icon {\n            width: 18px;\n            height: 18px;\n            flex-shrink: 0;\n            opacity: 0.6;\n          }\n\n          ndt-select {\n            flex: 0 0 auto;\n            min-width: 180px;\n          }\n        }\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarFeatureFlagsToolComponent {\n  // Injects\n  private readonly featureFlags = inject(DevToolbarInternalFeatureFlagService);\n\n  // Signals\n  protected readonly activeFilter = signal<FeatureFlagFilter>('all');\n  protected readonly searchQuery = signal<string>('');\n\n  protected readonly flags = this.featureFlags.flags;\n  protected readonly hasNoFlags = computed(() => this.flags().length === 0);\n  protected readonly filteredFlags = computed(() => {\n    const filtered = this.flags().filter((flag) => {\n      const searchTerm = this.searchQuery().toLowerCase();\n      const flagName = flag.name.toLowerCase();\n      const flagDescription = flag.description?.toLowerCase() ?? '';\n\n      const matchesSearch =\n        !this.searchQuery() ||\n        flagName.toLowerCase().includes(searchTerm.toLowerCase()) ||\n        flagDescription.toLowerCase().includes(searchTerm.toLowerCase());\n\n      const matchesFilter =\n        this.activeFilter() === 'all' ||\n        (this.activeFilter() === 'forced' && flag.isForced) ||\n        (this.activeFilter() === 'enabled' && flag.isEnabled) ||\n        (this.activeFilter() === 'disabled' && !flag.isEnabled);\n\n      return matchesSearch && matchesFilter;\n    });\n\n    // Sort alphabetically by name\n    return filtered.sort((a, b) => a.name.localeCompare(b.name));\n  });\n  protected readonly hasNoFilteredFlags = computed(\n    () => this.filteredFlags().length === 0\n  );\n\n  // Other properties\n  protected readonly options = {\n    title: 'Feature Flags',\n    description: 'Manage the feature flags for your current session',\n    isClosable: true,\n    size: 'tall',\n    id: 'ndt-feature-flags',\n    isBeta: true,\n  } as DevToolbarWindowOptions;\n\n  protected readonly filterOptions = [\n    { value: 'all', label: 'All Flags' },\n    { value: 'forced', label: 'Forced' },\n    { value: 'enabled', label: 'Enabled' },\n    { value: 'disabled', label: 'Disabled' },\n  ];\n\n  protected readonly flagValueOptions = [\n    { value: 'not-forced', label: 'Not Forced' },\n    { value: 'off', label: 'Forced Off' },\n    { value: 'on', label: 'Forced On' },\n  ];\n\n  // Public methods\n  onFilterChange(value: string | undefined): void {\n    const filter = this.filterOptions.find((f) => f.value === value);\n    if (filter) {\n      this.activeFilter.set(filter.value as FeatureFlagFilter);\n    }\n  }\n\n  onFlagChange(flagId: string, value: string): void {\n    switch (value) {\n      case 'not-forced':\n        this.featureFlags.removeFlagOverride(flagId);\n        break;\n      case 'on':\n        this.featureFlags.setFlag(flagId, true);\n        break;\n      case 'off':\n        this.featureFlags.setFlag(flagId, false);\n        break;\n    }\n  }\n\n  onSearchChange(query: string): void {\n    this.searchQuery.set(query);\n  }\n\n  // Protected methods\n  protected getFlagValue(flag: DevToolbarFlag): string {\n    if (!flag.isForced) return '';\n    return flag.isEnabled ? 'on' : 'off';\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n  selector: 'ndt-button',\n  standalone: true,\n  imports: [DevToolbarIconComponent],\n  template: `\n    <button\n      class=\"button\"\n      [attr.aria-label]=\"ariaLabel()\"\n      [type]=\"type()\"\n      [class.button--active]=\"isActive()\"\n      [class.button--icon]=\"variant() === 'icon'\"\n    >\n      @if (icon()) {\n        <ndt-icon [name]=\"icon() || 'star'\" />\n      }\n      @if (label()) {\n        <span class=\"button__label\">{{ label() }}</span>\n      }\n      <ng-content />\n    </button>\n  `,\n  styleUrls: ['./button.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarButtonComponent {\n  readonly type = input<'button' | 'submit' | 'reset'>('button');\n  readonly variant = input<'default' | 'icon'>('default');\n  readonly icon = input<IconName>();\n  readonly label = input<string>();\n  readonly ariaLabel = input<string>();\n  readonly isActive = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\n\n@Component({\n  selector: 'ndt-card',\n  standalone: true,\n  template: `\n    <div\n      class=\"card\"\n      role=\"button\"\n      tabindex=\"0\"\n      (click)=\"onClick()\"\n      (keydown.enter)=\"onClick()\"\n      (keydown.space)=\"onClick()\"\n      [class.card--hover]=\"isHovered()\"\n      (mouseenter)=\"isHovered.set(true)\"\n      (mouseleave)=\"isHovered.set(false)\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  styleUrls: ['./card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarCardComponent {\n  readonly click = signal<void>(undefined);\n  protected readonly isHovered = signal(false);\n\n  onClick(): void {\n    this.click.set();\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { DevToolbarCardComponent } from '../card/card.component';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n  selector: 'ndt-clickable-card',\n  standalone: true,\n  imports: [DevToolbarCardComponent, DevToolbarIconComponent],\n  template: `\n    <ndt-card (clicked)=\"onClick()\">\n      <div class=\"clickable-card\">\n        <div class=\"clickable-card__icon\">\n          <ndt-icon [name]=\"icon()\" />\n        </div>\n        <div class=\"clickable-card__content\">\n          <div class=\"clickable-card__title\">{{ title() }}</div>\n          <div class=\"clickable-card__subtitle\">{{ subtitle() }}</div>\n        </div>\n      </div>\n    </ndt-card>\n  `,\n  styleUrls: ['./clickable-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarClickableCardComponent {\n  readonly icon = input.required<IconName>();\n  readonly title = input.required<string>();\n  readonly subtitle = input.required<string>();\n  readonly click = signal<void>(undefined);\n\n  onClick(): void {\n    this.click.set();\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n  selector: 'ndt-link-button',\n  standalone: true,\n  imports: [DevToolbarIconComponent],\n  template: `\n    <a\n      [href]=\"url()\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      class=\"link-button\"\n    >\n      <div class=\"link-button__icon\">\n        <ndt-icon [name]=\"icon()\" />\n      </div>\n      <span class=\"link-button__text\">\n        <ng-content></ng-content>\n      </span>\n    </a>\n  `,\n  styleUrls: ['./link-button.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarLinkButtonComponent {\n  readonly url = input.required<string>();\n  readonly icon = input.required<IconName>();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Settings } from './settings.models';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n  private readonly STORAGE_KEY = 'settings';\n  private readonly storageService = inject(DevToolsStorageService);\n\n  public getSettings(): Settings {\n    return (\n      this.storageService.get<Settings>(this.STORAGE_KEY) || {\n        isDarkMode: false,\n      }\n    );\n  }\n\n  public setSettings(settings: Settings): void {\n    this.storageService.set(this.STORAGE_KEY, settings);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarClickableCardComponent } from '../../components/clickable-card/clickable-card.component';\nimport { DevToolbarLinkButtonComponent } from '../../components/link-button/link-button.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { SettingsService } from './settings.service';\n\ntype ThemeType = 'light' | 'dark';\n\n@Component({\n  selector: 'ndt-home-tool',\n  standalone: true,\n  imports: [\n    DevToolbarToolComponent,\n    FormsModule,\n    DevToolbarButtonComponent,\n    DevToolbarClickableCardComponent,\n    DevToolbarLinkButtonComponent,\n  ],\n  template: `\n    <ndt-toolbar-tool [options]=\"options\" title=\"Home\" icon=\"angular\">\n      <section class=\"settings\">\n        <div class=\"settings-container\">\n          <div class=\"instruction\">\n            <div class=\"instruction__label\">\n              <span class=\"instruction__label-text\">Reset Settings</span>\n              <span class=\"instruction__label-description\">\n                Reset all settings to their default values\n              </span>\n            </div>\n            <div class=\"instruction__control\">\n              <div class=\"instruction__control-button\">\n                <ndt-button\n                  variant=\"icon\"\n                  icon=\"trash\"\n                  ariaLabel=\"Reset all settings\"\n                  (click)=\"onResetSettings()\"\n                />\n              </div>\n            </div>\n          </div>\n          <div class=\"settings-actions\">\n            <ndt-clickable-card\n              icon=\"export\"\n              title=\"Export Settings\"\n              subtitle=\"Export the current settings to share with other devs or use in your tests\"\n              (click)=\"onExportSettings()\"\n            />\n            <ndt-clickable-card\n              icon=\"import\"\n              title=\"Import Settings\"\n              subtitle=\"Import settings to reproduce a scenario\"\n              (click)=\"onImportSettings()\"\n            />\n          </div>\n        </div>\n\n        <div class=\"footer-links\">\n          @for (link of links; track link.url) {\n          <ndt-link-button [icon]=\"link.icon\" [url]=\"link.url\">\n            {{ link.label }}\n          </ndt-link-button>\n          }\n        </div>\n      </section>\n    </ndt-toolbar-tool>\n  `,\n  styleUrls: ['./home-tool.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarHomeToolComponent {\n  protected readonly state = inject(DevToolbarStateService);\n  private readonly settingsService = inject(SettingsService);\n  private readonly storageService = inject(DevToolsStorageService);\n\n  readonly badge = input<string | number>();\n  readonly title = `Angular Dev Toolbar`;\n  readonly options: DevToolbarWindowOptions = {\n    title: this.title,\n    isClosable: true,\n    id: 'ndt-home',\n    size: 'medium',\n    description: '',\n    isBeta: true,\n  };\n\n  readonly links = [\n    {\n      icon: 'bug',\n      url: 'https://github.com/alfredoperez/ngx-dev-toolbar/issues',\n      label: 'Bug report',\n    },\n    {\n      icon: 'lightbulb',\n      url: 'https://github.com/alfredoperez/ngx-dev-toolbar/discussions',\n      label: 'Suggestions',\n    },\n    {\n      icon: 'docs',\n      url: 'https://alfredoperez.github.io/ngx-dev-toolbar/',\n      label: 'Docs',\n    },\n    {\n      icon: 'star',\n      url: 'https://github.com/alfredoperez/ngx-dev-toolbar',\n      label: 'Star on GitHub',\n    },\n    {\n      icon: 'discord',\n      url: 'https://discord.com/invite/angular',\n      label: 'Community',\n    },\n  ] as const;\n\n  onExportSettings(): void {\n    const settings = this.storageService.getAllSettings();\n    const blob = new Blob([JSON.stringify(settings, null, 2)], {\n      type: 'application/json',\n    });\n    const url = URL.createObjectURL(blob);\n    const link = document.createElement('a');\n    const timestamp = new Date().toISOString().split('T')[0];\n    link.href = url;\n    link.download = `ngx-dev-toolbar-settings-${timestamp}.json`;\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n    URL.revokeObjectURL(url);\n  }\n\n  onImportSettings(): void {\n    const input = document.createElement('input');\n    input.type = 'file';\n    input.accept = 'application/json';\n    input.onchange = (event) => {\n      const file = (event.target as HTMLInputElement).files?.[0];\n      if (file) {\n        const reader = new FileReader();\n        reader.onload = (e) => {\n          try {\n            const settings = JSON.parse(e.target?.result as string);\n            this.storageService.setAllSettings(settings);\n            window.location.reload();\n          } catch (error) {\n            console.error('Error importing settings:', error);\n          }\n        };\n        reader.readAsText(file);\n      }\n    };\n    input.click();\n  }\n\n  onResetSettings(): void {\n    this.storageService.clearAllSettings();\n    window.location.reload();\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, firstValueFrom, map } from 'rxjs';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalLanguageService {\n  private readonly STORAGE_KEY = 'language';\n  private readonly storageService = inject(DevToolsStorageService);\n  private readonly stateService = inject(DevToolbarStateService);\n\n  private languages$ = new BehaviorSubject<Language[]>([]);\n  private forcedLanguage$ = new BehaviorSubject<Language | null>(null);\n\n  public languages = toSignal(this.languages$, { initialValue: [] });\n\n  constructor() {\n    this.loadForcedLanguage();\n  }\n\n  setAppLanguages(languages: Language[]): void {\n    this.languages$.next(languages);\n  }\n\n  getAppLanguages(): Observable<Language[]> {\n    return this.languages$.asObservable();\n  }\n\n  setForcedLanguage(language: Language): void {\n    this.forcedLanguage$.next(language);\n    this.storageService.set(this.STORAGE_KEY, language);\n  }\n\n  getForcedLanguage(): Observable<Language[]> {\n    return this.forcedLanguage$.pipe(\n      map((language) => {\n        // If toolbar is disabled, return empty array (no forced values)\n        if (!this.stateService.isEnabled()) {\n          return [];\n        }\n        return language ? [language] : [];\n      })\n    );\n  }\n\n  removeForcedLanguage(): void {\n    this.forcedLanguage$.next(null);\n    this.storageService.remove(this.STORAGE_KEY);\n  }\n\n  private loadForcedLanguage(): void {\n    const savedLanguage = this.storageService.get<Language>(this.STORAGE_KEY);\n    if (savedLanguage) {\n      this.forcedLanguage$.next(savedLanguage);\n    }\n  }\n\n  /**\n   * Apply language from a preset (used by Presets Tool)\n   * Accepts a language ID and finds the corresponding Language object from available languages\n   */\n  async applyPresetLanguage(languageId: string | null): Promise<void> {\n    if (languageId === null) {\n      this.removeForcedLanguage();\n      return;\n    }\n\n    // Get available languages and find matching one\n    const languages = await firstValueFrom(this.languages$);\n    const language = languages.find((lang) => lang.id === languageId);\n\n    if (language) {\n      this.setForcedLanguage(language);\n    } else {\n      console.warn(\n        `Language ${languageId} not found in available languages. Skipping.`\n      );\n    }\n  }\n\n  /**\n   * Get current forced language ID for saving to preset\n   * Returns the language ID or null if no language is forced\n   */\n  getCurrentForcedLanguage(): string | null {\n    return this.forcedLanguage$.value?.id ?? null;\n  }\n}\n","import { Component, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { firstValueFrom, map } from 'rxjs';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Component({\n  selector: 'ndt-language-tool',\n  standalone: true,\n  imports: [DevToolbarToolComponent, DevToolbarSelectComponent],\n  styleUrls: ['./language-tool.component.scss'],\n  template: `\n    <ndt-toolbar-tool title=\"Languages\" icon=\"translate\" [options]=\"options\">\n      <div class=\"language-select\">\n        <label for=\"language-select\">Language</label>\n        <ndt-select\n          id=\"language-select\"\n          [value]=\"activeLanguage()\"\n          [options]=\"languageOptions()\"\n          [size]=\"'medium'\"\n          (valueChange)=\"onLanguageChange($event ?? '')\"\n        />\n      </div>\n    </ndt-toolbar-tool>\n  `,\n})\nexport class DevToolbarLanguageToolComponent {\n  private readonly languageService = inject(DevToolbarInternalLanguageService);\n\n  protected readonly options = {\n    title: 'Languages',\n    description: 'Set the language for your current session',\n    size: 'small',\n    id: 'ndt-language',\n    isBeta: true,\n    isClosable: true,\n  } as DevToolbarWindowOptions;\n\n  activeLanguage = signal<string>('not-forced');\n\n  languageOptions = toSignal(\n    this.languageService.getAppLanguages().pipe(\n      map((languages) => [\n        { value: 'not-forced', label: 'Not Forced' },\n        ...languages.map(({ id: value, name: label }) => ({\n          value,\n          label,\n        })),\n      ])\n    ),\n    { initialValue: [] }\n  );\n\n  async onLanguageChange(language: string): Promise<void> {\n    if (language === 'not-forced' || !language) {\n      this.languageService.removeForcedLanguage();\n      return;\n    }\n\n    const languages = await firstValueFrom(\n      this.languageService.getAppLanguages()\n    );\n    const selectedLanguage = languages.find(({ id }) => id === language);\n    if (selectedLanguage) {\n      this.languageService.setForcedLanguage(selectedLanguage as Language);\n    }\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport {\n  DevToolbarPermission,\n  ForcedPermissionsState,\n} from './permissions.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPermissionsService {\n  private readonly STORAGE_KEY = 'permissions';\n  private storageService = inject(DevToolsStorageService);\n  private stateService = inject(DevToolbarStateService);\n\n  private appPermissions$ = new BehaviorSubject<DevToolbarPermission[]>([]);\n  private forcedStateSubject = new BehaviorSubject<ForcedPermissionsState>({\n    granted: [],\n    denied: [],\n  });\n\n  private readonly forcedState$ = this.forcedStateSubject.asObservable();\n\n  public permissions$: Observable<DevToolbarPermission[]> = combineLatest([\n    this.appPermissions$,\n    this.forcedState$,\n  ]).pipe(\n    map(([appPermissions, { granted, denied }]) => {\n      // If toolbar is disabled, return app permissions without overrides\n      if (!this.stateService.isEnabled()) {\n        return appPermissions;\n      }\n\n      return appPermissions.map((permission) => {\n        const isForced = granted.includes(permission.id) || denied.includes(permission.id);\n        return {\n          ...permission,\n          isForced,\n          isGranted: granted.includes(permission.id)\n            ? true\n            : denied.includes(permission.id)\n            ? false\n            : permission.isGranted,\n          originalValue: isForced ? permission.isGranted : undefined,\n        };\n      });\n    })\n  );\n\n  public permissions = toSignal(this.permissions$, { initialValue: [] });\n\n  constructor() {\n    this.loadForcedState();\n  }\n\n  setAppPermissions(permissions: DevToolbarPermission[]): void {\n    this.appPermissions$.next(permissions);\n    this.validateAndCleanForcedState(permissions);\n  }\n\n  setPermission(id: string, granted: boolean): void {\n    const { granted: grantedIds, denied: deniedIds } = this.forcedStateSubject.value;\n\n    const newGranted = grantedIds.filter((permId) => permId !== id);\n    const newDenied = deniedIds.filter((permId) => permId !== id);\n\n    if (granted) {\n      newGranted.push(id);\n    } else {\n      newDenied.push(id);\n    }\n\n    const newState = { granted: newGranted, denied: newDenied };\n    this.forcedStateSubject.next(newState);\n    this.storageService.set(this.STORAGE_KEY, newState);\n  }\n\n  removePermissionOverride(id: string): void {\n    const { granted, denied } = this.forcedStateSubject.value;\n\n    const newState = {\n      granted: granted.filter((permId) => permId !== id),\n      denied: denied.filter((permId) => permId !== id),\n    };\n\n    this.forcedStateSubject.next(newState);\n    this.storageService.set(this.STORAGE_KEY, newState);\n  }\n\n  getForcedPermissions(): Observable<DevToolbarPermission[]> {\n    return this.permissions$.pipe(\n      map((permissions) => {\n        // If toolbar is disabled, return empty array (no forced values)\n        if (!this.stateService.isEnabled()) {\n          return [];\n        }\n        return permissions.filter((permission) => permission.isForced);\n      })\n    );\n  }\n\n  /**\n   * Apply a preset permissions state, replacing the current forced state.\n   * Useful for automated testing or restoring saved configurations.\n   * @param state The preset forced permissions state to apply\n   */\n  applyPresetPermissions(state: ForcedPermissionsState): void {\n    this.forcedStateSubject.next(state);\n    this.storageService.set(this.STORAGE_KEY, state);\n  }\n\n  /**\n   * Get the current forced permissions state.\n   * Returns a deep copy to prevent external mutations.\n   * @returns Current forced permissions state\n   */\n  getCurrentForcedState(): ForcedPermissionsState {\n    const currentState = this.forcedStateSubject.value;\n    return {\n      granted: [...currentState.granted],\n      denied: [...currentState.denied],\n    };\n  }\n\n  private loadForcedState(): void {\n    try {\n      const savedState = this.storageService.get<ForcedPermissionsState>(\n        this.STORAGE_KEY\n      );\n\n      if (savedState && this.isValidForcedState(savedState)) {\n        this.forcedStateSubject.next(savedState);\n      }\n    } catch (error) {\n      console.warn('Error loading forced permissions state from localStorage:', error);\n    }\n  }\n\n  private isValidForcedState(state: unknown): state is ForcedPermissionsState {\n    if (!state || typeof state !== 'object') {\n      return false;\n    }\n\n    const candidate = state as Record<string, unknown>;\n    return (\n      Array.isArray(candidate['granted']) &&\n      Array.isArray(candidate['denied'])\n    );\n  }\n\n  private validateAndCleanForcedState(permissions: DevToolbarPermission[]): void {\n    const currentState = this.forcedStateSubject.value;\n    const validIds = new Set(permissions.map((p) => p.id));\n\n    const cleanedGranted = currentState.granted.filter((id) => validIds.has(id));\n    const cleanedDenied = currentState.denied.filter((id) => validIds.has(id));\n\n    const hasInvalidIds =\n      cleanedGranted.length !== currentState.granted.length ||\n      cleanedDenied.length !== currentState.denied.length;\n\n    if (hasInvalidIds) {\n      const cleanedState = {\n        granted: cleanedGranted,\n        denied: cleanedDenied,\n      };\n      this.forcedStateSubject.next(cleanedState);\n      this.storageService.set(this.STORAGE_KEY, cleanedState);\n\n      const invalidIds = [\n        ...currentState.granted.filter((id) => !validIds.has(id)),\n        ...currentState.denied.filter((id) => !validIds.has(id)),\n      ];\n      if (invalidIds.length > 0) {\n        console.warn(\n          'Removed invalid permission IDs from forced state:',\n          invalidIds\n        );\n      }\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport {\n  DevToolbarPermission,\n  PermissionFilter,\n} from './permissions.models';\n\n@Component({\n  selector: 'ndt-permissions-tool',\n  standalone: true,\n  imports: [\n    FormsModule,\n    DevToolbarToolComponent,\n    DevToolbarInputComponent,\n    DevToolbarSelectComponent,\n    DevToolbarIconComponent,\n    DevToolbarListComponent,\n    DevToolbarListItemComponent,\n  ],\n  template: `\n    <ndt-toolbar-tool\n      [options]=\"options\"\n      title=\"Permissions\"\n      icon=\"lock\"\n    >\n      <div class=\"container\">\n        <div class=\"tool-header\">\n          <ndt-input\n            [value]=\"searchQuery()\"\n            (valueChange)=\"onSearchChange($event)\"\n            placeholder=\"Search permissions...\"\n            [ariaLabel]=\"'Search permissions'\"\n          />\n          <div class=\"filter-wrapper\">\n            <ndt-icon name=\"filter\" class=\"filter-icon\" />\n            <ndt-select\n              [value]=\"activeFilter()\"\n              [options]=\"filterOptions\"\n              [size]=\"'medium'\"\n              (valueChange)=\"onFilterChange($event)\"\n              [ariaLabel]=\"'Filter permissions by state'\"\n            />\n          </div>\n        </div>\n\n        <ndt-list\n          [hasItems]=\"!hasNoPermissions()\"\n          [hasResults]=\"!hasNoFilteredPermissions()\"\n          emptyMessage=\"No permissions found\"\n          [emptyHint]=\"'Call setAvailableOptions() to configure permissions'\"\n          noResultsMessage=\"No permissions match your filter\"\n        >\n          @for (permission of filteredPermissions(); track permission.id) {\n            <ndt-list-item\n              [title]=\"permission.name\"\n              [description]=\"permission.description\"\n              [isForced]=\"permission.isForced\"\n              [currentValue]=\"permission.isGranted\"\n              [originalValue]=\"permission.originalValue\"\n            >\n              <ndt-select\n                [value]=\"getPermissionValue(permission)\"\n                [options]=\"permissionValueOptions\"\n                [ariaLabel]=\"'Override state for ' + permission.name\"\n                (valueChange)=\"onPermissionChange(permission.id, $event ?? '')\"\n                size=\"small\"\n              />\n            </ndt-list-item>\n          }\n        </ndt-list>\n      </div>\n    </ndt-toolbar-tool>\n  `,\n  styles: [\n    `\n      .container {\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n        padding: 0;\n      }\n\n      .tool-header {\n        position: relative;\n        flex-shrink: 0;\n        display: flex;\n        gap: var(--ndt-spacing-sm);\n        margin-bottom: var(--ndt-spacing-sm);\n\n        ndt-input {\n          flex: 1;\n        }\n\n        .filter-wrapper {\n          flex: 0 0 auto;\n          display: flex;\n          align-items: center;\n          gap: var(--ndt-spacing-md);\n\n          .filter-icon {\n            width: 18px;\n            height: 18px;\n            flex-shrink: 0;\n            opacity: 0.6;\n          }\n\n          ndt-select {\n            flex: 0 0 auto;\n            min-width: 180px;\n          }\n        }\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPermissionsToolComponent {\n  // Injects\n  private readonly permissionsService = inject(\n    DevToolbarInternalPermissionsService\n  );\n\n  // Signals\n  protected readonly activeFilter = signal<PermissionFilter>('all');\n  protected readonly searchQuery = signal<string>('');\n\n  protected readonly permissions = this.permissionsService.permissions;\n  protected readonly hasNoPermissions = computed(\n    () => this.permissions().length === 0\n  );\n  protected readonly filteredPermissions = computed(() => {\n    const filtered = this.permissions().filter((permission) => {\n      const searchTerm = this.searchQuery().toLowerCase();\n      const permissionName = permission.name.toLowerCase();\n      const permissionDescription = permission.description?.toLowerCase() ?? '';\n\n      const matchesSearch =\n        !this.searchQuery() ||\n        permissionName.includes(searchTerm) ||\n        permissionDescription.includes(searchTerm);\n\n      const matchesFilter =\n        this.activeFilter() === 'all' ||\n        (this.activeFilter() === 'forced' && permission.isForced) ||\n        (this.activeFilter() === 'granted' && permission.isGranted) ||\n        (this.activeFilter() === 'denied' && !permission.isGranted);\n\n      return matchesSearch && matchesFilter;\n    });\n\n    // Sort alphabetically by name\n    return filtered.sort((a, b) => a.name.localeCompare(b.name));\n  });\n  protected readonly hasNoFilteredPermissions = computed(\n    () => this.filteredPermissions().length === 0\n  );\n\n  // Other properties\n  protected readonly options = {\n    title: 'Permissions',\n    description: 'Manage permission overrides for your current session',\n    isClosable: true,\n    size: 'tall',\n    id: 'ndt-permissions',\n    isBeta: true,\n  } as DevToolbarWindowOptions;\n\n  protected readonly filterOptions = [\n    { value: 'all', label: 'All Permissions' },\n    { value: 'forced', label: 'Forced' },\n    { value: 'granted', label: 'Granted' },\n    { value: 'denied', label: 'Denied' },\n  ];\n\n  protected readonly permissionValueOptions = [\n    { value: 'not-forced', label: 'Not Forced' },\n    { value: 'denied', label: 'Forced Denied' },\n    { value: 'granted', label: 'Forced Granted' },\n  ];\n\n  // Public methods\n  onFilterChange(value: string | undefined): void {\n    const filter = this.filterOptions.find((f) => f.value === value);\n    if (filter) {\n      this.activeFilter.set(filter.value as PermissionFilter);\n    }\n  }\n\n  onPermissionChange(id: string, value: string): void {\n    switch (value) {\n      case 'not-forced':\n        this.permissionsService.removePermissionOverride(id);\n        break;\n      case 'granted':\n        this.permissionsService.setPermission(id, true);\n        break;\n      case 'denied':\n        this.permissionsService.setPermission(id, false);\n        break;\n    }\n  }\n\n  onSearchChange(query: string): void {\n    this.searchQuery.set(query);\n  }\n\n  // Protected methods\n  protected getPermissionValue(permission: DevToolbarPermission): string {\n    if (!permission.isForced) return '';\n    return permission.isGranted ? 'granted' : 'denied';\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport {\n  DevToolbarPreset,\n  DevToolbarPresetConfig,\n  PresetCategoryOptions,\n} from './presets.models';\n\n/**\n * Internal service for managing presets state.\n * Handles CRUD operations, captures current toolbar config, and applies presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPresetsService {\n  private readonly STORAGE_KEY = 'presets';\n  private storageService = inject(DevToolsStorageService);\n\n  // Inject all other tool internal services (for reading/writing state)\n  private featureFlagsService = inject(DevToolbarInternalFeatureFlagService);\n  private languageService = inject(DevToolbarInternalLanguageService);\n  private permissionsService = inject(DevToolbarInternalPermissionsService);\n  private appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n  private presetsSubject = new BehaviorSubject<DevToolbarPreset[]>([]);\n  public presets$: Observable<DevToolbarPreset[]> =\n    this.presetsSubject.asObservable();\n  public presets = toSignal(this.presets$, { initialValue: [] });\n\n  constructor() {\n    this.loadPresets();\n  }\n\n  /**\n   * Capture current toolbar state as a new preset\n   */\n  saveCurrentAsPreset(\n    name: string,\n    description?: string,\n    categoryOptions?: PresetCategoryOptions\n  ): DevToolbarPreset {\n    const preset: DevToolbarPreset = {\n      id: this.generateId(),\n      name,\n      description,\n      createdAt: new Date().toISOString(),\n      updatedAt: new Date().toISOString(),\n      config: this.captureCurrentConfig(categoryOptions),\n    };\n\n    const presets = [...this.presetsSubject.value, preset];\n    this.presetsSubject.next(presets);\n    this.storageService.set(this.STORAGE_KEY, presets);\n\n    return preset;\n  }\n\n  /**\n   * Apply a preset to all tools (THIS IS THE KEY METHOD)\n   */\n  async applyPreset(presetId: string): Promise<void> {\n    const preset = this.presetsSubject.value.find((p) => p.id === presetId);\n    if (!preset) return;\n\n    // Apply to each tool's internal service\n    this.featureFlagsService.applyPresetFlags(preset.config.featureFlags);\n    await this.languageService.applyPresetLanguage(preset.config.language);\n    this.permissionsService.applyPresetPermissions(preset.config.permissions);\n    this.appFeaturesService.applyForcedState(preset.config.appFeatures);\n  }\n\n  /**\n   * Update an existing preset with current toolbar state\n   */\n  updatePreset(presetId: string): void {\n    const presets = this.presetsSubject.value.map((preset) => {\n      if (preset.id === presetId) {\n        return {\n          ...preset,\n          updatedAt: new Date().toISOString(),\n          config: this.captureCurrentConfig(),\n        };\n      }\n      return preset;\n    });\n\n    this.presetsSubject.next(presets);\n    this.storageService.set(this.STORAGE_KEY, presets);\n  }\n\n  /**\n   * Delete a preset\n   */\n  deletePreset(presetId: string): void {\n    const presets = this.presetsSubject.value.filter(\n      (p) => p.id !== presetId\n    );\n    this.presetsSubject.next(presets);\n    this.storageService.set(this.STORAGE_KEY, presets);\n  }\n\n  /**\n   * Add a preset (used for import)\n   */\n  addPreset(preset: DevToolbarPreset): DevToolbarPreset {\n    // Generate new ID to avoid conflicts\n    const newPreset: DevToolbarPreset = {\n      ...preset,\n      id: this.generateId(),\n      createdAt: new Date().toISOString(),\n      updatedAt: new Date().toISOString(),\n    };\n\n    const presets = [...this.presetsSubject.value, newPreset];\n    this.presetsSubject.next(presets);\n    this.storageService.set(this.STORAGE_KEY, presets);\n\n    return newPreset;\n  }\n\n  /**\n   * Get a preset by ID\n   */\n  getPresetById(presetId: string): DevToolbarPreset | undefined {\n    return this.presetsSubject.value.find((p) => p.id === presetId);\n  }\n\n  /**\n   * Capture current configuration from all tools\n   */\n  private captureCurrentConfig(\n    categoryOptions?: PresetCategoryOptions\n  ): DevToolbarPresetConfig {\n    // Default to including all categories if not specified\n    const options = {\n      includeFeatureFlags: categoryOptions?.includeFeatureFlags ?? true,\n      includePermissions: categoryOptions?.includePermissions ?? true,\n      includeAppFeatures: categoryOptions?.includeAppFeatures ?? true,\n      includeLanguage: categoryOptions?.includeLanguage ?? true,\n    };\n\n    // Get current forced states\n    const currentFlags = this.featureFlagsService.getCurrentForcedState();\n    const currentPerms = this.permissionsService.getCurrentForcedState();\n    const currentFeatures = this.appFeaturesService.getCurrentForcedState();\n\n    // Filter by selected IDs if provided\n    const filterById = (ids: string[], selected?: string[]) =>\n      selected && selected.length > 0 ? ids.filter((id) => selected.includes(id)) : ids;\n\n    return {\n      featureFlags: options.includeFeatureFlags\n        ? {\n            enabled: filterById(\n              currentFlags.enabled,\n              categoryOptions?.selectedFlagIds\n            ),\n            disabled: filterById(\n              currentFlags.disabled,\n              categoryOptions?.selectedFlagIds\n            ),\n          }\n        : { enabled: [], disabled: [] },\n      language: options.includeLanguage\n        ? this.languageService.getCurrentForcedLanguage()\n        : null,\n      permissions: options.includePermissions\n        ? {\n            granted: filterById(\n              currentPerms.granted,\n              categoryOptions?.selectedPermissionIds\n            ),\n            denied: filterById(\n              currentPerms.denied,\n              categoryOptions?.selectedPermissionIds\n            ),\n          }\n        : { granted: [], denied: [] },\n      appFeatures: options.includeAppFeatures\n        ? {\n            enabled: filterById(\n              currentFeatures.enabled,\n              categoryOptions?.selectedFeatureIds\n            ),\n            disabled: filterById(\n              currentFeatures.disabled,\n              categoryOptions?.selectedFeatureIds\n            ),\n          }\n        : { enabled: [], disabled: [] },\n    };\n  }\n\n  /**\n   * Load presets from localStorage\n   */\n  private loadPresets(): void {\n    try {\n      const saved =\n        this.storageService.get<DevToolbarPreset[]>(this.STORAGE_KEY);\n      if (saved && Array.isArray(saved)) {\n        this.presetsSubject.next(saved);\n      }\n    } catch (error) {\n      console.error('Failed to load presets from localStorage:', error);\n    }\n  }\n\n  /**\n   * Generate unique preset ID\n   */\n  private generateId(): string {\n    return `preset-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n  selector: 'ndt-presets-tool',\n  standalone: true,\n  imports: [\n    FormsModule,\n    DevToolbarToolComponent,\n    DevToolbarInputComponent,\n    DevToolbarButtonComponent,\n    DevToolbarIconComponent,\n  ],\n  template: `\n    <ndt-toolbar-tool [options]=\"options\" title=\"Presets\" icon=\"layout\">\n      <div class=\"container\">\n        <!-- Mode Toggle -->\n        @if (!hasNoPresets() || viewMode() === 'create') {\n        <div class=\"tool-header\">\n          @if (viewMode() === 'list') {\n          <ndt-input\n            [value]=\"searchQuery()\"\n            (valueChange)=\"onSearchChange($event)\"\n            placeholder=\"Search presets...\"\n            [ariaLabel]=\"'Search presets'\"\n          />\n          <ndt-button\n            (click)=\"onSwitchToCreateMode()\"\n            [ariaLabel]=\"'Create new preset'\"\n          >\n            New Preset\n          </ndt-button>\n          } @else {\n          <ndt-button\n            (click)=\"onSwitchToListMode()\"\n            [ariaLabel]=\"'Back to list'\"\n          >\n            ← Back to List\n          </ndt-button>\n          }\n        </div>\n        }\n\n        <!-- Create Form -->\n        @if (viewMode() === 'create') {\n        <form (submit)=\"onSavePreset($event)\" class=\"preset-form\">\n          <ndt-input\n            label=\"Preset Name\"\n            [value]=\"presetName()\"\n            (valueChange)=\"presetName.set($event)\"\n            placeholder=\"e.g., Admin User - Full Access\"\n            [ariaLabel]=\"'Preset name'\"\n          />\n          <ndt-input\n            label=\"Description (optional)\"\n            [value]=\"presetDescription()\"\n            (valueChange)=\"presetDescription.set($event)\"\n            placeholder=\"Brief description of this preset\"\n            [ariaLabel]=\"'Preset description'\"\n          />\n\n          <!-- Category selection checkboxes -->\n          <div class=\"preset-summary\">\n            <h4>Select what to include:</h4>\n\n            @if (isFeatureFlagsEnabled()) {\n            <div class=\"category-section\">\n              <label class=\"checkbox-option\">\n                <input\n                  type=\"checkbox\"\n                  [checked]=\"includeFeatureFlags()\"\n                  (change)=\"includeFeatureFlags.set(!includeFeatureFlags())\"\n                  [disabled]=\"getCurrentFlagsCount() === 0\"\n                />\n                <span>Feature Flags ({{ getCurrentFlagsCount() }} forced)</span>\n              </label>\n              @if (forcedFlags().length > 0) {\n              <ul class=\"forced-items-list\">\n                @for (flag of forcedFlags(); track flag.id) {\n                <li>\n                  <label class=\"item-checkbox\">\n                    <input\n                      type=\"checkbox\"\n                      [checked]=\"isItemSelected(selectedFlagIds(), flag.id)\"\n                      (change)=\"toggleItemSelection(selectedFlagIds, flag.id)\"\n                    />\n                    <span class=\"item-name\">{{ flag.name }}</span>\n                    <span class=\"item-status\" [class.enabled]=\"flag.isEnabled\" [class.disabled]=\"!flag.isEnabled\">\n                      {{ flag.isEnabled ? 'ON' : 'OFF' }}\n                    </span>\n                  </label>\n                </li>\n                }\n              </ul>\n              }\n            </div>\n            }\n\n            @if (isPermissionsEnabled()) {\n            <div class=\"category-section\">\n              <label class=\"checkbox-option\">\n                <input\n                  type=\"checkbox\"\n                  [checked]=\"includePermissions()\"\n                  (change)=\"includePermissions.set(!includePermissions())\"\n                  [disabled]=\"getCurrentPermissionsCount() === 0\"\n                />\n                <span>Permissions ({{ getCurrentPermissionsCount() }} forced)</span>\n              </label>\n              @if (forcedPermissions().length > 0) {\n              <ul class=\"forced-items-list\">\n                @for (perm of forcedPermissions(); track perm.id) {\n                <li>\n                  <label class=\"item-checkbox\">\n                    <input\n                      type=\"checkbox\"\n                      [checked]=\"isItemSelected(selectedPermissionIds(), perm.id)\"\n                      (change)=\"toggleItemSelection(selectedPermissionIds, perm.id)\"\n                    />\n                    <span class=\"item-name\">{{ perm.name }}</span>\n                    <span class=\"item-status\" [class.enabled]=\"perm.isGranted\" [class.disabled]=\"!perm.isGranted\">\n                      {{ perm.isGranted ? 'GRANTED' : 'DENIED' }}\n                    </span>\n                  </label>\n                </li>\n                }\n              </ul>\n              }\n            </div>\n            }\n\n            @if (isAppFeaturesEnabled()) {\n            <div class=\"category-section\">\n              <label class=\"checkbox-option\">\n                <input\n                  type=\"checkbox\"\n                  [checked]=\"includeAppFeatures()\"\n                  (change)=\"includeAppFeatures.set(!includeAppFeatures())\"\n                  [disabled]=\"getCurrentAppFeaturesCount() === 0\"\n                />\n                <span>App Features ({{ getCurrentAppFeaturesCount() }} forced)</span>\n              </label>\n              @if (forcedAppFeatures().length > 0) {\n              <ul class=\"forced-items-list\">\n                @for (feat of forcedAppFeatures(); track feat.id) {\n                <li>\n                  <label class=\"item-checkbox\">\n                    <input\n                      type=\"checkbox\"\n                      [checked]=\"isItemSelected(selectedFeatureIds(), feat.id)\"\n                      (change)=\"toggleItemSelection(selectedFeatureIds, feat.id)\"\n                    />\n                    <span class=\"item-name\">{{ feat.name }}</span>\n                    <span class=\"item-status\" [class.enabled]=\"feat.isEnabled\" [class.disabled]=\"!feat.isEnabled\">\n                      {{ feat.isEnabled ? 'ON' : 'OFF' }}\n                    </span>\n                  </label>\n                </li>\n                }\n              </ul>\n              }\n            </div>\n            }\n\n            @if (isLanguageEnabled()) {\n            <div class=\"category-section\">\n              <label class=\"checkbox-option\">\n                <input\n                  type=\"checkbox\"\n                  [checked]=\"includeLanguage()\"\n                  (change)=\"includeLanguage.set(!includeLanguage())\"\n                  [disabled]=\"!getCurrentLanguage() || getCurrentLanguage() === 'Not Forced'\"\n                />\n                <span>Language ({{ getCurrentLanguage() }})</span>\n              </label>\n            </div>\n            }\n          </div>\n\n          <div class=\"form-actions\">\n            <ndt-button type=\"submit\">Save Preset</ndt-button>\n          </div>\n        </form>\n        }\n\n        <!-- Empty State -->\n        @if (viewMode() === 'list' && hasNoPresets()) {\n        <div class=\"empty\">\n          <p>No presets saved yet</p>\n          <p class=\"hint\">\n            Save the current toolbar configuration as a preset for quick access\n          </p>\n          <ndt-button (click)=\"onSwitchToCreateMode()\">\n            Create Your First Preset\n          </ndt-button>\n        </div>\n        } @else if (viewMode() === 'list' && hasNoFilteredPresets()) {\n        <div class=\"empty\">\n          <p>No presets match your search</p>\n        </div>\n        } @else if (viewMode() === 'list') {\n        <!-- Preset List -->\n        <div class=\"preset-list\">\n          @for (preset of filteredPresets(); track preset.id) {\n          <div class=\"preset-card\">\n            <div class=\"preset-card__header\">\n              <h3>{{ preset.name }}</h3>\n              <div class=\"preset-card__actions\">\n                <button\n                  class=\"icon-button\"\n                  (click)=\"onApplyPreset(preset.id)\"\n                  [attr.aria-label]=\"'Apply preset ' + preset.name\"\n                  title=\"Apply preset\"\n                >\n                  <ndt-icon name=\"refresh\" />\n                </button>\n                <button\n                  class=\"icon-button\"\n                  (click)=\"onUpdatePreset(preset.id)\"\n                  [attr.aria-label]=\"'Update preset ' + preset.name\"\n                  title=\"Update with current state\"\n                >\n                  <ndt-icon name=\"gear\" />\n                </button>\n                <button\n                  class=\"icon-button\"\n                  (click)=\"onExportPreset(preset.id)\"\n                  [attr.aria-label]=\"'Export preset ' + preset.name\"\n                  title=\"Export as JSON\"\n                >\n                  <ndt-icon name=\"export\" />\n                </button>\n                <button\n                  class=\"icon-button\"\n                  (click)=\"onDeletePreset(preset.id)\"\n                  [attr.aria-label]=\"'Delete preset ' + preset.name\"\n                  title=\"Delete preset\"\n                >\n                  <ndt-icon name=\"trash\" />\n                </button>\n              </div>\n            </div>\n            @if (preset.description) {\n            <p class=\"preset-card__description\">{{ preset.description }}</p>\n            }\n            <div class=\"preset-card__meta\">\n              <span>Updated: {{ formatDate(preset.updatedAt) }}</span>\n            </div>\n            <!-- Preview of preset config -->\n            <div class=\"preset-card__preview\">\n              @if (preset.config.featureFlags.enabled.length > 0 ||\n              preset.config.featureFlags.disabled.length > 0) {\n              <span class=\"badge\">\n                {{\n                  preset.config.featureFlags.enabled.length +\n                    preset.config.featureFlags.disabled.length\n                }}\n                flags\n              </span>\n              } @if (preset.config.permissions.granted.length > 0 ||\n              preset.config.permissions.denied.length > 0) {\n              <span class=\"badge\">\n                {{\n                  preset.config.permissions.granted.length +\n                    preset.config.permissions.denied.length\n                }}\n                perms\n              </span>\n              } @if (preset.config.appFeatures.enabled.length > 0 ||\n              preset.config.appFeatures.disabled.length > 0) {\n              <span class=\"badge\">\n                {{\n                  preset.config.appFeatures.enabled.length +\n                    preset.config.appFeatures.disabled.length\n                }}\n                features\n              </span>\n              } @if (preset.config.language) {\n              <span class=\"badge\">{{ preset.config.language }}</span>\n              }\n            </div>\n          </div>\n          }\n        </div>\n        }\n      </div>\n    </ndt-toolbar-tool>\n  `,\n  styles: [\n    `\n      .container {\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n        padding: 0;\n      }\n\n      .tool-header {\n        position: relative;\n        flex-shrink: 0;\n        display: flex;\n        gap: var(--ndt-spacing-sm);\n        margin-bottom: var(--ndt-spacing-md);\n\n        ndt-input {\n          flex: 1;\n        }\n\n        ndt-button {\n          flex-shrink: 0;\n        }\n      }\n\n      .empty {\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-md);\n        flex: 1;\n        min-height: 0;\n        justify-content: center;\n        align-items: center;\n        border: 1px solid var(--ndt-border-subtle);\n        border-radius: var(--ndt-border-radius-medium);\n        padding: var(--ndt-spacing-md);\n        background: transparent;\n        color: var(--ndt-text-muted);\n        text-align: center;\n\n        p {\n          margin: 0;\n        }\n\n        .hint {\n          font-size: var(--ndt-font-size-xs);\n        }\n      }\n\n      .preset-list {\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-md);\n        flex: 1;\n        min-height: 0;\n        overflow-y: auto;\n        padding-right: var(--ndt-spacing-sm);\n\n        &::-webkit-scrollbar {\n          width: 8px;\n        }\n\n        &::-webkit-scrollbar-track {\n          background: var(--ndt-background-secondary);\n          border-radius: 4px;\n        }\n\n        &::-webkit-scrollbar-thumb {\n          background: var(--ndt-border-primary);\n          border-radius: 4px;\n\n          &:hover {\n            background: var(--ndt-hover-bg);\n          }\n        }\n\n        scrollbar-width: thin;\n        scrollbar-color: var(--ndt-border-primary)\n          var(--ndt-background-secondary);\n      }\n\n      .preset-card {\n        background: var(--ndt-background-secondary);\n        padding: var(--ndt-spacing-md);\n        border-radius: var(--ndt-border-radius-medium);\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-sm);\n      }\n\n      .preset-card__header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        gap: var(--ndt-spacing-sm);\n\n        h3 {\n          margin: 0;\n          font-size: var(--ndt-font-size-md);\n          color: var(--ndt-text-primary);\n          flex: 1;\n        }\n      }\n\n      .preset-card__actions {\n        display: flex;\n        gap: var(--ndt-spacing-xs);\n      }\n\n      .icon-button {\n        background: transparent;\n        border: none;\n        cursor: pointer;\n        padding: var(--ndt-spacing-xs);\n        border-radius: var(--ndt-border-radius-small);\n        color: var(--ndt-text-secondary);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        &:hover {\n          background: var(--ndt-hover-bg);\n          color: var(--ndt-text-primary);\n        }\n\n        ndt-icon {\n          width: 16px;\n          height: 16px;\n        }\n      }\n\n      .preset-card__description {\n        margin: 0;\n        font-size: var(--ndt-font-size-sm);\n        color: var(--ndt-text-secondary);\n      }\n\n      .preset-card__meta {\n        font-size: var(--ndt-font-size-xs);\n        color: var(--ndt-text-muted);\n\n        span {\n          margin-right: var(--ndt-spacing-sm);\n        }\n      }\n\n      .preset-card__preview {\n        display: flex;\n        gap: var(--ndt-spacing-xs);\n        flex-wrap: wrap;\n      }\n\n      .badge {\n        background: var(--ndt-primary-color);\n        color: white;\n        padding: 2px 8px;\n        border-radius: 12px;\n        font-size: var(--ndt-font-size-xs);\n        font-weight: 500;\n      }\n\n      .preset-form {\n        flex: 1;\n        min-height: 0;\n        overflow-y: auto;\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-md);\n        padding: var(--ndt-spacing-md);\n\n        ndt-input {\n          width: 100%;\n        }\n      }\n\n      .preset-summary {\n        background: var(--ndt-background-secondary);\n        padding: var(--ndt-spacing-md);\n        border-radius: var(--ndt-border-radius-medium);\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-sm);\n\n        h4 {\n          margin: 0;\n          font-size: var(--ndt-font-size-sm);\n          color: var(--ndt-text-primary);\n        }\n      }\n\n      .category-section {\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-xs);\n      }\n\n      .checkbox-option {\n        display: flex;\n        align-items: center;\n        gap: var(--ndt-spacing-sm);\n        cursor: pointer;\n        color: var(--ndt-text-secondary);\n        font-size: var(--ndt-font-size-sm);\n\n        input[type='checkbox'] {\n          cursor: pointer;\n          width: 16px;\n          height: 16px;\n          accent-color: var(--ndt-primary);\n\n          &:disabled {\n            cursor: not-allowed;\n            opacity: 0.5;\n          }\n        }\n\n        &:has(input:disabled) {\n          opacity: 0.6;\n          cursor: not-allowed;\n        }\n      }\n\n      .forced-items-list {\n        list-style: none;\n        padding: 0;\n        margin: 0 0 0 var(--ndt-spacing-lg);\n        display: flex;\n        flex-direction: column;\n        gap: var(--ndt-spacing-xs);\n        font-size: var(--ndt-font-size-xs);\n\n        li {\n          background: rgba(var(--ndt-primary-rgb), 0.05);\n          border-radius: var(--ndt-border-radius-small);\n          border-left: 2px solid rgba(var(--ndt-primary-rgb), 0.3);\n        }\n\n        .item-checkbox {\n          display: flex;\n          justify-content: space-between;\n          align-items: center;\n          padding: var(--ndt-spacing-xs) var(--ndt-spacing-sm);\n          cursor: pointer;\n          gap: var(--ndt-spacing-sm);\n\n          input[type='checkbox'] {\n            cursor: pointer;\n            width: 14px;\n            height: 14px;\n            accent-color: var(--ndt-primary);\n            flex-shrink: 0;\n          }\n\n          &:hover {\n            background: rgba(var(--ndt-primary-rgb), 0.08);\n          }\n        }\n\n        .item-name {\n          color: var(--ndt-text-primary);\n          flex: 1;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          white-space: nowrap;\n        }\n\n        .item-status {\n          font-weight: 600;\n          padding: 2px 6px;\n          border-radius: var(--ndt-border-radius-small);\n          font-size: 10px;\n          text-transform: uppercase;\n          letter-spacing: 0.5px;\n          flex-shrink: 0;\n\n          &.enabled {\n            background: rgba(34, 197, 94, 0.15);\n            color: rgb(34, 197, 94);\n          }\n\n          &.disabled {\n            background: rgba(239, 68, 68, 0.15);\n            color: rgb(239, 68, 68);\n          }\n        }\n      }\n\n      .form-actions {\n        display: flex;\n        justify-content: flex-end;\n        gap: var(--ndt-spacing-sm);\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPresetsToolComponent {\n  // Injects\n  private readonly presetsService = inject(DevToolbarInternalPresetsService);\n  private readonly featureFlagsService = inject(\n    DevToolbarInternalFeatureFlagService\n  );\n  private readonly permissionsService = inject(\n    DevToolbarInternalPermissionsService\n  );\n  private readonly appFeaturesService = inject(\n    DevToolbarInternalAppFeaturesService\n  );\n  private readonly languageService = inject(DevToolbarInternalLanguageService);\n  protected readonly state = inject(DevToolbarStateService);\n\n  // Signals\n  protected readonly viewMode = signal<'list' | 'create'>('list');\n  protected readonly searchQuery = signal<string>('');\n  protected readonly presetName = signal<string>('');\n  protected readonly presetDescription = signal<string>('');\n  protected readonly includeFeatureFlags = signal<boolean>(true);\n  protected readonly includePermissions = signal<boolean>(true);\n  protected readonly includeAppFeatures = signal<boolean>(true);\n  protected readonly includeLanguage = signal<boolean>(true);\n\n  // Track selected individual items\n  protected readonly selectedFlagIds = signal<Set<string>>(new Set());\n  protected readonly selectedPermissionIds = signal<Set<string>>(new Set());\n  protected readonly selectedFeatureIds = signal<Set<string>>(new Set());\n\n  protected readonly presets = this.presetsService.presets;\n  protected readonly filteredPresets = computed(() => {\n    const query = this.searchQuery().toLowerCase();\n    return this.presets().filter(\n      (preset) =>\n        preset.name.toLowerCase().includes(query) ||\n        preset.description?.toLowerCase().includes(query)\n    );\n  });\n\n  protected readonly hasNoPresets = computed(\n    () => this.presets().length === 0\n  );\n  protected readonly hasNoFilteredPresets = computed(\n    () => this.filteredPresets().length === 0\n  );\n\n  // Tool availability (based on config)\n  protected readonly isFeatureFlagsEnabled = computed(\n    () => this.state.config().showFeatureFlagsTool ?? true\n  );\n  protected readonly isPermissionsEnabled = computed(\n    () => this.state.config().showPermissionsTool ?? true\n  );\n  protected readonly isAppFeaturesEnabled = computed(\n    () => this.state.config().showAppFeaturesTool ?? true\n  );\n  protected readonly isLanguageEnabled = computed(\n    () => this.state.config().showLanguageTool ?? true\n  );\n\n  // Forced items details\n  protected readonly forcedFlags = computed(() => {\n    return this.featureFlagsService.flags().filter((flag) => flag.isForced);\n  });\n  protected readonly forcedPermissions = computed(() => {\n    return this.permissionsService.permissions().filter((perm) => perm.isForced);\n  });\n  protected readonly forcedAppFeatures = computed(() => {\n    return this.appFeaturesService.features().filter((feat) => feat.isForced);\n  });\n\n  // Other properties\n  protected readonly options: DevToolbarWindowOptions = {\n    title: 'Presets',\n    description: 'Save and load toolbar configurations',\n    isClosable: true,\n    size: 'tall',\n    id: 'ndt-presets',\n    isBeta: true,\n  };\n\n  // Public methods\n  onSearchChange(query: string): void {\n    this.searchQuery.set(query);\n  }\n\n  onSwitchToCreateMode(): void {\n    this.viewMode.set('create');\n    this.presetName.set('');\n    this.presetDescription.set('');\n    // Reset checkboxes - only enable categories that have forced items\n    this.includeFeatureFlags.set(this.getCurrentFlagsCount() > 0);\n    this.includePermissions.set(this.getCurrentPermissionsCount() > 0);\n    this.includeAppFeatures.set(this.getCurrentAppFeaturesCount() > 0);\n    const currentLang = this.getCurrentLanguage();\n    this.includeLanguage.set(!!currentLang && currentLang !== 'Not Forced');\n\n    // Initialize selected items - select all by default\n    this.selectedFlagIds.set(new Set(this.forcedFlags().map((f) => f.id)));\n    this.selectedPermissionIds.set(\n      new Set(this.forcedPermissions().map((p) => p.id))\n    );\n    this.selectedFeatureIds.set(\n      new Set(this.forcedAppFeatures().map((f) => f.id))\n    );\n  }\n\n  onSwitchToListMode(): void {\n    this.viewMode.set('list');\n  }\n\n  onSavePreset(event: Event): void {\n    event.preventDefault();\n    if (!this.presetName()) return;\n    this.presetsService.saveCurrentAsPreset(\n      this.presetName(),\n      this.presetDescription(),\n      {\n        includeFeatureFlags: this.includeFeatureFlags(),\n        includePermissions: this.includePermissions(),\n        includeAppFeatures: this.includeAppFeatures(),\n        includeLanguage: this.includeLanguage(),\n        selectedFlagIds: Array.from(this.selectedFlagIds()),\n        selectedPermissionIds: Array.from(this.selectedPermissionIds()),\n        selectedFeatureIds: Array.from(this.selectedFeatureIds()),\n      }\n    );\n    this.onSwitchToListMode();\n  }\n\n  onApplyPreset(presetId: string): void {\n    this.presetsService.applyPreset(presetId);\n  }\n\n  onUpdatePreset(presetId: string): void {\n    this.presetsService.updatePreset(presetId);\n  }\n\n  onExportPreset(presetId: string): void {\n    const preset = this.presets().find((p) => p.id === presetId);\n    if (!preset) return;\n\n    const json = JSON.stringify(preset, null, 2);\n    const blob = new Blob([json], { type: 'application/json' });\n    const url = URL.createObjectURL(blob);\n    const link = document.createElement('a');\n    link.href = url;\n    link.download = `preset-${preset.name.toLowerCase().replace(/\\s+/g, '-')}.json`;\n    link.click();\n    URL.revokeObjectURL(url);\n  }\n\n  onDeletePreset(presetId: string): void {\n    if (confirm('Are you sure you want to delete this preset?')) {\n      this.presetsService.deletePreset(presetId);\n    }\n  }\n\n  // Protected methods\n  protected getCurrentFlagsCount(): number {\n    const state = this.featureFlagsService.getCurrentForcedState();\n    return state.enabled.length + state.disabled.length;\n  }\n\n  protected getCurrentPermissionsCount(): number {\n    const state = this.permissionsService.getCurrentForcedState();\n    return state.granted.length + state.denied.length;\n  }\n\n  protected getCurrentAppFeaturesCount(): number {\n    const state = this.appFeaturesService.getCurrentForcedState();\n    return state.enabled.length + state.disabled.length;\n  }\n\n  protected getCurrentLanguage(): string {\n    return this.languageService.getCurrentForcedLanguage() || 'Not Forced';\n  }\n\n  protected formatDate(isoString: string): string {\n    return new Date(isoString).toLocaleDateString();\n  }\n\n  /**\n   * Toggle selection of an individual item\n   */\n  protected toggleItemSelection(\n    signal: typeof this.selectedFlagIds,\n    itemId: string\n  ): void {\n    const current = new Set(signal());\n    if (current.has(itemId)) {\n      current.delete(itemId);\n    } else {\n      current.add(itemId);\n    }\n    signal.set(current);\n  }\n\n  /**\n   * Check if an item is selected\n   */\n  protected isItemSelected(selectedSet: Set<string>, itemId: string): boolean {\n    return selectedSet.has(itemId);\n  }\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  DestroyRef,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n  effect,\n  inject,\n  input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { filter, throttleTime } from 'rxjs/operators';\nimport { DevToolbarStateService } from './dev-toolbar-state.service';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\nimport { DevToolbarAppFeaturesToolComponent } from './tools/app-features-tool/app-features-tool.component';\nimport { DevToolbarFeatureFlagsToolComponent } from './tools/feature-flags-tool/feature-flags-tool.component';\nimport { DevToolbarHomeToolComponent } from './tools/home-tool/home-tool.component';\nimport { SettingsService } from './tools/home-tool/settings.service';\nimport { DevToolbarLanguageToolComponent } from './tools/language-tool/language-tool.component';\nimport { DevToolbarPermissionsToolComponent } from './tools/permissions-tool/permissions-tool.component';\nimport { DevToolbarPresetsToolComponent } from './tools/presets-tool/presets-tool.component';\n\n@Component({\n  standalone: true,\n  selector: 'ndt-toolbar',\n  styleUrls: ['./dev-toolbar.component.scss'],\n  encapsulation: ViewEncapsulation.ShadowDom,\n  imports: [\n    DevToolbarHomeToolComponent,\n    DevToolbarLanguageToolComponent,\n    DevToolbarFeatureFlagsToolComponent,\n    DevToolbarAppFeaturesToolComponent,\n    DevToolbarPermissionsToolComponent,\n    DevToolbarPresetsToolComponent,\n  ],\n  template: `\n    @if (config().enabled ?? true) {\n      <div\n        aria-label=\"Developer tools\"\n        role=\"toolbar\"\n        class=\"ndt-toolbar\"\n        [@toolbarState]=\"state.isVisible() ? 'visible' : 'hidden'\"\n        [attr.data-theme]=\"state.theme()\"\n        [class.ndt-toolbar--active]=\"state.isVisible()\"\n        (mouseenter)=\"onMouseEnter()\"\n      >\n        <ndt-home-tool />\n        <ng-content />\n        @if (config().showLanguageTool ?? false) {\n          <ndt-language-tool />\n        }\n        @if (config().showPresetsTool ?? false) {\n          <ndt-presets-tool />\n        }\n        @if (config().showAppFeaturesTool ?? false) {\n          <ndt-app-features-tool />\n        }\n        @if (config().showPermissionsTool ?? false) {\n          <ndt-permissions-tool />\n        }\n        @if (config().showFeatureFlagsTool ?? false) {\n          <ndt-feature-flags-tool />\n        }\n      </div>\n    }\n  `,\n  animations: [\n    trigger('toolbarState', [\n      state(\n        'hidden',\n        style({\n          transform: 'translate(-50%, calc(100% + -1.2rem))',\n        })\n      ),\n      state(\n        'visible',\n        style({\n          transform: 'translate(-50%, -1rem)',\n        })\n      ),\n      transition('hidden <=> visible', [\n        animate('300ms cubic-bezier(0.4, 0, 0.2, 1)'),\n      ]),\n    ]),\n  ],\n})\nexport class DevToolbarComponent implements OnInit, OnDestroy {\n  private document = inject(DOCUMENT);\n  state = inject(DevToolbarStateService);\n  destroyRef = inject(DestroyRef);\n  settingsService = inject(SettingsService);\n\n  config = input<DevToolbarConfig>({});\n  private globalStyleElement?: HTMLStyleElement;\n\n  private keyboardShortcut = fromEvent<KeyboardEvent>(window, 'keydown')\n    .pipe(\n      filter((event) => event.ctrlKey && event.shiftKey && event.key === 'D'),\n      takeUntilDestroyed(this.destroyRef)\n    )\n    .subscribe(() => this.toggleDevTools());\n\n  private mouseLeave = fromEvent<MouseEvent>(document, 'mouseleave')\n    .pipe(throttleTime(3000), takeUntilDestroyed(this.destroyRef))\n    .subscribe(() => this.onMouseLeave());\n\n  constructor() {\n    // Update state service when config changes\n    effect(() => {\n      this.state.setConfig(this.config());\n    });\n  }\n\n  ngOnInit(): void {\n    this.injectGlobalStyles();\n    // Always use light theme\n    this.state.setTheme('light');\n  }\n\n  ngOnDestroy(): void {\n    this.globalStyleElement?.remove();\n  }\n\n  onMouseEnter(): void {\n    this.state.setVisibility(true);\n  }\n\n  onMouseLeave(): void {\n    setTimeout(() => this.state.setVisibility(false), this.state.delay());\n  }\n\n  private toggleDevTools(): void {\n    this.state.setVisibility(!this.state.isVisible());\n  }\n\n  /**\n   * Injects global theme styles into the document head to make CSS variables\n   * available to CDK overlays and other elements rendered outside Shadow DOM.\n   * Uses light theme only.\n   */\n  private injectGlobalStyles(): void {\n    // Check if styles are already injected (e.g., by another toolbar instance)\n    if (this.document.getElementById('ndt-global-theme')) {\n      return;\n    }\n\n    this.globalStyleElement = this.document.createElement('style');\n    this.globalStyleElement.id = 'ndt-global-theme';\n    this.globalStyleElement.textContent = `\n      /* Global Light Theme for ngx-dev-toolbar overlays */\n      :where(ndt-toolbar),\n      .ndt-overlay-panel,\n      .cdk-overlay-container {\n        --ndt-border-radius-small: 4px;\n        --ndt-border-radius-medium: 8px;\n        --ndt-border-radius-large: 12px;\n        --ndt-transition-default: all 0.2s ease-out;\n        --ndt-transition-smooth: all 0.2s ease-in-out;\n        --ndt-spacing-xs: 4px;\n        --ndt-spacing-sm: 6px;\n        --ndt-spacing-md: 12px;\n        --ndt-spacing-lg: 16px;\n        --ndt-window-padding: 16px;\n        --ndt-font-size-xxs: 0.65rem;\n        --ndt-font-size-xs: 0.75rem;\n        --ndt-font-size-sm: 0.875rem;\n        --ndt-font-size-md: 1rem;\n        --ndt-font-size-lg: 1.25rem;\n        --ndt-font-size-xl: 2rem;\n        --ndt-primary: #df30d4;\n        --ndt-primary-rgb: 223, 48, 212;\n        --ndt-text-on-primary: rgb(255, 255, 255);\n        --ndt-bg-primary: rgb(255, 255, 255);\n        --ndt-bg-gradient: linear-gradient(180deg, rgb(243, 244, 246) 0%, rgba(243, 244, 246, 0.88) 100%);\n        --ndt-text-primary: rgb(17, 24, 39);\n        --ndt-text-secondary: rgb(55, 65, 81);\n        --ndt-text-muted: rgb(107, 114, 128);\n        --ndt-border-primary: #e5e7eb;\n        --ndt-border-subtle: rgba(17, 24, 39, 0.1);\n        --ndt-hover-bg: rgba(17, 24, 39, 0.05);\n        --ndt-hover-danger: rgb(239, 68, 68);\n        --ndt-shadow-toolbar: 0 2px 8px rgba(156, 163, 175, 0.2);\n        --ndt-shadow-tooltip: 0 0 0 1px rgba(17, 24, 39, 0.05), 0 4px 8px rgba(107, 114, 128, 0.15), 0 2px 4px rgba(107, 114, 128, 0.1);\n        --ndt-shadow-window: 0px 0px 0px 0px rgba(156, 163, 175, 0.1), 0px 1px 2px 0px rgba(156, 163, 175, 0.12), 0px 4px 4px 0px rgba(156, 163, 175, 0.1), 0px 10px 6px 0px rgba(156, 163, 175, 0.08), 0px 17px 7px 0px rgba(156, 163, 175, 0.05), 0px 26px 7px 0px rgba(156, 163, 175, 0.02);\n        --ndt-background-secondary: var(--ndt-bg-primary);\n        --ndt-background-hover: var(--ndt-hover-bg);\n        --ndt-border-color: var(--ndt-border-primary);\n        --ndt-note-background: rgb(219, 234, 254);\n        --ndt-note-border: rgba(37, 99, 235, 0.2);\n        --ndt-warning-background: rgb(254, 249, 195);\n        --ndt-warning-border: rgba(202, 138, 4, 0.2);\n        --ndt-error-background: rgb(254, 226, 226);\n        --ndt-error-border: rgba(220, 38, 38, 0.2);\n      }\n      .ndt-overlay-panel {\n        font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\n        box-sizing: border-box;\n        isolation: isolate;\n        z-index: 999999999;\n      }\n      .ndt-overlay-panel *, .ndt-overlay-panel *::before, .ndt-overlay-panel *::after {\n        box-sizing: border-box;\n      }\n      .cdk-overlay-backdrop.ndt-overlay-backdrop {\n        background: transparent;\n      }\n    `;\n\n    this.document.head.appendChild(this.globalStyleElement);\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarFeatureFlagService\n  implements DevToolsService<DevToolbarFlag>\n{\n  private internalService = inject(DevToolbarInternalFeatureFlagService);\n\n  /**\n   * Sets the available flags that will be displayed in the tool on the dev toolbar\n   * @param flags The flags to be displayed\n   */\n  setAvailableOptions(flags: DevToolbarFlag[]): void {\n    this.internalService.setAppFlags(flags);\n  }\n\n  /**\n   * Gets the flags that were forced/modified through the tool on the dev toolbar\n   * @returns Observable of forced flags array\n   */\n  getForcedValues(): Observable<DevToolbarFlag[]> {\n    return this.internalService.getForcedFlags();\n  }\n\n  /**\n   * Gets ALL flag values with overrides already applied.\n   * Returns the complete set of flags where overridden values replace base values.\n   * Each flag includes an `isForced` property indicating if it was overridden.\n   *\n   * This method simplifies integration by eliminating the need to manually merge\n   * base flags with overrides using combineLatest.\n   *\n   * @returns Observable of all flags with overrides applied\n   *\n   * @example\n   * ```typescript\n   * // Get a specific flag value with overrides applied\n   * this.featureFlagsService.getValues().pipe(\n   *   map(flags => flags.find(f => f.id === 'newFeature')),\n   *   map(flag => flag?.isEnabled ?? false)\n   * ).subscribe(isEnabled => {\n   *   if (isEnabled) {\n   *     // Enable feature\n   *   }\n   * });\n   * ```\n   */\n  getValues(): Observable<DevToolbarFlag[]> {\n    return this.internalService.flags$;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarLanguageService implements DevToolsService<Language> {\n  private internalService = inject(DevToolbarInternalLanguageService);\n\n  /**\n   * Sets the available languages that will be displayed in the tool on the dev toolbar\n   * @param languages The languages to be displayed\n   */\n  setAvailableOptions(languages: Language[]): void {\n    this.internalService.setAppLanguages(languages);\n  }\n\n  /**\n   * Gets the languages that were forced/modified through the tool on the dev toolbar\n   * @returns Observable of forced languages array\n   */\n  getForcedValues(): Observable<Language[]> {\n    return this.internalService.getForcedLanguage();\n  }\n\n  /**\n   * Gets the forced language value.\n   * For the language tool, this returns the same as getForcedValues() since\n   * only one language can be selected at a time.\n   * @returns Observable of forced language array (single item or empty)\n   */\n  getValues(): Observable<Language[]> {\n    return this.internalService.getForcedLanguage();\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Public service for managing app features in the dev toolbar.\n *\n * This service implements the DevToolsService interface and provides methods for:\n * - Configuring available product features\n * - Retrieving forced feature overrides\n * - Applying preset feature configurations\n * - Exporting current forced state for presets\n *\n * @example\n * ```typescript\n * import { DevToolbarAppFeaturesService } from 'ngx-dev-toolbar';\n *\n * @Component({...})\n * export class AppComponent implements OnInit {\n *   private appFeaturesService = inject(DevToolbarAppFeaturesService);\n *\n *   ngOnInit() {\n *     // Configure available features based on current tier\n *     const features: DevToolbarAppFeature[] = [\n *       { id: 'analytics', name: 'Analytics Dashboard', isEnabled: true, isForced: false },\n *       { id: 'multi-user', name: 'Multi-User Support', isEnabled: false, isForced: false }\n *     ];\n *     this.appFeaturesService.setAvailableOptions(features);\n *\n *     // Subscribe to forced overrides\n *     this.appFeaturesService.getForcedValues().subscribe(forcedFeatures => {\n *       forcedFeatures.forEach(feature => {\n *         // Apply forced feature state to application logic\n *         this.applyFeatureState(feature.id, feature.isEnabled);\n *       });\n *     });\n *   }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarAppFeaturesService implements DevToolsService<DevToolbarAppFeature> {\n  private internalService = inject(DevToolbarInternalAppFeaturesService);\n\n  /**\n   * Set available app features for the application.\n   *\n   * Configures the list of product features that can be toggled in the dev toolbar.\n   * Features should represent product-level capabilities like license tiers,\n   * deployment configurations, or environment flags.\n   *\n   * @param features - Array of app features to display in the toolbar\n   * @throws Error if duplicate feature IDs or empty IDs are detected\n   *\n   * @example\n   * ```typescript\n   * const features: DevToolbarAppFeature[] = [\n   *   {\n   *     id: 'advanced-analytics',\n   *     name: 'Advanced Analytics Dashboard',\n   *     description: 'Access premium reporting and data visualization',\n   *     isEnabled: false,  // Not available in current tier\n   *     isForced: false\n   *   },\n   *   {\n   *     id: 'multi-user-support',\n   *     name: 'Multi-User Collaboration',\n   *     description: 'Enable team features and user management',\n   *     isEnabled: true,   // Available in current tier\n   *     isForced: false\n   *   }\n   * ];\n   * this.appFeaturesService.setAvailableOptions(features);\n   * ```\n   */\n  setAvailableOptions(features: DevToolbarAppFeature[]): void {\n    this.internalService.setAppFeatures(features);\n  }\n\n  /**\n   * Get observable stream of features that have forced overrides.\n   *\n   * Emits an array of features that have been forced via the dev toolbar.\n   * Only features with `isForced = true` are included in the emissions.\n   * Use this to react to feature override changes and update application behavior.\n   *\n   * @returns Observable that emits array of forced features whenever state changes\n   *\n   * @example\n   * ```typescript\n   * this.appFeaturesService.getForcedValues()\n   *   .pipe(takeUntilDestroyed())\n   *   .subscribe(forcedFeatures => {\n   *     forcedFeatures.forEach(feature => {\n   *       if (feature.isEnabled) {\n   *         this.enableFeature(feature.id);\n   *       } else {\n   *         this.disableFeature(feature.id);\n   *       }\n   *     });\n   *   });\n   * ```\n   */\n  getForcedValues(): Observable<DevToolbarAppFeature[]> {\n    return this.internalService.getForcedFeatures();\n  }\n\n  /**\n   * Gets ALL app feature values with overrides already applied.\n   * Returns the complete set of features where overridden values replace base values.\n   * Each feature includes an `isForced` property indicating if it was overridden.\n   *\n   * This method simplifies integration by eliminating the need to manually merge\n   * base features with overrides using combineLatest.\n   *\n   * @returns Observable of all features with overrides applied\n   *\n   * @example\n   * ```typescript\n   * // Check if a feature is enabled with overrides applied\n   * this.appFeaturesService.getValues().pipe(\n   *   map(features => features.find(f => f.id === 'premium-analytics')),\n   *   map(feature => feature?.isEnabled ?? false)\n   * ).subscribe(isEnabled => {\n   *   if (isEnabled) {\n   *     // Enable premium analytics\n   *   }\n   * });\n   * ```\n   */\n  getValues(): Observable<DevToolbarAppFeature[]> {\n    return this.internalService.features$;\n  }\n\n  /**\n   * Apply a preset feature configuration (for preset tool integration).\n   *\n   * Accepts a forced features state object and applies it to the current configuration.\n   * Invalid feature IDs (not in configured features) are filtered out with a warning.\n   *\n   * @param state - Forced features state containing enabled/disabled arrays\n   *\n   * @example\n   * ```typescript\n   * // Apply \"Enterprise Tier\" preset\n   * const enterprisePreset: ForcedAppFeaturesState = {\n   *   enabled: ['analytics', 'multi-user', 'white-label', 'sso'],\n   *   disabled: []\n   * };\n   * this.appFeaturesService.applyPresetFeatures(enterprisePreset);\n   *\n   * // Apply \"Basic Tier\" preset\n   * const basicPreset: ForcedAppFeaturesState = {\n   *   enabled: [],\n   *   disabled: ['analytics', 'multi-user', 'white-label', 'sso']\n   * };\n   * this.appFeaturesService.applyPresetFeatures(basicPreset);\n   * ```\n   */\n  applyPresetFeatures(state: ForcedAppFeaturesState): void {\n    this.internalService.applyForcedState(state);\n  }\n\n  /**\n   * Get current forced feature state as a snapshot (for preset export).\n   *\n   * Returns the current forced features state with enabled/disabled arrays.\n   * Useful for exporting toolbar state to save as a preset or for debugging.\n   * Returns a defensive copy - mutations will not affect internal state.\n   *\n   * @returns Current forced features state\n   *\n   * @example\n   * ```typescript\n   * // Export current toolbar state to save as preset\n   * const currentState = this.appFeaturesService.getCurrentForcedState();\n   * this.presetsService.savePreset('my-config', {\n   *   appFeatures: currentState,\n   *   // ... other tool states\n   * });\n   *\n   * console.log(currentState);\n   * // { enabled: ['analytics'], disabled: ['white-label'] }\n   * ```\n   */\n  getCurrentForcedState(): ForcedAppFeaturesState {\n    return this.internalService.getCurrentForcedState();\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport { DevToolbarPermission, ForcedPermissionsState } from './permissions.models';\n\n/**\n * Public service for integrating the Permissions Tool with your application.\n * Use this service to:\n * 1. Register your application's permissions with setAvailableOptions()\n * 2. Listen for toolbar permission overrides with getForcedValues()\n * 3. Apply preset permission states for testing with applyPreset()\n *\n * @example\n * ```typescript\n * constructor(private permissionsService: DevToolbarPermissionsService) {\n *   // Register permissions\n *   this.permissionsService.setAvailableOptions([\n *     { id: 'can-edit', name: 'Can Edit', isGranted: false, isForced: false }\n *   ]);\n *\n *   // Listen for overrides\n *   this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n *     // Update your app's permission state\n *   });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPermissionsService\n  implements DevToolsService<DevToolbarPermission>\n{\n  private internalService = inject(DevToolbarInternalPermissionsService);\n\n  /**\n   * Sets the available permissions that will be displayed in the toolbar tool.\n   * Call this in your app initialization to register permissions.\n   *\n   * @param permissions Array of permissions to display in the toolbar\n   *\n   * @example\n   * ```typescript\n   * this.permissionsService.setAvailableOptions([\n   *   {\n   *     id: 'can-edit-posts',\n   *     name: 'Edit Posts',\n   *     description: 'Can edit blog posts',\n   *     isGranted: false,\n   *     isForced: false\n   *   }\n   * ]);\n   * ```\n   */\n  setAvailableOptions(permissions: DevToolbarPermission[]): void {\n    this.internalService.setAppPermissions(permissions);\n  }\n\n  /**\n   * Gets an observable of permissions that were forced/overridden through the toolbar.\n   * Subscribe to this to update your application's permission state.\n   *\n   * @returns Observable emitting array of forced permissions whenever changes occur\n   *\n   * @example\n   * ```typescript\n   * this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n   *   forcedPermissions.forEach(permission => {\n   *     this.updatePermission(permission.id, permission.isGranted);\n   *   });\n   * });\n   * ```\n   */\n  getForcedValues(): Observable<DevToolbarPermission[]> {\n    return this.internalService.getForcedPermissions();\n  }\n\n  /**\n   * Gets ALL permission values with overrides already applied.\n   * Returns the complete set of permissions where overridden values replace base values.\n   * Each permission includes an `isForced` property indicating if it was overridden.\n   *\n   * This method simplifies integration by eliminating the need to manually merge\n   * base permissions with overrides using combineLatest.\n   *\n   * @returns Observable of all permissions with overrides applied\n   *\n   * @example\n   * ```typescript\n   * // Simple permission check with overrides applied\n   * this.permissionsService.getValues().pipe(\n   *   map(permissions => permissions.find(p => p.id === 'can-edit')),\n   *   map(permission => permission?.isGranted ?? false)\n   * ).subscribe(canEdit => {\n   *   if (canEdit) {\n   *     // Enable edit functionality\n   *   }\n   * });\n   * ```\n   */\n  getValues(): Observable<DevToolbarPermission[]> {\n    return this.internalService.permissions$;\n  }\n\n  /**\n   * Apply a preset permission state. Useful for automated testing scenarios.\n   *\n   * @param state The forced permissions state to apply\n   *\n   * @example\n   * ```typescript\n   * this.permissionsService.applyPreset({\n   *   granted: ['can-edit-posts'],\n   *   denied: ['can-delete-posts']\n   * });\n   * ```\n   */\n  applyPreset(state: ForcedPermissionsState): void {\n    this.internalService.applyPresetPermissions(state);\n  }\n\n  /**\n   * Get the current forced permission state.\n   *\n   * @returns Current forced permissions state\n   */\n  getCurrentState(): ForcedPermissionsState {\n    return this.internalService.getCurrentForcedState();\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport {\n  DevToolbarPreset,\n  DevToolbarPresetConfig,\n} from './presets.models';\n\n/**\n * Partial preset for initialization (without generated fields)\n */\nexport interface InitialPreset {\n  name: string;\n  description?: string;\n  config: DevToolbarPresetConfig;\n}\n\n/**\n * Public service for managing dev toolbar presets.\n * Allows developers to programmatically save, load, and manage presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPresetsService {\n  private internalService = inject(DevToolbarInternalPresetsService);\n\n  /**\n   * Get all saved presets as an Observable\n   */\n  getPresets(): Observable<DevToolbarPreset[]> {\n    return this.internalService.presets$;\n  }\n\n  /**\n   * Save current toolbar state as a preset\n   * @param name - Name for the preset\n   * @param description - Optional description\n   * @returns The created preset\n   */\n  savePreset(name: string, description?: string): DevToolbarPreset {\n    return this.internalService.saveCurrentAsPreset(name, description);\n  }\n\n  /**\n   * Apply a preset (load its configuration into all tools)\n   * @param presetId - ID of the preset to apply\n   */\n  async applyPreset(presetId: string): Promise<void> {\n    return this.internalService.applyPreset(presetId);\n  }\n\n  /**\n   * Update a preset with current toolbar state\n   * @param presetId - ID of the preset to update\n   */\n  updatePreset(presetId: string): void {\n    this.internalService.updatePreset(presetId);\n  }\n\n  /**\n   * Delete a preset\n   * @param presetId - ID of the preset to delete\n   */\n  deletePreset(presetId: string): void {\n    this.internalService.deletePreset(presetId);\n  }\n\n  /**\n   * Export a preset as JSON string\n   * @param presetId - ID of the preset to export\n   * @returns JSON string representation of the preset\n   */\n  exportPreset(presetId: string): string | null {\n    const preset = this.internalService.getPresetById(presetId);\n    if (!preset) return null;\n    return JSON.stringify(preset, null, 2);\n  }\n\n  /**\n   * Import a preset from JSON string\n   * @param json - JSON string representation of a preset\n   * @returns The imported preset\n   * @throws Error if JSON is invalid\n   */\n  importPreset(json: string): DevToolbarPreset {\n    const preset = JSON.parse(json) as DevToolbarPreset;\n    return this.internalService.addPreset(preset);\n  }\n\n  /**\n   * Initialize presets with predefined configurations.\n   * Useful for setting up default presets that all developers can use.\n   *\n   * @param presets - Array of preset configurations to initialize\n   * @returns Array of created presets\n   *\n   * @example\n   * ```typescript\n   * const presetsService = inject(DevToolbarPresetsService);\n   *\n   * presetsService.initializePresets([\n   *   {\n   *     name: 'Admin User',\n   *     description: 'Full access admin configuration',\n   *     config: {\n   *       featureFlags: {\n   *         enabled: ['admin-panel', 'advanced-features'],\n   *         disabled: []\n   *       },\n   *       permissions: {\n   *         granted: ['admin', 'write', 'delete'],\n   *         denied: []\n   *       },\n   *       appFeatures: {\n   *         enabled: ['analytics', 'reporting'],\n   *         disabled: []\n   *       },\n   *       language: 'en'\n   *     }\n   *   },\n   *   {\n   *     name: 'Read-Only User',\n   *     description: 'Limited access for viewing only',\n   *     config: {\n   *       featureFlags: {\n   *         enabled: [],\n   *         disabled: ['admin-panel', 'advanced-features']\n   *       },\n   *       permissions: {\n   *         granted: ['read'],\n   *         denied: ['write', 'delete']\n   *       },\n   *       appFeatures: {\n   *         enabled: [],\n   *         disabled: ['analytics', 'reporting']\n   *       },\n   *       language: null\n   *     }\n   *   }\n   * ]);\n   * ```\n   */\n  initializePresets(presets: InitialPreset[]): DevToolbarPreset[] {\n    return presets.map((preset) =>\n      this.internalService.addPreset({\n        id: '', // Will be generated\n        createdAt: '', // Will be generated\n        updatedAt: '', // Will be generated\n        ...preset,\n      })\n    );\n  }\n\n  /**\n   * Clear all existing presets and set new initial presets.\n   * Use this to replace all presets with a fresh set of configurations.\n   *\n   * @param presets - Array of preset configurations to set as initial\n   * @returns Array of created presets\n   */\n  setInitialPresets(presets: InitialPreset[]): DevToolbarPreset[] {\n    // Clear existing presets\n    const currentPresets = this.internalService.presets();\n    currentPresets.forEach((preset) => {\n      this.internalService.deletePreset(preset.id);\n    });\n\n    // Add new presets\n    return this.initializePresets(presets);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;MAea,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;;QAKU,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB;AACtC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,EAAE;AACX,SAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CACrD;AACQ,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC;AAC3D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC;AACxD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AACnD;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AACrD;;;;AAIG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;AA4DzE,IAAA;;AAzDC,IAAA,aAAa,CAAC,SAAkB,EAAA;QAC9B,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,gBAAA,GAAG,KAAK;AACR,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA,CAAC,CAAC;QACL;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBAChC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,wBAAA,GAAG,KAAK;AACR,wBAAA,QAAQ,EAAE,IAAI;AACf,qBAAA,CAAC,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;YACxB;QACF;IACF;AAEA,IAAA,QAAQ,CAAC,KAAuB,EAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,YAAA,GAAG,KAAK;YACR,KAAK;AACN,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,aAAa,CAAC,MAAqB,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,YAAA,GAAG,KAAK;AACR,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAC1B;IACF;;AAGA,IAAA,UAAU,CAAC,MAAqB,EAAA;AAC9B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9D;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,YAAA,GAAG,KAAK;AACR,YAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,SAAS,CAAC,MAAwB,EAAA;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM;AAC5B,YAAA,GAAG,KAAK;YACR,MAAM;AACP,SAAA,CAAC,CAAC;IACL;8GAzFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCoBY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5BrB;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA;AACF,iBAAA;;;MCTY,iBAAiB,CAAA;AAtB9B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBlB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCHY,gBAAgB,CAAA;AAlB7B,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdjB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCEY,iBAAiB,CAAA;AAnB9B,IAAA,WAAA,GAAA;AAoBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBlB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCIY,qBAAqB,CAAA;AAtBlC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBtB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCHY,oBAAoB,CAAA;AAlBjC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,SAAS,CAAC;AAChC,IAAA;8GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdrB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCCY,iBAAiB,CAAA;AAlB9B,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCCY,mBAAmB,CAAA;AAlBhC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdpB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCKY,mBAAmB,CAAA;AAtBhC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBpB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,kBAAkB,CAAA;AAtB/B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBnB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,iBAAiB,CAAA;AAtB9B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBlB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,sBAAsB,CAAA;AAtBnC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBvB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCHY,mBAAmB,CAAA;AAlBhC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdpB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCEY,mBAAmB,CAAA;AAnBhC,IAAA,WAAA,GAAA;AAoBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfpB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACF,iBAAA;;;MCAY,sBAAsB,CAAA;AAlBnC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdvB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCEY,qBAAqB,CAAA;AAnBlC,IAAA,WAAA,GAAA;AAoBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACF,iBAAA;;;MCAY,iBAAiB,CAAA;AAlB9B,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCKY,iBAAiB,CAAA;AAtB9B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBlB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,oBAAoB,CAAA;AAtBjC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBrB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,mBAAmB,CAAA;AAtBhC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBpB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,oBAAoB,CAAA;AAtBjC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBrB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,iBAAiB,CAAA;AAtB9B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBlB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,gBAAgB,CAAA;AAtB7B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBjB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,qBAAqB,CAAA;AAtBlC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBtB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCCY,uBAAuB,CAAA;AAtBpC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBxB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAtBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MCHY,sBAAsB,CAAA;AAlBnC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdvB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCCY,kBAAkB,CAAA;AAlB/B,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdnB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;MCKY,kBAAkB,CAAA;AAtB/B,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBnB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACF,iBAAA;;;MC6GY,uBAAuB,CAAA;AA9FpC,IAAA,WAAA,GAAA;AA+FmB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE9D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAY;QAEjC,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MACd,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAC7D;AACF,IAAA;8GARY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5DxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxFC,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,gBAAgB,2EAChB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,sBAAsB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,8EACnB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,iBAAiB,4EACjB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,uBAAuB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA+DT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA9FnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,qBAAqB;wBACrB,iBAAiB;wBACjB,oBAAoB;wBACpB,mBAAmB;wBACnB,mBAAmB;wBACnB,kBAAkB;wBAClB,iBAAiB;wBACjB,sBAAsB;wBACtB,mBAAmB;wBACnB,mBAAmB;wBACnB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,oBAAoB;wBACpB,mBAAmB;wBACnB,oBAAoB;wBACpB,iBAAiB;wBACjB,qBAAqB;wBACrB,uBAAuB;wBACvB,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,sBAAsB;wBACtB,kBAAkB;AACnB,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA;AACF,iBAAA;;;AChID;;;;;;;;;;;;;;;;;AAiBG;MA0BU,uBAAuB,CAAA;AAzBpC,IAAA,WAAA,GAAA;AA0BE;;;AAGG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC;AAE/B;;;AAGG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,IAAI,CAAC;AAEjC;;;AAGG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,gBAAgB,CAAC;AAE9C;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,CAAC;AAEhD;;;AAGG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,8BAA8B,CAAC;AACjE,IAAA;8GA9BY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBxB;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8zFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlBS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAsBX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;GAiBT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8zFAAA,CAAA,EAAA;;;ACzCjD;;;;;;;;;;;;;;;;AAgBG;MA6BU,2BAA2B,CAAA;AA5BxC,IAAA,WAAA,GAAA;AA6BE;;;AAGG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEhC;;;AAGG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,CAAC;AAElD;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEhC;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAW;AAExC;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAsB,SAAS,CAAC;AAErD;;;;AAIG;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,aAAa,KAAK;AAC1C,kBAAE;AACF,kBAAE,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YACjC,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU;AAE5C,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,SAAS,EAAE;gBACzD,OAAO,CAAA,YAAA,EAAe,KAAK,CAAA,CAAE;YAC/B;YAEA,OAAO,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAE;AAClC,QAAA,CAAC,CAAC;AACH,IAAA;8GArDY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxB5B;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qyFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArBS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyBX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA5BvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;;;;GAoBT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,qyFAAA,CAAA,EAAA;;;MCqBpC,6BAA6B,CAAA;AAhD1C,IAAA,WAAA,GAAA;;AAkDmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGvC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAU;;QAGjC,IAAA,CAAA,IAAI,GAAG,MAAM,EAAQ;;AAGrB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAClD;AACQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAA,CAAA,OAAO,GAAG,QAAQ,CACzB,MACE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CACvD,cAAc,CACf,IAAI,EAAE,CACV;AACQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CACzC;;QAGS,IAAA,CAAA,YAAY,GAAG,KAAK;QACb,IAAA,CAAA,SAAS,GAAG,IAAI;AA2BlC,IAAA;;IAxBC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IAClB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;8GAzDW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7C9B;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ywFAAA,CAAA,EAAA,UAAA,EAEW;YACV,OAAO,CAAC,kBAAkB,EAAE;AAC1B,gBAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,mCAAmC;AAC/C,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,gCAAgC;AAC5C,iBAAA,CAAC,CACH;gBACD,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5D,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;aAC5D,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,UAAA,EAEW;wBACV,OAAO,CAAC,kBAAkB,EAAE;AAC1B,4BAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,mCAAmC;AAC/C,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,gCAAgC;AAC5C,6BAAA,CAAC,CACH;4BACD,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;4BAC5D,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;yBAC5D,CAAC;qBACH,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,ywFAAA,CAAA,EAAA;;;MCdpC,yBAAyB,CAAA;AA/CtC,IAAA,WAAA,GAAA;AAgDW,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAA2B;QAClD,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QACvB,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;QACzB,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;AAEzB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;AAarE,IAAA;IAXW,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;8GAnBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5C1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6vIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA/CrC,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6vIAAA,CAAA,EAAA;;;MCmDpC,uBAAuB,CAAA;AAjFpC,IAAA,WAAA,GAAA;AAkFE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAa,iBAAiB,CAAC;AACnE,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,6BAA6B,CAAC;AAE7D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAA2B;AACnD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAY;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;QAChC,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC1E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;AACzB,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,QAAQ;AACX,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,GAAG;AACZ,gBAAA;AACE,oBAAA,OAAO,GAAG;;AAEhB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACpB,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;AACzB,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,QAAQ;AACX,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,GAAG;AACZ,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,GAAG;AACZ,gBAAA;AACE,oBAAA,OAAO,GAAG;;AAEhB,QAAA,CAAC,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC3D,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC;AAC1C,YAAA,MAAM,OAAO,GAAG,YAAY,GAAG,gBAAgB,GAAG,EAAE;YACpD,OAAO;AACL,gBAAA;AACE,oBAAA,OAAO,EAAE,QAAiB;AAC1B,oBAAA,OAAO,EAAE,QAAiB;AAC1B,oBAAA,QAAQ,EAAE,QAAiB;AAC3B,oBAAA,QAAQ,EAAE,QAAiB;AAC3B,oBAAA,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC7C,OAAO;AACR,iBAAA;aACF;AACH,QAAA,CAAC,CAAC;AAeH,IAAA;IAbC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC7C;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IAChC;IAEA,2BAA2B,GAAA;QACzB,MAAM,mBAAmB,GACvB,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE;AAChE,QAAA,OAAO,mBAAmB,EAAE,IAAI,IAAI,CAAC;IACvC;8GAlEW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGH,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1ElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3CC,mBAAmB,2+BACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,6BAA6B,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EA0Cb;YACV,OAAO,CAAC,gBAAgB,EAAE;gBACxB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,OAAO,CACL,oCAAoC,EACpC,KAAK,CAAC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAE,CAAC;AACX,qBAAA,CAAC,CACH;iBACF,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,OAAO,CACL,oCAAoC,EACpC,KAAK,CAAC;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,OAAO,EAAE,CAAC;AACX,qBAAA,CAAC,CACH;iBACF,CAAC;aACH,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjFnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,aAAa;wBACb,yBAAyB;wBACzB,6BAA6B;wBAC7B,uBAAuB;qBACxB,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC;wBACV,OAAO,CAAC,gBAAgB,EAAE;4BACxB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC;AACJ,oCAAA,SAAS,EAAE,kBAAkB;AAC7B,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;AACF,gCAAA,OAAO,CACL,oCAAoC,EACpC,KAAK,CAAC;AACJ,oCAAA,SAAS,EAAE,eAAe;AAC1B,oCAAA,OAAO,EAAE,CAAC;AACX,iCAAA,CAAC,CACH;6BACF,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC;AACJ,oCAAA,SAAS,EAAE,eAAe;AAC1B,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;AACF,gCAAA,OAAO,CACL,oCAAoC,EACpC,KAAK,CAAC;AACJ,oCAAA,SAAS,EAAE,kBAAkB;AAC7B,oCAAA,OAAO,EAAE,CAAC;AACX,iCAAA,CAAC,CACH;6BACF,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,MAAA,EAAA,CAAA,m0DAAA,CAAA,EAAA;;;MCzEU,wBAAwB,CAAA;AAjBrC,IAAA,WAAA,GAAA;AAkBE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEhC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,MAAM,CAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC;AACpC,IAAA;8GAPY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbzB;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,43EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAVS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAcV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAjBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,QAAA,EACZ;;;;;;;;;GAST,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,43EAAA,CAAA,EAAA;;;MCuDpC,yBAAyB,CAAA;AA1DtC,IAAA,WAAA,GAAA;AA2DW,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAEhE,IAAA,CAAA,KAAK,GAAG,KAAK,EAAU;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAkB;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqB,QAAQ,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM;aACzD,QAAQ,CAAC,EAAE;AACX,aAAA,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACjB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1E,YAAA,OAAO,QAAQ,EAAE,KAAK,IAAI,EAAE;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAwB;AAC/B,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC,CAAC;AACZ,aAAA;SACF;AAcF,IAAA;IAZC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,YAAY,CAAC,MAAoB,EAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;IACd;8GAhDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtD1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+pLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnDS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,0rCAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAuDtD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA1DrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,+pLAAA,CAAA,EAAA;;;MCzEpC,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,MAAM,GAAG,kBAAkB;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,MAAM;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,UAAU;AAyEzD,IAAA;IAvEQ,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACxB,QAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD;AAEO,IAAA,GAAG,CAAI,GAAW,EAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1C,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;IACvC;AAEO,IAAA,MAAM,CAAC,GAAW,EAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACpC,QAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IAC7B;IAEO,cAAc,GAAA;QACnB,MAAM,QAAQ,GAA4B,EAAE;AAE5C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK;YACvB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,QAAQ;IACjB;AAEO,IAAA,cAAc,CAAC,QAAiC,EAAA;AACrD,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAChD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,QAAA,CAAC,CAAC;IACJ;IAEO,gBAAgB,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACjE;AAEQ,IAAA,UAAU,CAAC,GAAW,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC7B;QACF;AACA,QAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnE;AAEQ,IAAA,aAAa,CAAC,GAAW,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AACtC,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B;AACA,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnE;AAEQ,IAAA,UAAU,CAAC,GAAW,EAAA;QAC5B,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG;IAC5D;8GA1EW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACKlC;;;;;;;;;;AAUG;MAEU,oCAAoC,CAAA;AA4B/C,IAAA,WAAA,GAAA;QA3BiB,IAAA,CAAA,WAAW,GAAG,cAAc;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;QACpE,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAyB;AAC1E,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;AAE5E;;AAEG;QACI,IAAA,CAAA,SAAS,GAAuC,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe;SACrB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACrF;AAED;;AAEG;AACI,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAG9D,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA;;;;;;AAMG;AACH,IAAA,cAAc,CAAC,QAAgC,EAAA;;QAE7C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACxE,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;QAC/C;;AAGA,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC;AACzE,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;QAC/E;;QAGA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YACjD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;YACvC,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,EAAE,CAAA,gBAAA,CAAkB,CAAC;YACxD;YACA,OAAO;AACL,gBAAA,GAAG,OAAO;AACV,gBAAA,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,IAAI;aAClC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/C,IAAI,CAAC,2BAA2B,EAAE;IACpC;AAEA;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC/C;AAEA;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,GAAG,CAAC,CAAC,QAAQ,KAAI;;YAEf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,CACH;IACH;AAEA;;;;;;AAMG;IACH,UAAU,CAAC,SAAiB,EAAE,SAAkB,EAAA;QAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;;AAG9D,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,SAAS,CAAC;AAC3D,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,SAAS,CAAC;;QAG7D,IAAI,SAAS,EAAE;AACb,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5B;aAAO;AACL,YAAA,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7B;QAEA,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;AAC/D,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACnC;AAEA;;;;;AAKG;AACH,IAAA,qBAAqB,CAAC,SAAiB,EAAA;QACrC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AAE9D,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,SAAS,CAAC;AACjD,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,SAAS,CAAC;SACpD;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACnC;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAA6B,EAAA;AAC5C,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;;QAG3E,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEtF,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,YAAA,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACrE;AAED,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,+CAAA,EAAkD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;QACzF;QAEA,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACvC;AAEA;;;;;AAKG;IACH,qBAAqB,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;QAC9C,OAAO;AACL,YAAA,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,YAAA,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC9B;IACH;AAEA;;;;;;AAMG;IACK,gBAAgB,CACtB,WAAmC,EACnC,WAAmC,EAAA;;QAGnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACjC,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AAC5D,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9D,YAAA,MAAM,QAAQ,GAAG,WAAW,IAAI,YAAY;YAE5C,OAAO;AACL,gBAAA,GAAG,OAAO;AACV,gBAAA,SAAS,EAAE,WAAW,GAAG,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC,SAAS;gBACxE,QAAQ;gBACR,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS;aACxD;AACH,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAyB,IAAI,CAAC,WAAW,CAAC;YAEpF,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,KAAK,CAAC;;QAE/E;IACF;AAEA;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,KAA6B,EAAA;AACtD,QAAA,IAAI;YACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QAClD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC;;QAEzE;IACF;AAEA;;;AAGG;IACK,2BAA2B,GAAA;AACjC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3E,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;QAE3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KACxD,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClC;QACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAC1D,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClC;AAED,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChF,YAAA,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAClF;AAED,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,+CAAA,EAAkD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;YAEvF,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvE,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACvC;IACF;8GAzQW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApC,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,oCAAoC,cADvB,MAAM,EAAA,CAAA,CAAA;;2FACnB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACAlC;;;;;;;;;;;;;AAaG;MA6GU,kCAAkC,CAAA;AA5G/C,IAAA,WAAA,GAAA;;AA8GmB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oCAAoC,CAAC;;AAG/D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAmB,KAAK,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;gBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;gBACnD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC9C,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;AAEnE,gBAAA,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,oBAAA,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AAChC,oBAAA,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAEzC,gBAAA,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK;qBAC5B,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;qBACrD,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;AACxD,qBAAC,IAAI,CAAC,YAAY,EAAE,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAE5D,OAAO,aAAa,IAAI,aAAa;AACvC,YAAA,CAAC,CAAC;;YAGF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAK,CAAC,CAC3C;;AAGkB,QAAA,IAAA,CAAA,OAAO,GAAG;AAC3B,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,WAAW,EAAE,sEAAsE;AACnF,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,EAAE,EAAE,kBAAkB;SACI;AAET,QAAA,IAAA,CAAA,aAAa,GAAG;AACjC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;AACvC,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;SACzC;AAEkB,QAAA,IAAA,CAAA,mBAAmB,GAAG;AACvC,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;AACnC,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;SAClC;AAqDF,IAAA;;AAlDC;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAyB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAyB,CAAC;QACzD;IACF;AAEA;;;;;AAKG;IACH,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC9C,QAAQ,KAAK;AACX,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBACxD;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;gBACnD;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;gBACpD;;IAEN;AAEA;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;;AAGA;;;;;AAKG;AACO,IAAA,eAAe,CAAC,OAA6B,EAAA;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QAChC,OAAO,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK;IACzC;8GA7GW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA3DC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,2BAA2B,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAkGlB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA5G9C,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,uBAAuB;wBACvB,uBAAuB;wBACvB,2BAA2B;qBAC5B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDT,EAAA,eAAA,EA2CgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;;MC7HpC,oCAAoC,CAAA;AAyC/C,IAAA,WAAA,GAAA;QAxCiB,IAAA,CAAA,WAAW,GAAG,eAAe;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAmB,EAAE,CAAC;QACrD,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAmB;AACjE,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAE/D,IAAA,CAAA,MAAM,GAAiC,aAAa,CAAC;AAC1D,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAI;;YAExC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,QAAQ;YACjB;AAEA,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC3B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxE,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,QAAQ;oBACR,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,0BAAE;0BACA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC3B,8BAAE;8BACA,IAAI,CAAC,SAAS;oBAClB,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS;iBACrD;AACH,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;AAEM,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAGxD,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;IACtC;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,GAAG,CAAC,CAAC,KAAK,KAAI;;YAEZ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QAC9C,CAAC,CAAC,CACH;IACH;IAEA,OAAO,CAAC,MAAc,EAAE,SAAkB,EAAA;QACxC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAE3D,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;QAE1D,IAAI,SAAS,EAAE;AACb,YAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB;aAAO;AACL,YAAA,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B;QAEA,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;AAC/D,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;AAEA,IAAA,kBAAkB,CAAC,MAAc,EAAA;QAC/B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAE3D,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;AAC9C,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;SACjD;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CACxC,IAAI,CAAC,WAAW,CACjB;QAED,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1C;IACF;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,WAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IACxD;AAEA;;;AAGG;IACH,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;IACtC;8GAvHW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApC,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,oCAAoC,cADvB,MAAM,EAAA,CAAA,CAAA;;2FACnB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCgHrB,mCAAmC,CAAA;AA3GhD,IAAA,WAAA,GAAA;;AA6GmB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,oCAAoC,CAAC;;AAGzD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAoB,KAAK,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;gBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACxC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;AAE7D,gBAAA,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,WAAW,EAAE;oBACnB,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBACzD,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAElE,gBAAA,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK;qBAC5B,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;qBAClD,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;AACrD,qBAAC,IAAI,CAAC,YAAY,EAAE,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAEzD,OAAO,aAAa,IAAI,aAAa;AACvC,YAAA,CAAC,CAAC;;YAGF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAC9C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,CACxC;;AAGkB,QAAA,IAAA,CAAA,OAAO,GAAG;AAC3B,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,WAAW,EAAE,mDAAmD;AAChE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,MAAM,EAAE,IAAI;SACc;AAET,QAAA,IAAA,CAAA,aAAa,GAAG;AACjC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;SACzC;AAEkB,QAAA,IAAA,CAAA,gBAAgB,GAAG;AACpC,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;AACrC,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;SACpC;AAiCF,IAAA;;AA9BC,IAAA,cAAc,CAAC,KAAyB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAA0B,CAAC;QAC1D;IACF;IAEA,YAAY,CAAC,MAAc,EAAE,KAAa,EAAA;QACxC,QAAQ,KAAK;AACX,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBAC5C;AACF,YAAA,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBACvC;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxC;;IAEN;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;;AAGU,IAAA,YAAY,CAAC,IAAoB,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QAC7B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK;IACtC;8GA1FW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/FpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1DC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,2BAA2B,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAiGlB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBA3G/C,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,uBAAuB;wBACvB,uBAAuB;wBACvB,2BAA2B;qBAC5B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDT,EAAA,eAAA,EA2CgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;;MC9FpC,yBAAyB,CAAA;AAxBtC,IAAA,WAAA,GAAA;AAyBW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,CAAC;AACrD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,CAAC;QAC9C,IAAA,CAAA,IAAI,GAAG,KAAK,EAAY;QACxB,IAAA,CAAA,KAAK,GAAG,KAAK,EAAU;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,EAAU;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAC1C,IAAA;8GAPY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApB1B;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sqFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAqBtB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAxBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,CAAC,EAAA,QAAA,EACxB;;;;;;;;;;;;;;;;GAgBT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,sqFAAA,CAAA,EAAA;;;MCHpC,uBAAuB,CAAA;AArBpC,IAAA,WAAA,GAAA;AAsBW,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAO,SAAS,CAAC;AACrB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAK7C,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;IAClB;8GANW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBxB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0pEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;GAcT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0pEAAA,CAAA,EAAA;;;MCIpC,gCAAgC,CAAA;AApB7C,IAAA,WAAA,GAAA;AAqBW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAY;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAO,SAAS,CAAC;AAKzC,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;IAClB;8GARW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBjC;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,q7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,uBAAuB,qDAAE,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAiB/C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBApB5C,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,EAAA,QAAA,EACjD;;;;;;;;;;;;GAYT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,q7EAAA,CAAA,EAAA;;;MCGpC,6BAA6B,CAAA;AAtB1C,IAAA,WAAA,GAAA;AAuBW,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAY;AAC3C,IAAA;8GAHY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlB9B;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,s6EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAmBtB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAtBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,CAAC,EAAA,QAAA,EACxB;;;;;;;;;;;;;;GAcT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,s6EAAA,CAAA,EAAA;;;MCnBpC,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,WAAW,GAAG,UAAU;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAajE,IAAA;IAXQ,WAAW,GAAA;QAChB,QACE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAW,IAAI,CAAC,WAAW,CAAC,IAAI;AACrD,YAAA,UAAU,EAAE,KAAK;AAClB,SAAA;IAEL;AAEO,IAAA,WAAW,CAAC,QAAkB,EAAA;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;8GAdW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,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,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC2ErB,2BAA2B,CAAA;AA7DxC,IAAA,WAAA,GAAA;AA8DqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAEvD,IAAA,CAAA,KAAK,GAAG,KAAK,EAAmB;QAChC,IAAA,CAAA,KAAK,GAAG,qBAAqB;AAC7B,QAAA,IAAA,CAAA,OAAO,GAA4B;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,MAAM,EAAE,IAAI;SACb;AAEQ,QAAA,IAAA,CAAA,KAAK,GAAG;AACf,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,GAAG,EAAE,wDAAwD;AAC7D,gBAAA,KAAK,EAAE,YAAY;AACpB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,GAAG,EAAE,6DAA6D;AAClE,gBAAA,KAAK,EAAE,aAAa;AACrB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,iDAAiD;AACtD,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,iDAAiD;AACtD,gBAAA,KAAK,EAAE,gBAAgB;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,GAAG,EAAE,oCAAoC;AACzC,gBAAA,KAAK,EAAE,WAAW;AACnB,aAAA;SACO;AA6CX,IAAA;IA3CC,gBAAgB,GAAA;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACzD,YAAA,IAAI,EAAE,kBAAkB;AACzB,SAAA,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,yBAAA,EAA4B,SAAS,OAAO;AAC5D,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;IAC1B;IAEA,gBAAgB,GAAA;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAA,KAAK,CAAC,IAAI,GAAG,MAAM;AACnB,QAAA,KAAK,CAAC,MAAM,GAAG,kBAAkB;AACjC,QAAA,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAI;YACzB,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,GAAG,CAAC,CAAC;YAC1D,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,gBAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAI;AACpB,oBAAA,IAAI;AACF,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,MAAgB,CAAC;AACvD,wBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5C,wBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC1B;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;oBACnD;AACF,gBAAA,CAAC;AACD,gBAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB;AACF,QAAA,CAAC;QACD,KAAK,CAAC,KAAK,EAAE;IACf;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;AACtC,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC1B;8GAtFW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnD5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yuFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArDC,uBAAuB,kGACvB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,gCAAgC,sGAChC,6BAA6B,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAqDpB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA7DvC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP;wBACP,uBAAuB;wBACvB,WAAW;wBACX,yBAAyB;wBACzB,gCAAgC;wBAChC,6BAA6B;qBAC9B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,yuFAAA,CAAA,EAAA;;;MCrEpC,iCAAiC,CAAA;AAU5C,IAAA,WAAA,GAAA;QATiB,IAAA,CAAA,WAAW,GAAG,UAAU;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAEtD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAGhE,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,eAAe,CAAC,SAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACvC;AAEA,IAAA,iBAAiB,CAAC,QAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,QAAQ,KAAI;;YAEf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,EAAE;YACX;YACA,OAAO,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QACnC,CAAC,CAAC,CACH;IACH;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IAC9C;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAW,IAAI,CAAC,WAAW,CAAC;QACzE,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1C;IACF;AAEA;;;AAGG;IACH,MAAM,mBAAmB,CAAC,UAAyB,EAAA;AACjD,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;;QAGA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC;QAEjE,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CACV,YAAY,UAAU,CAAA,4CAAA,CAA8C,CACrE;QACH;IACF;AAEA;;;AAGG;IACH,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI;IAC/C;8GAhFW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjC,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,iCAAiC,cADpB,MAAM,EAAA,CAAA,CAAA;;2FACnB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCsBrB,+BAA+B,CAAA;AApB5C,IAAA,WAAA,GAAA;AAqBmB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iCAAiC,CAAC;AAEzD,QAAA,IAAA,CAAA,OAAO,GAAG;AAC3B,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,WAAW,EAAE,2CAA2C;AACxD,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,IAAI;SACU;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,YAAY,CAAC;AAE7C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CACxB,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,SAAS,KAAK;AACjB,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,YAAA,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;gBAChD,KAAK;gBACL,KAAK;AACN,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,EACD,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB;AAgBF,IAAA;IAdC,MAAM,gBAAgB,CAAC,QAAgB,EAAA;AACrC,QAAA,IAAI,QAAQ,KAAK,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;YAC3C;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CACvC;AACD,QAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,QAAQ,CAAC;QACpE,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAA4B,CAAC;QACtE;IACF;8GAxCW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfhC;;;;;;;;;;;;;GAaT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+3DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,uBAAuB,mGAAE,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAiBjD,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBApB3C,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,EAAA,QAAA,EAEnD;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+3DAAA,CAAA,EAAA;;;MChBU,oCAAoC,CAAA;AAyC/C,IAAA,WAAA,GAAA;QAxCiB,IAAA,CAAA,WAAW,GAAG,aAAa;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE7C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;QACjE,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAyB;AACvE,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,EAAE,EAAE;AACX,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAE/D,IAAA,CAAA,YAAY,GAAuC,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAI;;YAE5C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,cAAc;YACvB;AAEA,YAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;AACvC,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClF,OAAO;AACL,oBAAA,GAAG,UAAU;oBACb,QAAQ;oBACR,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACvC,0BAAE;0BACA,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC/B,8BAAE;8BACA,UAAU,CAAC,SAAS;oBACxB,aAAa,EAAE,QAAQ,GAAG,UAAU,CAAC,SAAS,GAAG,SAAS;iBAC3D;AACH,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;AAEM,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAGpE,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA,IAAA,iBAAiB,CAAC,WAAmC,EAAA;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;IAC/C;IAEA,aAAa,CAAC,EAAU,EAAE,OAAgB,EAAA;AACxC,QAAA,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAEhF,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/D,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,EAAE,CAAC;QAE7D,IAAI,OAAO,EAAE;AACX,YAAA,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB;aAAO;AACL,YAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB;QAEA,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3D,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;AAEA,IAAA,wBAAwB,CAAC,EAAU,EAAA;QACjC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAEzD,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,EAAE,CAAC;AAClD,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,EAAE,CAAC;SACjD;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrD;IAEA,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,WAAW,KAAI;;YAElB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAClC,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,CAAC;QAChE,CAAC,CAAC,CACH;IACH;AAEA;;;;AAIG;AACH,IAAA,sBAAsB,CAAC,KAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IAClD;AAEA;;;;AAIG;IACH,qBAAqB,GAAA;AACnB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;QAClD,OAAO;AACL,YAAA,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC;AAClC,YAAA,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;SACjC;IACH;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CACxC,IAAI,CAAC,WAAW,CACjB;YAED,IAAI,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,KAAK,CAAC;QAClF;IACF;AAEQ,IAAA,kBAAkB,CAAC,KAAc,EAAA;QACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,SAAS,GAAG,KAAgC;QAClD,QACE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACnC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEtC;AAEQ,IAAA,2BAA2B,CAAC,WAAmC,EAAA;AACrE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAClD,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1E,MAAM,aAAa,GACjB,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,MAAM;YACrD,aAAa,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,MAAM;QAErD,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,MAAM,EAAE,aAAa;aACtB;AACD,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;AAEvD,YAAA,MAAM,UAAU,GAAG;AACjB,gBAAA,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,gBAAA,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACzD;AACD,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CACV,mDAAmD,EACnD,UAAU,CACX;YACH;QACF;IACF;8GA1KW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApC,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,oCAAoC,cADvB,MAAM,EAAA,CAAA,CAAA;;2FACnB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCyHrB,kCAAkC,CAAA;AA9G/C,IAAA,WAAA,GAAA;;AAgHmB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAC1C,oCAAoC,CACrC;;AAGkB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAmB,KAAK,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,CACtC;AACkB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACrD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,KAAI;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;gBACnD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE;gBACpD,MAAM,qBAAqB,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;AAEzE,gBAAA,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,oBAAA,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC;AACnC,oBAAA,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAE5C,gBAAA,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK;qBAC5B,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC;qBACxD,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC;AAC3D,qBAAC,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAE7D,OAAO,aAAa,IAAI,aAAa;AACvC,YAAA,CAAC,CAAC;;YAGF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CACpD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,CAC9C;;AAGkB,QAAA,IAAA,CAAA,OAAO,GAAG;AAC3B,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,WAAW,EAAE,sDAAsD;AACnE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,MAAM,EAAE,IAAI;SACc;AAET,QAAA,IAAA,CAAA,aAAa,GAAG;AACjC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC1C,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC;AAEkB,QAAA,IAAA,CAAA,sBAAsB,GAAG;AAC1C,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;AAC3C,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;SAC9C;AAiCF,IAAA;;AA9BC,IAAA,cAAc,CAAC,KAAyB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAyB,CAAC;QACzD;IACF;IAEA,kBAAkB,CAAC,EAAU,EAAE,KAAa,EAAA;QAC1C,QAAQ,KAAK;AACX,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACpD;AACF,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC;gBAC/C;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC;gBAChD;;IAEN;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;;AAGU,IAAA,kBAAkB,CAAC,UAAgC,EAAA;QAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QACnC,OAAO,UAAU,CAAC,SAAS,GAAG,SAAS,GAAG,QAAQ;IACpD;8GA9FW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7DC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,2BAA2B,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAoGlB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA9G9C,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,uBAAuB;wBACvB,uBAAuB;wBACvB,2BAA2B;qBAC5B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDT,EAAA,eAAA,EA2CgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;;ACnHjD;;;AAGG;MAEU,gCAAgC,CAAA;AAe3C,IAAA,WAAA,GAAA;QAdiB,IAAA,CAAA,WAAW,GAAG,SAAS;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAG/C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,oCAAoC,CAAC;AAClE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iCAAiC,CAAC;AAC3D,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oCAAoC,CAAC;AACjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oCAAoC,CAAC;AAEjE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,QAAQ,GACb,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAG5D,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;AAEG;AACH,IAAA,mBAAmB,CACjB,IAAY,EACZ,WAAoB,EACpB,eAAuC,EAAA;AAEvC,QAAA,MAAM,MAAM,GAAqB;AAC/B,YAAA,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE;YACrB,IAAI;YACJ,WAAW;AACX,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;SACnD;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AAElD,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;IACH,MAAM,WAAW,CAAC,QAAgB,EAAA;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;AACvE,QAAA,IAAI,CAAC,MAAM;YAAE;;QAGb,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AACrE,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QACzE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IACrE;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACvD,YAAA,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE;gBAC1B,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,oBAAA,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE;iBACpC;YACH;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CACzB;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,MAAwB,EAAA;;AAEhC,QAAA,MAAM,SAAS,GAAqB;AAClC,YAAA,GAAG,MAAM;AACT,YAAA,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE;AACrB,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AAElD,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,QAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;IACjE;AAEA;;AAEG;AACK,IAAA,oBAAoB,CAC1B,eAAuC,EAAA;;AAGvC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,IAAI,IAAI;AACjE,YAAA,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,IAAI,IAAI;AAC/D,YAAA,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,IAAI,IAAI;AAC/D,YAAA,eAAe,EAAE,eAAe,EAAE,eAAe,IAAI,IAAI;SAC1D;;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;;AAGvE,QAAA,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE,QAAmB,KACpD,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;QAEnF,OAAO;YACL,YAAY,EAAE,OAAO,CAAC;AACpB,kBAAE;oBACE,OAAO,EAAE,UAAU,CACjB,YAAY,CAAC,OAAO,EACpB,eAAe,EAAE,eAAe,CACjC;oBACD,QAAQ,EAAE,UAAU,CAClB,YAAY,CAAC,QAAQ,EACrB,eAAe,EAAE,eAAe,CACjC;AACF;kBACD,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjC,QAAQ,EAAE,OAAO,CAAC;AAChB,kBAAE,IAAI,CAAC,eAAe,CAAC,wBAAwB;AAC/C,kBAAE,IAAI;YACR,WAAW,EAAE,OAAO,CAAC;AACnB,kBAAE;oBACE,OAAO,EAAE,UAAU,CACjB,YAAY,CAAC,OAAO,EACpB,eAAe,EAAE,qBAAqB,CACvC;oBACD,MAAM,EAAE,UAAU,CAChB,YAAY,CAAC,MAAM,EACnB,eAAe,EAAE,qBAAqB,CACvC;AACF;kBACD,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC/B,WAAW,EAAE,OAAO,CAAC;AACnB,kBAAE;oBACE,OAAO,EAAE,UAAU,CACjB,eAAe,CAAC,OAAO,EACvB,eAAe,EAAE,kBAAkB,CACpC;oBACD,QAAQ,EAAE,UAAU,CAClB,eAAe,CAAC,QAAQ,EACxB,eAAe,EAAE,kBAAkB,CACpC;AACF;kBACD,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;SAClC;IACH;AAEA;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAqB,IAAI,CAAC,WAAW,CAAC;YAC/D,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC;QACnE;IACF;AAEA;;AAEG;IACK,UAAU,GAAA;QAChB,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;IAC1E;8GAvMW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhC,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,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA;;2FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCwkBrB,8BAA8B,CAAA;AAtkB3C,IAAA,WAAA,GAAA;;AAwkBmB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAC3C,oCAAoC,CACrC;AACgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAC1C,oCAAoC,CACrC;AACgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAC1C,oCAAoC,CACrC;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iCAAiC,CAAC;AACzD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAGtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,MAAM,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAS,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAU,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAU,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAU,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,IAAI,CAAC;;AAGvC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC;AAEnD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;YAC9C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAC1B,CAAC,MAAM,KACL,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACpD;AACH,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,CAClC;AACkB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,CAC1C;;AAGkB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,oBAAoB,IAAI,IAAI,CACvD;AACkB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAChD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,mBAAmB,IAAI,IAAI,CACtD;AACkB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAChD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,mBAAmB,IAAI,IAAI,CACtD;AACkB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,gBAAgB,IAAI,IAAI,CACnD;;AAGkB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;AACzE,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC9E,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC3E,QAAA,CAAC,CAAC;;AAGiB,QAAA,IAAA,CAAA,OAAO,GAA4B;AACpD,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,sCAAsC;AACnD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,MAAM,EAAE,IAAI;SACb;AA6HF,IAAA;;AA1HC,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;;AAE9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAClE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,KAAK,YAAY,CAAC;;QAGvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACnD;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACnD;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3B;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CACrC,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,iBAAiB,EAAE,EACxB;AACE,YAAA,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC/C,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACnD,qBAAqB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/D,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1D,SAAA,CACF;QACD,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,aAAa,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC3C;AAEA,IAAA,cAAc,CAAC,QAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC5C;AAEA,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;AAC5D,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO;QAC/E,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;IAC1B;AAEA,IAAA,cAAc,CAAC,QAAgB,EAAA;AAC7B,QAAA,IAAI,OAAO,CAAC,8CAA8C,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC5C;IACF;;IAGU,oBAAoB,GAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;IACrD;IAEU,0BAA0B,GAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;IACnD;IAEU,0BAA0B,GAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;IACrD;IAEU,kBAAkB,GAAA;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,IAAI,YAAY;IACxE;AAEU,IAAA,UAAU,CAAC,SAAiB,EAAA;QACpC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE;IACjD;AAEA;;AAEG;IACO,mBAAmB,CAC3B,MAAmC,EACnC,MAAc,EAAA;QAEd,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACjC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACxB;aAAO;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACrB;AACA,QAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IACrB;AAEA;;AAEG;IACO,cAAc,CAAC,WAAwB,EAAE,MAAc,EAAA;AAC/D,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;IAChC;8GA5MW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5jB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkRT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sqIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxRC,WAAW,8dACX,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,8HACzB,uBAAuB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA8jBd,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAtkB1C,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,uBAAuB;qBACxB,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkRT,EAAA,eAAA,EAwSgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,sqIAAA,CAAA,EAAA;;;MCzfpC,mBAAmB,CAAA;AAoB9B,IAAA,WAAA,GAAA;AAnBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAmB,EAAE,CAAC;AAG5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAgB,MAAM,EAAE,SAAS;AAClE,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EACvE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAa,QAAQ,EAAE,YAAY;AAC9D,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAC5D,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;;QAIrC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;;AAEzB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE;IACnC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IAChC;IAEA,YAAY,GAAA;QACV,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvE;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACnD;AAEA;;;;AAIG;IACK,kBAAkB,GAAA;;QAExB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE;YACpD;QACF;QAEA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC9D,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,kBAAkB;AAC/C,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0DrC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzD;8GA3HW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnDpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArCC,2BAA2B,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,+BAA+B,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/B,mCAAmC,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,kCAAkC,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,kCAAkC,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,8BAA8B,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,UAAA,EAiCpB;YACV,OAAO,CAAC,cAAc,EAAE;AACtB,gBAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,oBAAA,SAAS,EAAE,uCAAuC;AACnD,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,oBAAA,SAAS,EAAE,wBAAwB;AACpC,iBAAA,CAAC,CACH;gBACD,UAAU,CAAC,oBAAoB,EAAE;oBAC/B,OAAO,CAAC,oCAAoC,CAAC;iBAC9C,CAAC;aACH,CAAC;AACH,SAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhE/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,aAAa,EAAA,aAAA,EAER,iBAAiB,CAAC,SAAS,EAAA,OAAA,EACjC;wBACP,2BAA2B;wBAC3B,+BAA+B;wBAC/B,mCAAmC;wBACnC,kCAAkC;wBAClC,kCAAkC;wBAClC,8BAA8B;qBAC/B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,UAAA,EACW;wBACV,OAAO,CAAC,cAAc,EAAE;AACtB,4BAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,gCAAA,SAAS,EAAE,uCAAuC;AACnD,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,gCAAA,SAAS,EAAE,wBAAwB;AACpC,6BAAA,CAAC,CACH;4BACD,UAAU,CAAC,oBAAoB,EAAE;gCAC/B,OAAO,CAAC,oCAAoC,CAAC;6BAC9C,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,MAAA,EAAA,CAAA,goFAAA,CAAA,EAAA;;;MCtFU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,oCAAoC,CAAC;AA4CvE,IAAA;AA1CC;;;AAGG;AACH,IAAA,mBAAmB,CAAC,KAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC;AAEA;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;IAC9C;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM;IACpC;8GA9CW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iCAAiC,CAAC;AA2BpE,IAAA;AAzBC;;;AAGG;AACH,IAAA,mBAAmB,CAAC,SAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC;IACjD;AAEA;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;IACjD;AAEA;;;;;AAKG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;IACjD;8GA3BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,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,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACAlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,oCAAoC,CAAC;AAkJvE,IAAA;AAhJC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACH,IAAA,mBAAmB,CAAC,QAAgC,EAAA;AAClD,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC/C;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;IACjD;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS;IACvC;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACH,IAAA,mBAAmB,CAAC,KAA6B,EAAA;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9C;AAEA;;;;;;;;;;;;;;;;;;;;;AAqBG;IACH,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE;IACrD;8GAlJW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpClC;;;;;;;;;;;;;;;;;;;;;AAqBG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,oCAAoC,CAAC;AAgGvE,IAAA;AA9FC;;;;;;;;;;;;;;;;;;AAkBG;AACH,IAAA,mBAAmB,CAAC,WAAmC,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,WAAW,CAAC;IACrD;AAEA;;;;;;;;;;;;;;AAcG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;IACpD;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY;IAC1C;AAEA;;;;;;;;;;;;AAYG;AACH,IAAA,WAAW,CAAC,KAA6B,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC;IACpD;AAEA;;;;AAIG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE;IACrD;8GAlGW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACXlC;;;AAGG;MAEU,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAkJnE,IAAA;AAhJC;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ;IACtC;AAEA;;;;;AAKG;IACH,UAAU,CAAC,IAAY,EAAE,WAAoB,EAAA;QAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC;IACpE;AAEA;;;AAGG;IACH,MAAM,WAAW,CAAC,QAAgB,EAAA;QAChC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnD;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7C;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7C;AAEA;;;;AAIG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC;AAEA;;;;;AAKG;AACH,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB;QACnD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/C;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDG;AACH,IAAA,iBAAiB,CAAC,OAAwB,EAAA;AACxC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KACxB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAC7B,EAAE,EAAE,EAAE;YACN,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,MAAM;AACV,SAAA,CAAC,CACH;IACH;AAEA;;;;;;AAMG;AACH,IAAA,iBAAiB,CAAC,OAAwB,EAAA;;QAExC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AACrD,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAChC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9C,QAAA,CAAC,CAAC;;AAGF,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACxC;8GAlJW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,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,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACrBlC;;AAEG;;;;"}