{"version":3,"file":"ngx-pendo.mjs","sources":["../../../projects/ngx-pendo/src/lib/ngx-pendo.tokens.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo.service.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo-id.directive.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo-section.directive.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo.injectors.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo.interfaces.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo.module.ts","../../../projects/ngx-pendo/src/lib/ngx-pendo.provide.ts","../../../projects/ngx-pendo/src/public-api.ts","../../../projects/ngx-pendo/src/ngx-pendo.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { PendoWindow } from './ngx-pendo.types';\nimport { IPendo, IPendoSettings } from './ngx-pendo.interfaces';\n\nexport const NGX_PENDO_SETTINGS_TOKEN = new InjectionToken<IPendoSettings>('ngx-pendo-settings', {\n  providedIn: 'root',\n  factory: () => ({ pendoApiKey: '' })\n});\n\nexport const NGX_PENDO_WINDOW = new InjectionToken<PendoWindow>('ngx-pendo-window', {\n  providedIn: 'root',\n  factory: () => {\n    const { defaultView } = inject(DOCUMENT);\n\n    if (!defaultView) {\n      throw new Error('Window is not available');\n    }\n\n    return defaultView;\n  }\n});\n\nexport const NGX_PENDO_CONTEXT = new InjectionToken<IPendo>('ngx-pendo-context', {\n  providedIn: 'root',\n  factory: () => inject(NGX_PENDO_WINDOW).pendo!\n});\n","import { Injectable, inject } from '@angular/core';\nimport { NGX_PENDO_CONTEXT, NGX_PENDO_SETTINGS_TOKEN } from './ngx-pendo.tokens';\nimport { IAccount, IPendoOptions, IVisitor } from './ngx-pendo.interfaces';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxPendoService {\n  private pendo = inject(NGX_PENDO_CONTEXT);\n  private pendoIdFormatter = inject(NGX_PENDO_SETTINGS_TOKEN).pendoIdFormatter;\n\n  /**\n   * Completely re-initialize the Agent with new options\n   *\n   * @param optionsOrVisitor IPendoOptions | IVisitor\n   * @param account IAccount\n   */\n  initialize(options: IPendoOptions): void;\n  initialize(visitor: IVisitor, account?: IAccount): void;\n  initialize(optionsOrVisitor: IPendoOptions | IVisitor, account?: IAccount): void {\n    if ('id' in optionsOrVisitor) {\n      this.pendo?.initialize({ visitor: optionsOrVisitor, account });\n    } else {\n      this.pendo?.initialize(optionsOrVisitor);\n    }\n  }\n\n  /**\n   * Send an identify event and a meta event.\n   *\n   * @param visitor IVisitor | string\n   * @param account IAccount | string\n   */\n  identify(visitor: string, account?: string): void;\n  identify(visitor: IVisitor, account?: IAccount): void;\n  identify(visitor: IVisitor | string, account?: IAccount | string): void {\n    if (typeof visitor === 'string' && (!account || typeof account === 'string')) {\n      this.pendo?.identify(visitor, account);\n    } else {\n      this.pendo?.identify({ visitor: visitor as IVisitor, account: account as IAccount });\n    }\n  }\n\n  /**\n   * Updates metadata object for the Pendo agent.\n   *\n   * @param options IPendoOptions\n   */\n  updateOptions(options: IPendoOptions): void {\n    this.pendo?.updateOptions(options);\n  }\n\n  /**\n   * Format Pendo\n   *\n   * @param ids string[]\n   */\n  formatPendoId(...ids: string[]): string {\n    return (this.pendoIdFormatter ? ids.map(id => this.pendoIdFormatter!(id)) : ids).join('.');\n  }\n\n  /**\n   * Shuts down the agent and cleans up all timers and listeners.\n   */\n  teardown(): void {\n    this.pendo?.teardown();\n  }\n\n  /**\n   * Checks if a given visitor id string is anonymous.\n   * If no argument is given, calls with pendo.getVisitorId() to check current visitor status.\n   */\n  isAnonymousVisitor(visitorId?: string): boolean {\n    return this.pendo?.isAnonymousVisitor(visitorId);\n  }\n\n  /**\n   * Removes current visitor id and account id.\n   * Triggers an identify event and reloads with a new anonymous visitor.\n   */\n  clearSession(): void {\n    this.pendo?.clearSession();\n  }\n\n  /**\n   * Loads Pendo Debugger and extends the global pendo object with additional functionality for debugging purposes.\n   */\n  enableDebugging(): void {\n    this.pendo?.enableDebugging();\n  }\n\n  /**\n   * Removes Pendo Debugger extension.\n   */\n  disableDebugging(): void {\n    this.pendo?.disableDebugging();\n  }\n\n  /**\n   * Method to manually track events. Requires a non-empty name string to collect event.\n   */\n  track(trackType: string, metadata?: Record<string, string | number | boolean | string[] | null>): void {\n    this.pendo?.track(trackType, metadata);\n  }\n}\n","import { Directive, inject, input, computed, signal } from '@angular/core';\nimport { IPendoDirective } from './ngx-pendo.interfaces';\nimport { NgxPendoService } from './ngx-pendo.service';\nimport { NgxPendoSectionDirective } from './ngx-pendo-section.directive';\n\n@Directive({\n  selector: '[ngx-pendo-id]',\n  standalone: true,\n  host: {\n    '[attr.data-pendo-id]': 'mergedPendoId()',\n    '[attr.ngx-pendo-disable-inherit]': 'disableInherit()'\n  }\n})\nexport class NgxPendoIdDirective implements IPendoDirective {\n  pendoId = input<string>('', { alias: 'ngx-pendo-id' });\n\n  inherit = input<boolean>(true, { alias: 'ngx-pendo-inherit' });\n\n  parent = signal<NgxPendoSectionDirective | undefined>(undefined);\n\n  mergedPendoId = computed<string>(() => {\n    const pendoSections = [];\n\n    let cur = this.inherit() ? this.parent() : null;\n    while (cur) {\n      pendoSections.unshift(cur.pendoSection());\n      cur = cur.inherit() ? cur.parent() : null;\n    }\n\n    return this.service.formatPendoId(...pendoSections, this.pendoId());\n  });\n\n  disableInherit = computed<boolean | undefined>(() => (this.inherit() ? undefined : true));\n\n  service = inject(NgxPendoService);\n}\n","import { Directive, input, computed, signal, contentChildren, effect } from '@angular/core';\nimport { IPendoDirective } from './ngx-pendo.interfaces';\nimport { NgxPendoIdDirective } from './ngx-pendo-id.directive';\n\n@Directive({\n  selector: '[ngx-pendo-section]',\n  standalone: true,\n  host: {\n    '[attr.data-pendo-section]': 'pendoSection()',\n    '[attr.ngx-pendo-disable-inherit]': 'disableInherit()'\n  }\n})\nexport class NgxPendoSectionDirective implements IPendoDirective {\n  pendoSection = input<string>('', { alias: 'ngx-pendo-section' });\n\n  inherit = input<boolean>(true, { alias: 'ngx-pendo-inherit' });\n\n  parent = signal<NgxPendoSectionDirective | undefined>(undefined);\n\n  idDirectives = contentChildren(NgxPendoIdDirective, { descendants: false });\n\n  sectionDirectivs = contentChildren(NgxPendoSectionDirective, { descendants: false });\n\n  disableInherit = computed<boolean | undefined>(() => (this.inherit() ? undefined : true));\n\n  constructor() {\n    effect(() => {\n      [...this.idDirectives(), ...this.sectionDirectivs()].forEach(item => {\n        if (item !== this) {\n          item.parent.set(this);\n        }\n      });\n    });\n  }\n}\n","import { APP_INITIALIZER, isDevMode, Provider } from '@angular/core';\nimport { interval } from 'rxjs';\nimport { IPendoSettings } from './ngx-pendo.interfaces';\nimport { NGX_PENDO_WINDOW, NGX_PENDO_SETTINGS_TOKEN } from './ngx-pendo.tokens';\nimport { PendoWindow } from './ngx-pendo.types';\n\nconst DEFAULT_PENDO_SCRIPT_ORIGIN = 'https://cdn.pendo.io';\n\n// export const NGX_PENDO_INITIALIZER_PROVIDER = provideAppInitializer(() => {\n//   const initializerFn = pendoInitializer(inject(NGX_PENDO_SETTINGS_TOKEN), inject(NGX_PENDO_WINDOW));\n//   return initializerFn();\n// });\n\n// Keep the `APP_INITIALIZER` to support angular 17 and 18 version\nexport const NGX_PENDO_INITIALIZER_PROVIDER: Provider = {\n  provide: APP_INITIALIZER,\n  multi: true,\n  useFactory: pendoInitializer,\n  deps: [NGX_PENDO_SETTINGS_TOKEN, NGX_PENDO_WINDOW]\n};\n\nexport function pendoInitializer($settings: IPendoSettings, window: PendoWindow): () => Promise<void> {\n  return async () => {\n    const { pendoApiKey, pendoScriptOrigin } = $settings;\n    if (!pendoApiKey) {\n      if (isDevMode()) {\n        console.error('Empty api key for Pendo. Make sure to provide one when initializing NgxPendoModule.');\n      }\n\n      return;\n    }\n\n    await new Promise<void>(resolve => {\n      const script = document.createElement('script');\n      script.async = true;\n      script.src = `${pendoScriptOrigin || DEFAULT_PENDO_SCRIPT_ORIGIN}/agent/static/${pendoApiKey}/pendo.js`;\n      document.head.appendChild(script);\n      script.onerror = async () => {\n        // The script may have been blocked by an ad blocker\n        console.error('The pendo script may have been blocked.');\n        resolve();\n      };\n      script.onload = async () => {\n        // when enableDebugging should load extra js\n        const sub = interval(100).subscribe(() => {\n          if (window.pendo) {\n            sub.unsubscribe();\n            resolve();\n          }\n        });\n      };\n    });\n  };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport { InputSignal, WritableSignal, Provider } from '@angular/core';\n\nexport interface IPendoSettings {\n  pendoApiKey: string;\n  pendoScriptOrigin?: string;\n  pendoIdFormatter?: (pendoId: string) => string;\n  pendoInitializerProvider?: Provider;\n}\n\nexport interface IPendoDirective {\n  inherit: InputSignal<boolean>;\n  parent: WritableSignal<IPendoDirective | undefined>;\n}\n\n// The following interfaces and types are based on the Pendo documentation.\n// Please according to the Pendo documentation, here's the link: https://agent.pendo.io/\nexport interface IVisitor {\n  id: string;\n  [key: string]: string;\n}\n\nexport interface IAccount {\n  id: string;\n  [key: string]: string;\n}\n\nexport interface IPendoIdentity {\n  visitor?: IVisitor;\n  account?: IAccount;\n}\n\nexport interface IPendoOptions extends IPendoIdentity {\n  // Core\n  additionalApiKeys?: string[];\n  annotateUrl?: Function;\n  apiKey?: string;\n  appAutoOrdering?: string[];\n  autoFrameInstall?: boolean;\n  contentHost?: string;\n  cookieDomain?: string;\n  dataHost?: string;\n  disableCookies?: boolean;\n  disableFeedback?: boolean;\n  disablePendo?: boolean;\n  disablePersistence?: boolean;\n  frameIdentitySync?: boolean;\n  ignoreHashRouting?: boolean;\n  initializeImmediately?: boolean;\n  observeShadowRoots?: boolean;\n  leaderKey?: string[];\n  localStorageOnly?: boolean;\n  preferBroadcastChannel?: boolean;\n  preferMutationObserver?: boolean;\n  preventUnloadListener?: boolean;\n  queryStringWhitelist?: string[] | Function;\n  sanitizeUrl?: Function;\n  selfHostedAgentUrl?: string;\n  sendEventsWithPostOnly?: boolean;\n  // Analytics\n  allowedText?: string[];\n  analytics?: {\n    excludeEvents?: string[];\n  };\n  enableDebugEvents?: boolean;\n  eventPropertyMatchParents?: boolean;\n  excludeAllText?: boolean;\n  excludeNonGuideAnalytics?: boolean;\n  syntheticClicks?: {\n    elementRemoval?: boolean;\n    targetChanged?: boolean;\n  };\n  // Guides\n  disableGlobalCSS?: boolean;\n  disableGuidePseudoStyles?: boolean;\n  disablePrefetch?: boolean;\n  enableDesignerKeyboardShortcut?: boolean;\n  enableGuideTimeout?: boolean;\n  guideSeenTimeoutLength?: number;\n  guideValidation?: boolean;\n  guides?: {\n    attachPoint?: string | Function;\n    delay?: boolean;\n    disabled?: boolean;\n    globalScripts?: any[];\n    timeout?: number;\n    tooltip?: {\n      arrowSize?: number;\n    };\n  };\n  preventCodeInjection?: boolean;\n}\n\nexport interface IPendo {\n  // Agent\n  additionalApiKeys: string[];\n  apiKey: string;\n  getVersion(): string;\n  initialize(options: IPendoOptions): void;\n  isReady(): boolean;\n  teardown(): void;\n\n  // Classic Guides\n  hideLauncher(): void;\n  removeLauncher(): void;\n  showLauncher(): void;\n  toggleLauncher(): void;\n\n  // Debugging\n  addDebuggingFunctions(): void;\n  disableDebugging(): void;\n  disableLogging(): void;\n  enableDebugging(): void;\n  enableLogging(): void;\n  isDebuggingEnabled(): void;\n  logPublic(): void;\n\n  // DOM\n  dom(input: string): HTMLElement;\n\n  // Events\n  attachEvent(element: HTMLElement, evt: string, fn: (event: Event) => void, useCapture?: boolean): void;\n  detachEvent(element: HTMLElement, evt: string, fn: (event: Event) => void, useCapture?: boolean): void;\n  doNotProcess: string;\n  flushNow(force?: boolean): void;\n  isSendingEvents(): boolean;\n  startSendingEvents(): boolean;\n  stopSendingEvents(): boolean;\n  stopSendingEvents(): boolean;\n  track(trackType: string, metadata?: any): void;\n\n  // TODO: Guides\n\n  // Identity\n  clearSession(): void;\n  generate_unique_id(prefix?: string): string;\n  getAccountId(): string | null;\n  get_account_id(): string | null;\n  getSerializedMetadata(): any;\n  getVisitorId(): string;\n  get_visitor_id(): string;\n  identify(options: IPendoIdentity | string, accountId?: string): void;\n  isAnonymousVisitor(visitorId?: string): boolean;\n  set_account_id(newAccountId?: string): void;\n  set_visitor_id(newVisitorId?: string): void;\n  updateOptions(options: IPendoOptions): void;\n\n  // URL\n  url: {\n    get: () => string;\n  };\n  normalizedUrl: string;\n  getCurrentUrl: () => string;\n  getNormalizedUrl: () => string;\n  pageLoad: (url: string) => void;\n\n  // TODO: Utility\n\n  // TODO: Validation\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NgxPendoIdDirective } from './ngx-pendo-id.directive';\nimport { NgxPendoSectionDirective } from './ngx-pendo-section.directive';\nimport { NGX_PENDO_INITIALIZER_PROVIDER } from './ngx-pendo.injectors';\nimport { IPendoSettings } from './ngx-pendo.interfaces';\nimport { NGX_PENDO_SETTINGS_TOKEN } from './ngx-pendo.tokens';\n\n@NgModule({\n  imports: [NgxPendoIdDirective, NgxPendoSectionDirective],\n  exports: [NgxPendoIdDirective, NgxPendoSectionDirective]\n})\nexport class NgxPendoModule {\n  static forRoot(settings: IPendoSettings): ModuleWithProviders<NgxPendoModule> {\n    return {\n      ngModule: NgxPendoModule,\n      providers: [\n        {\n          provide: NGX_PENDO_SETTINGS_TOKEN,\n          useValue: settings\n        },\n        settings.pendoInitializerProvider || NGX_PENDO_INITIALIZER_PROVIDER\n      ]\n    };\n  }\n\n  static forChild(): ModuleWithProviders<NgxPendoModule> {\n    return {\n      ngModule: NgxPendoModule\n    };\n  }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { NGX_PENDO_SETTINGS_TOKEN } from './ngx-pendo.tokens';\nimport { NGX_PENDO_INITIALIZER_PROVIDER } from './ngx-pendo.injectors';\nimport { IPendoSettings } from './ngx-pendo.interfaces';\n\nexport function provideNgxPendo(settings: IPendoSettings) {\n  return makeEnvironmentProviders([\n    {\n      provide: NGX_PENDO_SETTINGS_TOKEN,\n      useValue: settings\n    },\n    settings.pendoInitializerProvider || NGX_PENDO_INITIALIZER_PROVIDER\n  ]);\n}\n","/*\n * Public API Surface of ngx-pendo\n */\n\nexport * from './lib/ngx-pendo-id.directive';\nexport * from './lib/ngx-pendo-section.directive';\nexport * from './lib/ngx-pendo.service';\nexport * from './lib/ngx-pendo.injectors';\nexport * from './lib/ngx-pendo.interfaces';\nexport * from './lib/ngx-pendo.module';\nexport * from './lib/ngx-pendo.provide';\nexport * from './lib/ngx-pendo.tokens';\nexport * from './lib/ngx-pendo.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAKa,wBAAwB,GAAG,IAAI,cAAc,CAAiB,oBAAoB,EAAE;AAC/F,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;AACpC,CAAA;MAEY,gBAAgB,GAAG,IAAI,cAAc,CAAc,kBAAkB,EAAE;AAClF,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;QACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;AAEA,QAAA,OAAO,WAAW;IACpB;AACD,CAAA;MAEY,iBAAiB,GAAG,IAAI,cAAc,CAAS,mBAAmB,EAAE;AAC/E,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAA;;MCnBY,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,gBAAgB;AA+F7E,IAAA;IArFC,UAAU,CAAC,gBAA0C,EAAE,OAAkB,EAAA;AACvE,QAAA,IAAI,IAAI,IAAI,gBAAgB,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAChE;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC;QAC1C;IACF;IAUA,QAAQ,CAAC,OAA0B,EAAE,OAA2B,EAAA;AAC9D,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE;YAC5E,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QACxC;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAmB,EAAE,OAAO,EAAE,OAAmB,EAAE,CAAC;QACtF;IACF;AAEA;;;;AAIG;AACH,IAAA,aAAa,CAAC,OAAsB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;IACpC;AAEA;;;;AAIG;IACH,aAAa,CAAC,GAAG,GAAa,EAAA;AAC5B,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAiB,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC5F;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;IACxB;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,SAAkB,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;IAClD;AAEA;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE;IAC5B;AAEA;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE;IAC/B;AAEA;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE;IAChC;AAEA;;AAEG;IACH,KAAK,CAAC,SAAiB,EAAE,QAAsE,EAAA;QAC7F,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;IACxC;8GAhGW,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,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCOY,mBAAmB,CAAA;AARhC,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,oDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;QAEtD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,oDAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;AAE9D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAuC,SAAS,oDAAC;AAEhE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAS,MAAK;YACpC,MAAM,aAAa,GAAG,EAAE;AAExB,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;YAC/C,OAAO,GAAG,EAAE;gBACV,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACzC,gBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI;YAC3C;AAEA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACrE,QAAA,CAAC,2DAAC;QAEF,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAsB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAC;AAEzF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AAClC,IAAA;8GAtBY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,iBAAiB;AACzC,wBAAA,kCAAkC,EAAE;AACrC;AACF,iBAAA;;;MCAY,wBAAwB,CAAA;AAanC,IAAA,WAAA,GAAA;QAZA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,yDAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;QAEhE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,oDAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;AAE9D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAuC,SAAS,oDAAC;QAEhE,IAAA,CAAA,YAAY,GAAG,eAAe,CAAC,mBAAmB,yDAAI,WAAW,EAAE,KAAK,EAAA,CAAG;QAE3E,IAAA,CAAA,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,6DAAI,WAAW,EAAE,KAAK,EAAA,CAAG;QAEpF,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAsB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAC;QAGvF,MAAM,CAAC,MAAK;AACV,YAAA,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAClE,gBAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBACvB;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;8GArBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAOJ,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAEf,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAThD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,2BAA2B,EAAE,gBAAgB;AAC7C,wBAAA,kCAAkC,EAAE;AACrC;AACF,iBAAA;AAQgC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEvC,wBAAwB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACfrF,MAAM,2BAA2B,GAAG,sBAAsB;AAE1D;AACA;AACA;AACA;AAEA;AACO,MAAM,8BAA8B,GAAa;AACtD,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,IAAI,EAAE,CAAC,wBAAwB,EAAE,gBAAgB;;AAG7C,SAAU,gBAAgB,CAAC,SAAyB,EAAE,MAAmB,EAAA;IAC7E,OAAO,YAAW;AAChB,QAAA,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,SAAS;QACpD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,qFAAqF,CAAC;YACtG;YAEA;QACF;AAEA,QAAA,MAAM,IAAI,OAAO,CAAO,OAAO,IAAG;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI;YACnB,MAAM,CAAC,GAAG,GAAG,CAAA,EAAG,iBAAiB,IAAI,2BAA2B,CAAA,cAAA,EAAiB,WAAW,CAAA,SAAA,CAAW;AACvG,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACjC,YAAA,MAAM,CAAC,OAAO,GAAG,YAAW;;AAE1B,gBAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC;AACxD,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,MAAM,GAAG,YAAW;;gBAEzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAK;AACvC,oBAAA,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChB,GAAG,CAAC,WAAW,EAAE;AACjB,wBAAA,OAAO,EAAE;oBACX;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;;ACrDA;AACA;;MCUa,cAAc,CAAA;IACzB,OAAO,OAAO,CAAC,QAAwB,EAAA;QACrC,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,wBAAwB;AACjC,oBAAA,QAAQ,EAAE;AACX,iBAAA;gBACD,QAAQ,CAAC,wBAAwB,IAAI;AACtC;SACF;IACH;AAEA,IAAA,OAAO,QAAQ,GAAA;QACb,OAAO;AACL,YAAA,QAAQ,EAAE;SACX;IACH;8GAlBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,mBAAmB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7C,mBAAmB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;+GAE5C,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,wBAAwB;AACxD,iBAAA;;;ACLK,SAAU,eAAe,CAAC,QAAwB,EAAA;AACtD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,QAAQ,EAAE;AACX,SAAA;QACD,QAAQ,CAAC,wBAAwB,IAAI;AACtC,KAAA,CAAC;AACJ;;ACbA;;AAEG;;ACFH;;AAEG;;;;"}