{"version":3,"file":"acorex-components-password-box.mjs","sources":["../../../../packages/components/password-box/src/lib/password-box.component.ts","../../../../packages/components/password-box/src/lib/password-box.component.html","../../../../packages/components/password-box/src/lib/password-strength-validation/password-strength-validation.component.ts","../../../../packages/components/password-box/src/lib/password-strength-validation/password-strength-validation.component.html","../../../../packages/components/password-box/src/lib/password-box.module.ts","../../../../packages/components/password-box/src/acorex-components-password-box.ts"],"sourcesContent":["import {\n  AXClearableComponent,\n  AXComponent,\n  AXFocusableComponent,\n  AXValuableComponent,\n  MXInputBaseValueComponent,\n  MXLookComponent,\n} from '@acorex/cdk/common';\nimport { Component, HostBinding, Input, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\n/**\n * A specialized input field designed for securely capturing user passwords. It incorporates essential features to enhance usability, accessibility, and security while maintaining a user-friendly interface. The component extends MXInputBaseValueComponent and MXLookComponent to provide comprehensive input functionality with visual styling options.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-password-box',\n  templateUrl: 'password-box.component.html',\n  inputs: ['readonly', 'disabled', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id', 'look', 'name'],\n  styleUrl: './password-box.component.css',\n  outputs: [\n    'valueChange',\n    'stateChange',\n    'onValueChanged',\n    'onBlur',\n    'onFocus',\n    'readonlyChange',\n    'disabledChange',\n    'onKeyDown',\n    'onKeyUp',\n    'onKeyPress',\n  ],\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    { provide: AXComponent, useExisting: AXPasswordBoxComponent },\n    { provide: AXFocusableComponent, useExisting: AXPasswordBoxComponent },\n    { provide: AXClearableComponent, useExisting: AXPasswordBoxComponent },\n    { provide: AXValuableComponent, useExisting: AXPasswordBoxComponent },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXPasswordBoxComponent),\n      multi: true,\n    },\n  ],\n  imports: [FormsModule],\n})\nexport class AXPasswordBoxComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n  /** @ignore */\n  protected _type: 'password' | 'text' = 'password';\n\n  /** @ignore */\n  protected _icon: 'ax-icon-visibility' | 'ax-icon-visibility-off' = 'ax-icon-visibility';\n\n  /**\n   * Sets the autocomplete behavior for the input field.\n   */\n  @Input()\n  autoComplete: 'current-password' | 'new-password' | 'one-time-code' | 'off' = 'one-time-code';\n\n  /**\n   *  A flag for showing or hiding password button.\n   */\n  @Input()\n  showToggleButton = true;\n\n  /**\n   * Defines custom CSS classes to apply to the component.\n   */\n  @Input('class')\n  classNames: string;\n\n  /** @ignore */\n  protected _handleModelChange(value: string) {\n    this.commitValue(value, true);\n  }\n\n  /**\n   * Toggles the input type between 'password' and 'text' to show or hide the password.\n   */\n  toggleType() {\n    if (this._type === 'password') {\n      this._type = 'text';\n      this._icon = 'ax-icon-visibility-off';\n    } else {\n      this._type = 'password';\n      this._icon = 'ax-icon-visibility';\n    }\n  }\n\n  @HostBinding('attr.name')\n  private get __hostName(): string {\n    return this.name;\n  }\n}\n","<div\n  class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n  [class.ax-state-disabled]=\"disabled\"\n  [class.ax-state-readonly]=\"readonly\"\n>\n  <ng-content select=\"ax-prefix\"> </ng-content>\n\n  <input\n    #input\n    [name]=\"name\"\n    class=\"ax-input\"\n    [type]=\"_type\"\n    [id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    [class.ax-state-disabled]=\"disabled\"\n    [class.ax-state-readonly]=\"readonly\"\n    [disabled]=\"disabled\"\n    [readonly]=\"readonly\"\n    [tabindex]=\"tabIndex\"\n    [ngModel]=\"value\"\n    [attr.autocomplete]=\"autoComplete\"\n    (ngModelChange)=\"_handleModelChange($event)\"\n    (keydown)=\"emitOnKeydownEvent($event)\"\n    (keyup)=\"emitOnKeyupEvent($event)\"\n    (keypress)=\"emitOnKeypressEvent($event)\"\n    (focus)=\"emitOnFocusEvent($event)\"\n    (blur)=\"emitOnBlurEvent($event)\"\n  />\n\n  @if (value && !disabled && !readonly) {\n    <ng-content select=\"ax-clear-button\"></ng-content>\n  }\n  @if (showToggleButton) {\n    <button type=\"button\" class=\"ax-general-button-icon\" (click)=\"toggleType()\" [tabIndex]=\"-1\" [disabled]=\"disabled\">\n      <span class=\"ax-icon {{ _icon }}\"></span>\n    </button>\n  }\n  <ng-content select=\"ax-suffix\"> </ng-content>\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n<ng-content select=\"ax-password-strength-validation\" [showHint]=\"showStrength()\"></ng-content>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXProgressBarComponent } from '@acorex/components/progress-bar';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { AXPasswordBoxComponent } from '../password-box.component';\n\n@Component({\n  selector: 'ax-password-strength-validation',\n  templateUrl: './password-strength-validation.component.html',\n\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './password-strength-validation.component.css',\n  imports: [AXProgressBarComponent, AXBadgeComponent, AsyncPipe, AXTranslatorPipe, AXPopoverModule, AXDecoratorModule],\n  providers: [{ provide: AXComponent, useExisting: AXPasswordStrengthValidationComponent }],\n})\nexport class AXPasswordStrengthValidationComponent {\n  protected parent = inject(AXPasswordBoxComponent);\n  protected passwordStrength = signal(0);\n  protected updatedPassword = signal('');\n  protected strengthLabel = signal('fragile');\n  protected strengthLabelColor = signal('danger');\n\n  readonly showProgress = input(true);\n  readonly showLengthGraterThan8 = input(true);\n  readonly showUseUpperCase = input(true);\n  readonly showUseLowerCase = input(true);\n  readonly showUseNumber = input(true);\n  readonly showUseSpecialCharacter = input(true);\n  readonly mode = input<'full' | 'compact'>('full');\n\n  protected isLengthGraterThan8 = signal({ regex: /.{8,}/, state: false });\n  protected isUseUpperCase = signal({ regex: /[A-Z]/, state: false });\n  protected isUseLowerCase = signal({ regex: /[a-z]/, state: false });\n  protected isUseNumber = signal({ regex: /\\d/, state: false });\n  protected isUseSpecialCharacter = signal({\n    regex: /[!@#$%^&*(),.?\":{}|<>]/,\n    state: false,\n  });\n\n  #onComponentInit = afterNextRender(() => {\n    this.parent.onValueChanged.subscribe((v) => {\n      if (v.value) {\n        this.updatedPassword.set(v.value);\n      } else {\n        this.updatedPassword.set('');\n      }\n      this.checkPasswordStrength();\n    });\n  });\n\n  private checkRegexHandler(inter) {\n    if (inter().regex.test(this.updatedPassword())) {\n      inter.update((prev) => ({ ...prev, state: true }));\n      return true;\n    }\n    inter.update((prev) => ({ ...prev, state: false }));\n    return false;\n  }\n\n  protected checkPasswordStrength() {\n    let strength = 0;\n    if (this.isLengthGraterThan8()) {\n      this.checkRegexHandler(this.isLengthGraterThan8) && strength++;\n    }\n    if (this.showUseUpperCase()) {\n      this.checkRegexHandler(this.isUseUpperCase) && strength++;\n    }\n    if (this.showUseLowerCase()) {\n      this.checkRegexHandler(this.isUseLowerCase) && strength++;\n    }\n    if (this.showUseNumber()) {\n      this.checkRegexHandler(this.isUseNumber) && strength++;\n    }\n    if (this.showUseSpecialCharacter()) {\n      this.checkRegexHandler(this.isUseSpecialCharacter) && strength++;\n    }\n\n    const strengthLabels = ['fragile', 'fragile', 'weak', 'good', 'strong', 'unbreakable'];\n    this.strengthLabel.set(strengthLabels[strength]);\n    this.strengthLabelColor.set(strength <= 2 ? 'danger' : strength <= 3 ? 'warning' : 'success');\n    this.passwordStrength.set((strength * 100) / 5);\n  }\n}\n","<div class=\"ax-hint-icon\">\n  <small\n    class=\"ax-state-password\"\n    [class.ax-text-red]=\"strengthLabelColor() === 'danger'\"\n    [class.ax-text-orange]=\"strengthLabelColor() === 'warning'\"\n    [class.ax-text-green]=\"strengthLabelColor() === 'success'\"\n  >\n    {{ '@acorex:password-strength.levels.' + strengthLabel() | translate | async }}\n  </small>\n\n  @if (mode() === 'compact') {\n    <ax-icon\n      [class.ax-text-red]=\"strengthLabelColor() === 'danger'\"\n      [class.ax-text-orange]=\"strengthLabelColor() === 'warning'\"\n      [class.ax-text-green]=\"strengthLabelColor() === 'success'\"\n      #hint\n      class=\"ax-icon ax-icon-info ax-state-password ax-sm\"\n    ></ax-icon>\n    <ax-popover openOn=\"click\" [target]=\"hint\">\n      <div class=\"ax-password-box-hint-container\">\n        @if (showLengthGraterThan8()) {\n          <small class=\"ax-hint-state\">\n            <ax-badge [color]=\"isLengthGraterThan8().state ? 'success' : 'danger'\"></ax-badge>\n            <span>\n              {{ '@acorex:password-strength.rules.at-least-8-characters' | translate | async }}\n            </span>\n          </small>\n        }\n        @if (showUseUpperCase()) {\n          <small class=\"ax-hint-state\">\n            <ax-badge [color]=\"isUseUpperCase().state ? 'success' : 'danger'\"></ax-badge>\n            <span>\n              {{ '@acorex:password-strength.rules.english-upper-case-letter' | translate | async }}\n            </span>\n          </small>\n        }\n        @if (showUseLowerCase()) {\n          <small class=\"ax-hint-state\">\n            <ax-badge [color]=\"isUseLowerCase().state ? 'success' : 'danger'\"></ax-badge>\n            <span>\n              {{ '@acorex:password-strength.rules.english-lower-case-letter' | translate | async }}\n            </span>\n          </small>\n        }\n        @if (showUseNumber()) {\n          <small class=\"ax-hint-state\">\n            <ax-badge [color]=\"isUseNumber().state ? 'success' : 'danger'\"></ax-badge\n            ><span> {{ '@acorex:password-strength.rules.digits' | translate | async }} </span>\n          </small>\n        }\n        @if (showUseSpecialCharacter()) {\n          <small class=\"ax-hint-state\">\n            <ax-badge [color]=\"isUseSpecialCharacter().state ? 'success' : 'danger'\"></ax-badge>\n            <span>\n              {{ '@acorex:password-strength.rules.special-character' | translate | async }}\n            </span>\n          </small>\n        }\n      </div>\n    </ax-popover>\n  }\n</div>\n\n@if (showProgress()) {\n  <ax-progress-bar [color]=\"strengthLabelColor()\" [progress]=\"passwordStrength()\" [height]=\"4\"></ax-progress-bar>\n}\n\n<div class=\"ax-hint-container\">\n  @if (mode() === 'full') {\n    @if (showLengthGraterThan8()) {\n      <small class=\"ax-hint-state\">\n        <ax-badge [color]=\"isLengthGraterThan8().state ? 'success' : 'danger'\"></ax-badge>\n        <span>\n          {{ '@acorex:password-strength.rules.at-least-8-characters' | translate | async }}\n        </span>\n      </small>\n    }\n    @if (showUseUpperCase()) {\n      <small class=\"ax-hint-state\">\n        <ax-badge [color]=\"isUseUpperCase().state ? 'success' : 'danger'\"></ax-badge>\n        <span>\n          {{ '@acorex:password-strength.rules.english-upper-case-letter' | translate | async }}\n        </span>\n      </small>\n    }\n    @if (showUseLowerCase()) {\n      <small class=\"ax-hint-state\">\n        <ax-badge [color]=\"isUseLowerCase().state ? 'success' : 'danger'\"></ax-badge>\n        <span>\n          {{ '@acorex:password-strength.rules.english-lower-case-letter' | translate | async }}\n        </span>\n      </small>\n    }\n    @if (showUseNumber()) {\n      <small class=\"ax-hint-state\">\n        <ax-badge [color]=\"isUseNumber().state ? 'success' : 'danger'\"></ax-badge\n        ><span> {{ '@acorex:password-strength.rules.digits' | translate | async }} </span>\n      </small>\n    }\n    @if (showUseSpecialCharacter()) {\n      <small class=\"ax-hint-state\">\n        <ax-badge [color]=\"isUseSpecialCharacter().state ? 'success' : 'danger'\"></ax-badge>\n        <span>\n          {{ '@acorex:password-strength.rules.special-character' | translate | async }}\n        </span>\n      </small>\n    }\n  }\n</div>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXProgressBarModule } from '@acorex/components/progress-bar';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPasswordBoxComponent } from './password-box.component';\nimport { AXPasswordStrengthValidationComponent } from './password-strength-validation/password-strength-validation.component';\n\nconst COMPONENT = [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent];\nconst MODULES = [\n  CommonModule,\n  FormsModule,\n  AXButtonModule,\n  AXDecoratorModule,\n  AXProgressBarModule,\n  AXBadgeModule,\n  AXTranslationModule,\n];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXPasswordBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;AAYA;;;;AAIG;AAiCG,MAAO,sBAAuB,SAAQ,OAAO,EAAC,yBAAiC,GAAE,eAAe,CAAC,CAAA;AAhCvG,IAAA,WAAA,GAAA;;;QAkCY,IAAA,CAAA,KAAK,GAAwB,UAAU;;QAGvC,IAAA,CAAA,KAAK,GAAoD,oBAAoB;AAEvF;;AAEG;QAEH,IAAA,CAAA,YAAY,GAAkE,eAAe;AAE7F;;AAEG;QAEH,IAAA,CAAA,gBAAgB,GAAG,IAAI;AA8BxB,IAAA;;AArBW,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/B;AAEA;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,wBAAwB;QACvC;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,oBAAoB;QACnC;IACF;AAEA,IAAA,IACY,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI;IAClB;8GA9CW,sBAAsB,EAAA,IAAA,EAAA,IAAA,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,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAbtB;AACT,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE;AAC7D,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACrE,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CH,w8CA0CA,qUDKY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhClC,SAAS;+BACE,iBAAiB,EAAA,MAAA,EAEnB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAA,OAAA,EAElG;wBACP,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,QAAQ;wBACR,SAAS;wBACT,gBAAgB;wBAChB,gBAAgB;wBAChB,WAAW;wBACX,SAAS;wBACT,YAAY;qBACb,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAE1B;AACT,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,wBAAwB,EAAE;AAC7D,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,wBAAwB,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,wBAAwB,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,wBAAwB,EAAE;AACrE,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EAAA,OAAA,EACQ,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,w8CAAA,EAAA,MAAA,EAAA,CAAA,8QAAA,CAAA,EAAA;;sBAYrB;;sBAMA;;sBAMA,KAAK;uBAAC,OAAO;;sBAqBb,WAAW;uBAAC,WAAW;;;MEzEb,qCAAqC,CAAA;AATlD,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACvC,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC;6FAAC;QAC5B,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,EAAE;4FAAC;QAC5B,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,SAAS;0FAAC;QACjC,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,QAAQ;+FAAC;QAEtC,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI;yFAAC;QAC1B,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,IAAI;kGAAC;QACnC,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI;6FAAC;QAC9B,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI;6FAAC;QAC9B,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,IAAI;0FAAC;QAC3B,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAC,IAAI;oGAAC;QACrC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqB,MAAM;iFAAC;QAEvC,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gGAAC;QAC9D,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;2FAAC;QACzD,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;2FAAC;QACzD,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;wFAAC;QACnD,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC;AACvC,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,KAAK,EAAE,KAAK;AACb,SAAA;kGAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,eAAe,CAAC,MAAK;YACtC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACzC,gBAAA,IAAI,CAAC,CAAC,KAAK,EAAE;oBACX,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnC;qBAAO;AACL,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B;gBACA,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAkCH,IAAA;AA3CC,IAAA,gBAAgB;AAWR,IAAA,iBAAiB,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;AAC9C,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,QAAA,OAAO,KAAK;IACd;IAEU,qBAAqB,GAAA;QAC7B,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,QAAQ,EAAE;QAChE;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,QAAQ,EAAE;QAC3D;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,QAAQ,EAAE;QAC3D;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE;QACxD;AACA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,QAAQ,EAAE;QAClE;AAEA,QAAA,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAC7F,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC;IACjD;8GAlEW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,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,SAAA,EAFrC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC,0BCjB3F,ytIA6GA,EAAA,MAAA,EAAA,CAAA,0tCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7FY,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAA+B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA/D,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGpE,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBATjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,aAAA,EAG5B,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAE5B,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,SAAA,EACzG,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,qCAAuC,EAAE,CAAC,EAAA,QAAA,EAAA,ytIAAA,EAAA,MAAA,EAAA,CAAA,0tCAAA,CAAA,EAAA;;;AEN3F,MAAM,SAAS,GAAG,CAAC,sBAAsB,EAAE,qCAAqC,CAAC;AACjF,MAAM,OAAO,GAAG;IACd,YAAY;IACZ,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,mBAAmB;IACnB,aAAa;IACb,mBAAmB;CACpB;MAOY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,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,mBAAmB,YAd9B,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,mBAAmB;YACnB,aAAa;AACb,YAAA,mBAAmB,EARF,sBAAsB,EAAE,qCAAqC,CAAA,EAAA,OAAA,EAAA,CAA7D,sBAAsB,EAAE,qCAAqC,CAAA,EAAA,CAAA,CAAA;+GAgBnE,mBAAmB,EAAA,OAAA,EAAA,CAJjB,OAAO,EAAK,SAAS,CAAA,EAAA,CAAA,CAAA;;2FAIvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;AC1BD;;AAEG;;;;"}