{"version":3,"file":"screeb-sdk-angular.mjs","sources":["../../../projects/sdk-angular/src/lib/constants.ts","../../../projects/sdk-angular/src/lib/logger.ts","../../../projects/sdk-angular/src/lib/screeb-config.ts","../../../projects/sdk-angular/src/lib/screeb.ts","../../../projects/sdk-angular/src/lib/screeb.module.ts","../../../projects/sdk-angular/src/public-api.ts","../../../projects/sdk-angular/src/screeb-sdk-angular.ts"],"sourcesContent":["export default { version: \"0.7.0\" };\n","type LogLevel = \"info\" | \"error\" | \"warn\";\n\n/**\n * Logs messages in the console with a corresponding urgency\n *\n * @param level the urgency of the message\n * @param message the message to log in the console\n */\nexport const log = (level: LogLevel, message: string) => {\n  const packageName = \"[@screeb/angular-sdk]\";\n\n  switch (level) {\n    case \"info\":\n      // eslint-disable-next-line no-console\n      console.log(`${packageName} ${message}`);\n      break;\n    case \"warn\":\n      // eslint-disable-next-line no-console\n      console.warn(`${packageName} ${message}`);\n      break;\n    case \"error\":\n      // eslint-disable-next-line no-console\n      console.error(`${packageName} ${message}`);\n      break;\n    default:\n      // eslint-disable-next-line no-console\n      console.log(`${packageName} ${message}`);\n  }\n};\n","import { Injectable } from \"@angular/core\";\nimport {\n  HooksInit,\n  PropertyRecord,\n  ScreebOptions,\n  SpaNavigationHandler,\n} from \"@screeb/sdk-browser\";\n\n/** Configuration of Screeb module */\n@Injectable({ providedIn: \"root\" })\nexport class ScreebConfig {\n  /** Your website/channel id. */\n  websiteId?: string;\n  /** The unique identifier of your user. */\n  userId?: string;\n  /** The properties of your user. */\n  userProperties?: PropertyRecord;\n  /** Hooks to define callback for various event */\n  hooks?: HooksInit;\n  /** Optional handler for the `in-page-spa` \"Navigate to URL\" target (custom SPA routers). */\n  spaNavigationHandler?: SpaNavigationHandler;\n  /**\n   * Indicates if Screeb should be automatically loaded.\n   * This will ping to the Screeb servers.\n   *\n   * @remarks if `true`, 'load' does not need to be called manually. Can be used for multistaged environments\n   */\n  shouldLoad?: boolean;\n  /**\n   * Indicates if Screeb should be automatically initialized.\n   *\n   * @remarks if `true`, 'init' does not need to be called manually\n   * */\n  autoInit?: boolean;\n  /**\n   * Screeb tag initialization options.\n   *\n   * @remarks this is used is really particular cases, handle with care.\n   * */\n  options?: ScreebOptions;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport * as _Screeb from \"@screeb/sdk-browser\";\n\nimport CONSTANTS from \"./constants\";\nimport * as logger from \"./logger\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@Injectable({ providedIn: \"root\" })\nexport class Screeb {\n  private isInitialized = false;\n\n  // eslint-disable-next-line no-unused-vars\n  constructor(@Inject(ScreebConfig) private config: ScreebConfig) {}\n\n  private async ensureScreeb(functionName: string, onlyLoaded = false) {\n    if (!_Screeb.isLoaded() && !this.config.shouldLoad) {\n      const message =\n        \"Screeb instance is not loaded because `shouldLoad` is set to `false` in `ScreebModule` configuration.\";\n\n      logger.log(\"warn\", message);\n\n      return Promise.reject(message);\n    }\n    if (!this.isInitialized && !onlyLoaded) {\n      const message = [\n        `\"${functionName}\" was called but Screeb has not been initialized yet. `,\n        `Please call 'init' before calling '${functionName}' or `,\n        \"set 'autoInit' to true in the `ScreebModule` configuration.\",\n      ].join(\"\");\n\n      logger.log(\"warn\", message);\n\n      return Promise.reject(message);\n    }\n    return Promise.resolve();\n  }\n\n  /**\n   * Shutdowns current Screeb session.\n   *\n   * @example\n   * ```ts\n   * this.screeb.close();\n   * ```\n   */\n  public async close() {\n    await this.ensureScreeb(\"close\");\n\n    return _Screeb.close();\n  }\n\n  /**\n   * Prints the actual state information of Screeb tag.\n   *\n   * @example\n   * ```ts\n   * this.screeb.debug();\n   * // ******************* SCREEB SESSION DEBUG *********************\n   * // Screeb channel id: <UUID>\n   * // Screeb channel type: widget\n   * // Screeb respondent id: <UUID>\n   * // Screeb survey id: none\n   * // Screeb response id: none\n   * //\n   * // Screeb current session start: Thu May 04 2023 16:53:49 GMT+0200 (Central European Summer Time)\n   * // Screeb current session last activity: Thu May 04 2023 17:41:30 GMT+0200 (Central European Summer Time)\n   * //\n   * // Screeb targeting engine status: disabled\n   * // Screeb targeting engine: 3 surveys\n   * //\n   * // Detected platform: desktop\n   * // Detected locale: en-GB\n   * // Detected timezone: -120\n   * // **************************************************************\n   * ```\n   */\n  public async debug() {\n    await this.ensureScreeb(\"debug\");\n\n    return _Screeb.debug();\n  }\n\n  /**\n   * Tracks a user event.\n   *\n   * @param eventName The event name.\n   * @param eventProperties The properties of your event.\n   * ```text Requirements:\n   *   - Property names must be limited to 128 characters\n   *   - No more than 1000 attributes\n   *   - Supported types for values: string, number, boolean and Date.\n   * ```\n   *\n   * @example\n   * ```ts\n   * this.screeb.eventTrack(\n   *   \"Product added to cart\",\n   *   {\n   *     product_name: 'Red bike 2021',\n   *     category: 'sport',\n   *     color: 'red',\n   *     price: 299,\n   *     count: 1,\n   *     reference: '2CF093TG1',\n   *     delivery_method: 'UPS',\n   *     user_logged: false,\n   *     added_at: new Date(),\n   *   }\n   * );\n   * ```\n   */\n  public async eventTrack(\n    eventName: string,\n    eventProperties?: _Screeb.PropertyRecord\n  ) {\n    await this.ensureScreeb(\"eventTrack\");\n\n    return _Screeb.eventTrack(eventName, eventProperties);\n  }\n\n  /**\n   * Change the current user identity.\n   * Warning: Running surveys will be closed.\n   *\n   * @param userId The unique identifier of your user.\n   * @param userProperties The properties of your user.\n   * ```text Requirements:\n   *   - Property names must be limited to 128 characters\n   *   - No more than 1000 attributes\n   *   - Supported types for values: string, number, boolean and Date.\n   * ```\n   *\n   * @example\n   * ```ts\n   * this.screeb.identity(\n   *   \"<your-user-id>\",\n   *   {\n   *     firstname: '<user-firstname>',\n   *     lastname: '<user-lastname>',\n   *     plan: '<user-plan>',\n   *     last_seen_at: new Date(),\n   *     authenticated: true\n   *   }\n   * );\n   * ```\n   */\n  public async identity(\n    userId: string,\n    userProperties?: _Screeb.PropertyRecord\n  ) {\n    await this.ensureScreeb(\"identity\");\n\n    return _Screeb.identity(userId, userProperties);\n  }\n\n  /**\n   * Retrieves the current user identity.\n   *\n   * @example\n   * ```ts\n   * console.log(await this.screeb.identityGet());\n   * // {\n   * //   channel_id: \"<UUID>\",\n   * //   anonymous_id: \"<UUID>\",\n   * //   user_id: \"<UUID>\",\n   * //   is_ready: true,\n   * //   session_id: \"<UUID>\",\n   * //   session_start: \"2023-05-04T16:30:15.882Z\",\n   * //   session_end: \"2023-05-04T17:02:09.087Z\",\n   * // }\n   * ```\n   */\n  public async identityGet() {\n    await this.ensureScreeb(\"identityGet\");\n\n    return _Screeb.identityGet();\n  }\n\n  /**\n   * Assigns the current user to a group.\n   *\n   * @param groupName\n   * @param groupType\n   * @param groupProperties The properties of your user group.\n   * ```text Requirements:\n   *   - Property names must be limited to 128 characters\n   *   - No more than 1000 attributes\n   *   - Supported types for values: string, number, boolean and Date.\n   * ```\n   *\n   * @example\n   * ```ts\n   * this.screeb.identityGroupAssign(\n   *   'company',\n   *   'Apple',\n   *   {\n   *     address_line_1: 'Apple Campus',\n   *     address_line_2: '1 Infinite Loop',\n   *     city: 'Cupertino',\n   *     zipcode: 95014,\n   *     state: 'California',\n   *     country: 'United states',\n   *   }\n   * );\n   * ```\n   */\n  public async identityGroupAssign(\n    groupName: string,\n    groupType?: string,\n    groupProperties?: _Screeb.PropertyRecord\n  ) {\n    await this.ensureScreeb(\"identityGroupAssign\");\n\n    return _Screeb.identityGroupAssign(groupName, groupType, groupProperties);\n  }\n\n  /**\n   * Unassigns the current user to a group.\n   *\n   * @param groupName The name of your user group.\n   * @param groupType The type of your user group.\n   *\n   * @example\n   * ```ts\n   * this.screeb.identityGroupUnassign('company', 'Apple');\n   * ```\n   */\n  public async identityGroupUnassign(groupName: string, groupType?: string) {\n    await this.ensureScreeb(\"identityGroupUnassign\");\n\n    return _Screeb.identityGroupUnassign(groupName, groupType);\n  }\n\n  /**\n   * Adds properties to the current user identity.\n   *\n   * @param userProperties The properties of your user.\n   * ```text Requirements:\n   *   - Property names must be limited to 128 characters\n   *   - No more than 1000 attributes\n   *   - Supported types for values: string, number, boolean and Date.\n   * ```\n   *\n   * @example\n   * ```ts\n   * // Set user properties\n   * this.screeb.identityProperties(\n   *   {\n   *     firstname: '<user-firstname>',\n   *     lastname: '<user-lastname>',\n   *     plan: '<user-plan>',\n   *     last_seen_at: new Date(),\n   *     authenticated: true\n   *   }\n   * );\n   *\n   * // Delete user property : set values to null\n   * this.screeb.identityProperties(\n   *   {\n   *     age: null,\n   *     company: null,\n   *     logged: true,\n   *   }\n   * );\n   * ```\n   */\n  public async identityProperties(userProperties: _Screeb.PropertyRecord) {\n    await this.ensureScreeb(\"identityProperties\");\n\n    return _Screeb.identityProperties(userProperties);\n  }\n\n  /**\n   * Resets the current user identity.\n   * Warning: This command must be called only once, since it creates a new identity on Screeb side.\n   *\n   * @example\n   * ```ts\n   * this.screeb.identityReset();\n   * ```\n   */\n  public async identityReset() {\n    await this.ensureScreeb(\"identityReset\");\n\n    return _Screeb.identityReset();\n  }\n\n  /**\n   * Interrupts a running survey.\n   *\n   * @example\n   * ```ts\n   * this.screeb.surveyClose();\n   * ```\n   */\n  public async surveyClose() {\n    await this.ensureScreeb(\"surveyClose\");\n\n    return _Screeb.surveyClose();\n  }\n\n  /**\n   * Starts a survey by its ID.\n   *\n   * @example\n   * ```ts\n   * this.screeb.surveyStart(\n   *   '<UUID>',\n   *   '<UUID>',\n   *   false,\n   *   { // optional\n   *     color: \"green\",\n   *     article_id: 42\n   *   },\n   *   { // optional\n   *     version: \"1.0.0\",\n   *     onSurveyShowed: (payload) => console.log(\"Survey showed\", payload),\n   *   },\n   *   \"en\", // optional\n   *   \"#screeb-survey-container\" // optional\n   * );\n   * ```\n   */\n  public async surveyStart(\n    surveyId: string,\n    distributionId: string,\n    allowMultipleResponses: boolean,\n    hiddenFields?: _Screeb.PropertyRecord,\n    hooks?: _Screeb.HooksSurveyStart,\n    language?: string,\n    selectors?: string | string[]\n  ) {\n    await this.ensureScreeb(\"surveyStart\");\n\n    return _Screeb.surveyStart(\n      surveyId,\n      distributionId,\n      allowMultipleResponses,\n      hiddenFields,\n      hooks,\n      language,\n      selectors\n    );\n  }\n\n  /**\n   * Interrupts a running message.\n   *\n   * @example\n   * ```ts\n   * this.screeb.messageClose();\n   * ```\n   */\n  public async messageClose() {\n    await this.ensureScreeb(\"messageClose\");\n\n    return _Screeb.messageClose();\n  }\n\n  /**\n   * Starts a message by its ID.\n   *\n   * @example\n   * ```ts\n   * this.screeb.messageStart(\n   *   '<UUID>',\n   *   false,\n   *   {\n   *     color: \"green\",\n   *     article_id: 42\n   *   },\n   *   {\n   *     version: \"1.0.0\",\n   *     onMessageShowed: (payload) => console.log(\"Message showed\", payload),\n   *   },\n   *   \"en\"\n   * );\n   * ```\n   */\n  public async messageStart(\n    messageId: string,\n    allowMultipleResponses = true,\n    hiddenFields?: _Screeb.PropertyRecord,\n    hooks?: _Screeb.HooksMessageStart,\n    language?: string\n  ) {\n    await this.ensureScreeb(\"messageStart\");\n\n    return _Screeb.messageStart(\n      messageId,\n      allowMultipleResponses,\n      hiddenFields,\n      hooks,\n      language\n    );\n  }\n\n  /**\n   * Interrupts a running session replay.\n   *\n   * @example\n   * ```ts\n   * this.screeb.sessionReplayStop();\n   * ```\n   */\n  public async sessionReplayStop() {\n    await this.ensureScreeb(\"sessionReplayStop\");\n\n    return _Screeb.sessionReplayStop();\n  }\n\n  /**\n   * Starts a session replay.\n   *\n   * @example\n   * ```ts\n   * this.screeb.sessionReplayStart();\n   * ```\n   */\n  public async sessionReplayStart() {\n    await this.ensureScreeb(\"sessionReplayStart\");\n\n    return _Screeb.sessionReplayStart();\n  }\n\n  /**\n   * Prints the current state of the targeting engine.\n   *\n   * @example\n   * ```ts\n   * console.log(await this.screeb.targetingDebug());\n   * // targeting ************ SCREEB TARGETING RULES DEBUG **************\n   * // Disabled surveys are not listed here.\n   * //\n   * // Screeb channel id: <UUID>\n   * // Screeb respondent id: <UUID>\n   * //\n   * // Survey <UUID>:\n   * // https://admin.screeb.app/org/last/survey/<UUID>/share\n   * //\n   * //   - Rule of type \"Device type (desktop/mobile/tablet)\": true 🟢\n   * //   - Rule of type \"Multiple display\": true 🟢\n   * //   - Rule of type \"Capping per time between survey display on current respondent\": true 🟢\n   * //   - Rule of type \"User event count\": false 🔴\n   * //   - Rule of type \"Capping per respondent display count\": false 🔴\n   * ```\n   */\n  public async targetingDebug() {\n    await this.ensureScreeb(\"targetingDebug\");\n\n    return _Screeb.targetingDebug();\n  }\n\n  /**\n   * Initializes Screeb tag.\n   *\n   * @param websiteId Your website/channel id.\n   * @param userId The unique identifier of your user.\n   * @param userProperties The properties of your user.\n   * ```text Requirements:\n   *   - Property names must be limited to 128 characters\n   *   - No more than 1000 attributes\n   *   - Supported types for values: string, number, boolean and Date\n   * ```\n   * @param language Force a specific language for the tag. eg: 'en'. default: browser language.\n   *\n   * @example\n   * ```ts\n   * this.screeb.init(\n   *   \"<your-website-id>\",\n   *   \"<your-user-id>\",\n   *   {\n   *     firstname: '<user-firstname>',\n   *     lastname: '<user-lastname>',\n   *     plan: '<user-plan>',\n   *     last_seen_at: new Date(),\n   *     authenticated: true\n   *   },\n   *   {\n   *     version: \"1.0.0\",\n   *     onReady: (payload) => console.log(\"Screeb SDK is ready!\", payload),\n   *   },\n   *   \"en\"\n   * );\n   * ```\n   */\n  public async init(\n    websiteId: string,\n    userId?: string,\n    userProperties?: _Screeb.PropertyRecord,\n    hooks?: _Screeb.HooksInit,\n    language?: string,\n    spaNavigationHandler?: _Screeb.SpaNavigationHandler\n  ) {\n    await this.ensureScreeb(\"init\", true);\n\n    this.isInitialized = true;\n\n    return await _Screeb.init(\n      websiteId,\n      userId,\n      userProperties,\n      hooks,\n      language,\n      spaNavigationHandler\n    );\n  }\n\n  /**\n   * Appends Screeb tag into your dom.\n   *\n   * @param options Screeb module options.\n   * @param options.window If you're running Screeb tag in an iframe, please set the inner window here.\n   * @param options.screebEndpoint Please don't do this.\n   *\n   * @example\n   * ```ts\n   * this.screeb.load();\n   * ```\n   */\n  public async load(options?: _Screeb.ScreebOptions) {\n    return _Screeb.load({\n      sdkName: \"sdk-angular\",\n      sdkVersion: CONSTANTS.version,\n      ...options,\n    });\n  }\n}\n","import { Inject, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { Screeb } from \"./screeb\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@NgModule({\n  providers: [Screeb, ScreebConfig],\n})\nexport class ScreebModule {\n  /**\n   * This is used to initialize Screeb at the top of your Angular application\n   * @param config Configuration to pass to Screeb browser SDK\n   *\n   * @example\n   * ```ts\n   * ScreebModule.forRoot({\n   *   autoInit: true,\n   *   websiteId: \"<your-website-id>\",\n   *   userId: \"<your-user-id>\",\n   *   userProperties: {\n   *     firstname: '<user-firstname>',\n   *     lastname: '<user-lastname>',\n   *     plan: '<user-plan>',\n   *     last_seen_at: new Date(),\n   *     authenticated: true\n   *   },\n   *   {\n   *     version: \"1.0.0\",\n   *     onReady: (payload) => console.log(\"Screeb SDK is ready!\", payload),\n   *   },\n   * })\n   * ```\n   */\n  static forRoot(config: ScreebConfig): ModuleWithProviders<ScreebModule> {\n    return {\n      ngModule: ScreebModule,\n      providers: [Screeb, { provide: ScreebConfig, useValue: config }],\n    };\n  }\n\n  constructor(\n    @Inject(ScreebConfig) config: ScreebConfig,\n    @Inject(Screeb) screeb: Screeb\n  ) {\n    if (config.shouldLoad ?? true) {\n      screeb.load();\n    }\n\n    if ((config.autoInit ?? false) && config.websiteId) {\n      screeb.init(\n        config.websiteId,\n        config.userId,\n        config.userProperties,\n        config.hooks,\n        undefined,\n        config.spaNavigationHandler\n      );\n    }\n  }\n}\n","/*\n * Public API Surface of @screeb/sdk-angular\n */\n\nexport { ScreebModule } from \"./lib/screeb.module\";\nexport { ScreebConfig } from \"./lib/screeb-config\";\nexport { Screeb } from \"./lib/screeb\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["logger.log"],"mappings":";;;;AAAA,gBAAe,EAAE,OAAO,EAAE,OAAO,EAAE;;ACEnC;;;;;AAKG;AACI,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,OAAe,KAAI;IACtD,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,IAAA,QAAQ,KAAK;AACX,QAAA,KAAK,MAAM;;YAET,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,WAAW,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;YACzC,MAAM;AACR,QAAA,KAAK,MAAM;;YAET,OAAO,CAAC,IAAI,CAAC,CAAA,EAAG,WAAW,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;YAC1C,MAAM;AACR,QAAA,KAAK,OAAO;;YAEV,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,WAAW,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;YAC3C,MAAM;AACR,QAAA;;YAEE,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,WAAW,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;AAC5C,KAAA;AACH,CAAC;;ACpBD;MAEa,YAAY,CAAA;kIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA,EAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCDrB,MAAM,CAAA;;AAIjB,IAAA,WAAA,CAA0C,MAAoB,EAAA;QAApB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAc;QAHtD,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAGoC;AAE1D,IAAA,MAAM,YAAY,CAAC,YAAoB,EAAE,UAAU,GAAG,KAAK,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAClD,MAAM,OAAO,GACX,uGAAuG,CAAC;AAE1G,YAAAA,GAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,CAAA,CAAA,EAAI,YAAY,CAAwD,sDAAA,CAAA;AACxE,gBAAA,CAAA,mCAAA,EAAsC,YAAY,CAAO,KAAA,CAAA;gBACzD,6DAA6D;AAC9D,aAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX,YAAAA,GAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEjC,QAAA,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;KACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEjC,QAAA,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;KACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACI,IAAA,MAAM,UAAU,CACrB,SAAiB,EACjB,eAAwC,EAAA;AAExC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;KACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,IAAA,MAAM,QAAQ,CACnB,MAAc,EACd,cAAuC,EAAA;AAEvC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEpC,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KACjD;AAED;;;;;;;;;;;;;;;;AAgBG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;KAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACI,IAAA,MAAM,mBAAmB,CAC9B,SAAiB,EACjB,SAAkB,EAClB,eAAwC,EAAA;AAExC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3E;AAED;;;;;;;;;;AAUG;AACI,IAAA,MAAM,qBAAqB,CAAC,SAAiB,EAAE,SAAkB,EAAA;AACtE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;IACI,MAAM,kBAAkB,CAAC,cAAsC,EAAA;AACpE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAE9C,QAAA,OAAO,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;KACnD;AAED;;;;;;;;AAQG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAEzC,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;KAChC;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;KAC9B;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,IAAA,MAAM,WAAW,CACtB,QAAgB,EAChB,cAAsB,EACtB,sBAA+B,EAC/B,YAAqC,EACrC,KAAgC,EAChC,QAAiB,EACjB,SAA6B,EAAA;AAE7B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,WAAW,CACxB,QAAQ,EACR,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,CACV,CAAC;KACH;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAExC,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;KAC/B;AAED;;;;;;;;;;;;;;;;;;;AAmBG;AACI,IAAA,MAAM,YAAY,CACvB,SAAiB,EACjB,sBAAsB,GAAG,IAAI,EAC7B,YAAqC,EACrC,KAAiC,EACjC,QAAiB,EAAA;AAEjB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAExC,QAAA,OAAO,OAAO,CAAC,YAAY,CACzB,SAAS,EACT,sBAAsB,EACtB,YAAY,EACZ,KAAK,EACL,QAAQ,CACT,CAAC;KACH;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAE7C,QAAA,OAAO,OAAO,CAAC,iBAAiB,EAAE,CAAC;KACpC;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAE9C,QAAA,OAAO,OAAO,CAAC,kBAAkB,EAAE,CAAC;KACrC;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAE1C,QAAA,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC;KACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AACI,IAAA,MAAM,IAAI,CACf,SAAiB,EACjB,MAAe,EACf,cAAuC,EACvC,KAAyB,EACzB,QAAiB,EACjB,oBAAmD,EAAA;QAEnD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAE1B,QAAA,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB,SAAS,EACT,MAAM,EACN,cAAc,EACd,KAAK,EACL,QAAQ,EACR,oBAAoB,CACrB,CAAC;KACH;AAED;;;;;;;;;;;AAWG;IACI,MAAM,IAAI,CAAC,OAA+B,EAAA;QAC/C,OAAO,OAAO,CAAC,IAAI,CAAC;AAClB,YAAA,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,SAAS,CAAC,OAAO;AAC7B,YAAA,GAAG,OAAO;AACX,SAAA,CAAC,CAAC;KACJ;AAtgBU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,kBAIG,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAJrB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cADO,MAAM,EAAA,CAAA,CAAA,EAAA;;4FACnB,MAAM,EAAA,UAAA,EAAA,CAAA;kBADlB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAKnB,MAAM;2BAAC,YAAY,CAAA;;;MCLrB,YAAY,CAAA;AACvB;;;;;;;;;;;;;;;;;;;;;;;AAuBG;IACH,OAAO,OAAO,CAAC,MAAoB,EAAA;QACjC,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SACjE,CAAC;KACH;IAED,WACwB,CAAA,MAAoB,EAC1B,MAAc,EAAA;AAE9B,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;YAC7B,MAAM,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE;YAClD,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,KAAK,EACZ,SAAS,EACT,MAAM,CAAC,oBAAoB,CAC5B,CAAC;AACH,SAAA;KACF;kIAlDU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiCb,YAAY,EAAA,EAAA,EAAA,KAAA,EACZ,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;mIAlCL,YAAY,EAAA,CAAA,CAAA,EAAA;AAAZ,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAFZ,SAAA,EAAA,CAAC,MAAM,EAAE,YAAY,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAEtB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AAClC,iBAAA,CAAA;;0BAkCI,MAAM;2BAAC,YAAY,CAAA;;0BACnB,MAAM;2BAAC,MAAM,CAAA;;;ACzClB;;AAEG;;ACFH;;AAEG;;;;"}