{"version":3,"file":"toolbox-alerts.mjs","sources":["../../../projects/toolbox/alerts/alerts.service.ts","../../../projects/toolbox/alerts/components/alert.component.ts","../../../projects/toolbox/alerts/components/alerts.component.ts","../../../projects/toolbox/alerts/components/alert-error.component.ts","../../../projects/toolbox/alerts/components/alert-success.component.ts","../../../projects/toolbox/alerts/toolbox-alerts.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\nimport { TbxAlert, TbxAlertType } from \"./alert.model\";\r\n\r\n/**\r\n * A service to add application level alerts to be displayed where the alert\r\n * component selector (tbx-alerts) is placed on the page.\r\n */\r\n@Injectable( { providedIn: \"root\" } )\r\nexport class TbxAlertsService {\r\n  private alertSubject = new Subject<TbxAlert | null>();\r\n\r\n  /**\r\n   * Gets an alert observable to which a caller can subscribe to be notified when\r\n   * a new alert is added.\r\n   * @returns An observable of to subscribe to for new alerts.\r\n   */\r\n  public getAlert(): Observable<TbxAlert | null> {\r\n    return this.alertSubject.asObservable();\r\n  }\r\n\r\n  /**\r\n   * Adds an alert of type success.\r\n   * @param message The message to display in the alert.\r\n   * @param dismissOnTimeout Time in milliseconds the alert will close.\r\n   */\r\n  public success( message: string, dismissOnTimeout?: number ): void {\r\n    this.alert( \"success\", message, dismissOnTimeout );\r\n  }\r\n\r\n  /**\r\n   * Adds an alert of type error.\r\n   * @param message The message to display in the alert.\r\n   * @param dismissOnTimeout Time in milliseconds the alert will close.\r\n   */\r\n  public error( message: string, dismissOnTimeout?: number ): void {\r\n    this.alert( \"error\", message, dismissOnTimeout );\r\n  }\r\n\r\n  /**\r\n   * Adds an alert of type information.\r\n   * @param message The message to display in the alert.\r\n   * @param dismissOnTimeout Time in milliseconds the alert will close.\r\n   */\r\n  public info( message: string, dismissOnTimeout?: number ): void {\r\n    this.alert( \"info\", message, dismissOnTimeout );\r\n  }\r\n\r\n  /**\r\n   * Adds an alert of type warning.\r\n   * @param message The message to display in the alert.\r\n   * @param dismissOnTimeout Time in milliseconds the alert will close.\r\n   */\r\n  public warning( message: string, dismissOnTimeout?: number ): void {\r\n    this.alert( \"warning\", message, dismissOnTimeout );\r\n  }\r\n\r\n  /**\r\n   * Adds an alert and notifies the subscribers.\r\n   * @param type The type of alert.\r\n   * @param message The message to display.\r\n   * @param dismissOnTimeout Time in milliseconds the alert will close.\r\n   */\r\n  public alert( type: TbxAlertType, message: string, dismissOnTimeout?: number ): void {\r\n    const alert: TbxAlert = {\r\n      id: Math.random(),\r\n      type,\r\n      message,\r\n      dismissOnTimeout\r\n    };\r\n\r\n    this.alertSubject.next( alert );\r\n  }\r\n\r\n  /** Clears all the alerts currently being displayed. */\r\n  public clearAll(): void {\r\n    this.alertSubject.next( null );\r\n  }\r\n}\r\n","import { Component, computed, inject, input, OnInit, signal } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\nimport { TbxAlertType } from \"../alert.model\";\r\n\r\n@Component( {\r\n  selector: \"tbx-alert\",\r\n  standalone: true,\r\n  styles: `\r\n    :host\r\n    {\r\n      display : block;\r\n      margin  : .5rem 0\r\n    }\r\n  `,\r\n  template: `\r\n    @if (show() && hasMessage()) {\r\n      <div [class]=\"classes()\">\r\n        <button class=\"btn-close\" (click)=\"show.set(false)\"></button>\r\n        <span class=\"me-3\"><i class=\"fa fa-{{iconType()}} fa-2x\"></i></span>\r\n        <span [innerHTML]=\"displayMessage()\"></span>\r\n      </div>\r\n    }\r\n  `\r\n} )\r\nexport class TbxAlertComponent implements OnInit {\r\n  /** Sets the message to display. */\r\n  public message = input.required<string | undefined | null>();\r\n\r\n  /** The type of alert to display {@link TbxAlertType} */\r\n  public type = input<TbxAlertType>( \"success\" );\r\n\r\n  /** Indicates to dismiss the alert after n milliseconds */\r\n  public dismissOnTimeout = input<number>( 0 );\r\n\r\n  /** Add additional classes to the default. */\r\n  public class = input<string>( \"\" );\r\n\r\n  public hasMessage = computed( () => {\r\n    const msg = this.message();\r\n\r\n    return !msg ? false : msg.length > 0;\r\n  });\r\n\r\n  public displayMessage = computed( () => {\r\n    const msg = this.message()?.replace( /\\r\\n|\\r|\\n/g, \"<br/>\" ) ?? \"\";\r\n\r\n    return this.sanitizer.bypassSecurityTrustHtml( msg );\r\n  } );\r\n\r\n  public show = signal( true );\r\n\r\n  public classes = computed( () => [\r\n    \"alert\",\r\n    `alert-${ this.typeClass() }`,\r\n    \"alert-dismissible\",\r\n    \"mt-1 mb-1\",\r\n    \"d-flex\",\r\n    \"align-items-center\",\r\n    \"fade show\",\r\n    this.class\r\n  ].filter( Boolean ).join( \" \" ) );\r\n\r\n  public typeClass = computed( () => {\r\n    switch( this.type() ) {\r\n      case \"success\":\r\n        return \"success\";\r\n      case \"error\":\r\n        return \"danger\";\r\n      case \"warning\":\r\n        return \"warning\";\r\n      default:\r\n        return \"info\";\r\n    }\r\n  } );\r\n\r\n  public iconType = computed( () => {\r\n    switch( this.type() ) {\r\n      case \"success\":\r\n        return \"check-circle\";\r\n      case \"error\":\r\n        return \"times-circle\";\r\n      case \"warning\":\r\n        return \"exclamation-triangle\";\r\n      default:\r\n        return \"info-circle\";\r\n    }\r\n  } );\r\n\r\n  private readonly sanitizer = inject( DomSanitizer );\r\n\r\n  public ngOnInit(): void {\r\n    if( this.dismissOnTimeout() > 0 ) {\r\n      setTimeout( () => this.show.set( false ), this.dismissOnTimeout() );\r\n    }\r\n  }\r\n}\r\n","import { Component, signal } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\n\r\nimport { TbxAlert } from \"../alert.model\";\r\nimport { TbxAlertsService } from \"../alerts.service\";\r\nimport { TbxAlertComponent } from \"./alert.component\";\r\n\r\n@Component( {\r\n  selector: \"tbx-alerts\",\r\n  imports: [TbxAlertComponent],\r\n  template: `\r\n    @for (alert of alerts(); track alert.message) {\r\n      <tbx-alert [type]=\"alert.type\"\r\n                 [message]=\"alert.message\">\r\n      </tbx-alert>\r\n    }\r\n  `\r\n} )\r\nexport class TbxAlertsComponent {\r\n  public alerts = signal<TbxAlert[]>( [] );\r\n\r\n  public constructor( private readonly alertService: TbxAlertsService ) {\r\n    this.alertService\r\n        .getAlert()\r\n        .pipe( takeUntilDestroyed() )\r\n        .subscribe( alert => this.showAlert( alert ) );\r\n  }\r\n\r\n  public showAlert( alert: TbxAlert | null ): void {\r\n    if( alert != null ) {\r\n      this.alerts.update( currentAlerts => [...currentAlerts, alert] );\r\n\r\n      if( alert.dismissOnTimeout != null && alert.dismissOnTimeout > 0 ) {\r\n        setTimeout( () => this.removeAlert( alert ), alert.dismissOnTimeout );\r\n      }\r\n    }\r\n    else {\r\n      this.alerts.set( [] );\r\n    }\r\n  }\r\n\r\n  public removeAlert( alert: TbxAlert ): void {\r\n    this.alerts.update( als => als.filter( a => a !== alert ) );\r\n  }\r\n}\r\n","import { Component, computed, input } from \"@angular/core\";\r\nimport { TbxError } from \"@lacera/ngx-toolbox/http\";\r\nimport { TbxAlertComponent } from \"./alert.component\";\r\n\r\n@Component( {\r\n    selector: \"tbx-error-alert\",\r\n    imports: [TbxAlertComponent],\r\n    styles: `\r\n      :host\r\n      {\r\n        display : block;\r\n        margin  : 1rem 0\r\n      }\r\n    `,\r\n    template: `\r\n    <tbx-alert type=\"error\" [message]=\"displayMessage()\"></tbx-alert>\r\n  `\r\n} )\r\nexport class TbxErrorAlertComponent {\r\n  public readonly message = input.required<string | Error | undefined>();\r\n\r\n  public readonly displayMessage = computed( () => {\r\n    const msg = this.message();\r\n\r\n    if( !msg ) {\r\n      return \"\";\r\n    }\r\n\r\n    if( msg instanceof Error ) {\r\n      return msg.cause instanceof TbxError\r\n        ? msg.cause.message\r\n        : msg.message;\r\n    }\r\n\r\n    return msg;\r\n  });\r\n}\r\n","import { Component, input } from \"@angular/core\";\r\nimport { TbxAlertComponent } from \"./alert.component\";\r\n\r\n@Component( {\r\n  selector: \"tbx-success-alert\",\r\n  imports: [TbxAlertComponent],\r\n  template: `\r\n    <tbx-alert type=\"error\" [message]=\"message()\"></tbx-alert>\r\n  `\r\n} )\r\nexport class TbxSuccessAlertComponent {\r\n  /** The error message to display. */\r\n  public message = input.required<string>();\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TbxAlertsService"],"mappings":";;;;;;;AAKA;;;AAGG;MAEU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAmB;AAoEtD;AAlEC;;;;AAIG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAGzC;;;;AAIG;IACI,OAAO,CAAE,OAAe,EAAE,gBAAyB,EAAA;QACxD,IAAI,CAAC,KAAK,CAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAE;;AAGpD;;;;AAIG;IACI,KAAK,CAAE,OAAe,EAAE,gBAAyB,EAAA;QACtD,IAAI,CAAC,KAAK,CAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAE;;AAGlD;;;;AAIG;IACI,IAAI,CAAE,OAAe,EAAE,gBAAyB,EAAA;QACrD,IAAI,CAAC,KAAK,CAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAE;;AAGjD;;;;AAIG;IACI,OAAO,CAAE,OAAe,EAAE,gBAAyB,EAAA;QACxD,IAAI,CAAC,KAAK,CAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAE;;AAGpD;;;;;AAKG;AACI,IAAA,KAAK,CAAE,IAAkB,EAAE,OAAe,EAAE,gBAAyB,EAAA;AAC1E,QAAA,MAAM,KAAK,GAAa;AACtB,YAAA,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;YACjB,IAAI;YACJ,OAAO;YACP;SACD;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,KAAK,CAAE;;;IAI1B,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,IAAI,CAAE;;8GAnErB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,cADF,MAAM,EAAA,CAAA,CAAA;;2FACpB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAE,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCetB,iBAAiB,CAAA;AApB9B,IAAA,WAAA,GAAA;;AAsBS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA6B;;AAGrD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,SAAS,gDAAE;;AAGvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,CAAC,4DAAE;;AAGrC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,EAAE,iDAAE;AAE3B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAE,MAAK;AACjC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,YAAA,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;AACtC,SAAC,sDAAC;AAEK,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAE,MAAK;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAE,aAAa,EAAE,OAAO,CAAE,IAAI,EAAE;YAEnE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAE,GAAG,CAAE;AACtD,SAAC,0DAAE;AAEI,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAE,IAAI,gDAAE;AAErB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAE,MAAM;YAC/B,OAAO;AACP,YAAA,CAAA,MAAA,EAAU,IAAI,CAAC,SAAS,EAAG,CAAA,CAAE;YAC7B,mBAAmB;YACnB,WAAW;YACX,QAAQ;YACR,oBAAoB;YACpB,WAAW;AACX,YAAA,IAAI,CAAC;SACN,CAAC,MAAM,CAAE,OAAO,CAAE,CAAC,IAAI,CAAE,GAAG,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;AAE1B,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAE,MAAK;AAChC,YAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,SAAS;AAClB,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,QAAQ;AACjB,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,SAAS;AAClB,gBAAA;AACE,oBAAA,OAAO,MAAM;;AAEnB,SAAC,qDAAE;AAEI,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAE,MAAK;AAC/B,YAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,cAAc;AACvB,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,cAAc;AACvB,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,sBAAsB;AAC/B,gBAAA;AACE,oBAAA,OAAO,aAAa;;AAE1B,SAAC,oDAAE;AAEc,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAE,YAAY,CAAE;AAOpD;IALQ,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAG;AAChC,YAAA,UAAU,CAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,KAAK,CAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAE;;;8GApE5D,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,WAAA,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,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,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,EAVlB,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EAQN,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;;;MCJU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAqC,YAA8B,EAAA;QAA9B,IAAA,CAAA,YAAY,GAAZ,YAAY;AAF1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAc,EAAE,kDAAE;AAGtC,QAAA,IAAI,CAAC;AACA,aAAA,QAAQ;aACR,IAAI,CAAE,kBAAkB,EAAE;AAC1B,aAAA,SAAS,CAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE,CAAE;;AAG7C,IAAA,SAAS,CAAE,KAAsB,EAAA;AACtC,QAAA,IAAI,KAAK,IAAI,IAAI,EAAG;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,aAAa,IAAI,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,CAAE;AAEhE,YAAA,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAG;AACjE,gBAAA,UAAU,CAAE,MAAM,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE,EAAE,KAAK,CAAC,gBAAgB,CAAE;;;aAGpE;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,EAAE,CAAE;;;AAIlB,IAAA,WAAW,CAAE,KAAe,EAAA;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAE,CAAE;;8GAxBlD,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,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,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARnB,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAShB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAE,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA;AACF,iBAAA;;;MCCY,sBAAsB,CAAA;AAdnC,IAAA,WAAA,GAAA;AAekB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA8B;AAEtD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAE,MAAK;AAC9C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;YAE1B,IAAI,CAAC,GAAG,EAAG;AACT,gBAAA,OAAO,EAAE;;AAGX,YAAA,IAAI,GAAG,YAAY,KAAK,EAAG;AACzB,gBAAA,OAAO,GAAG,CAAC,KAAK,YAAY;AAC1B,sBAAE,GAAG,CAAC,KAAK,CAAC;AACZ,sBAAE,GAAG,CAAC,OAAO;;AAGjB,YAAA,OAAO,GAAG;AACZ,SAAC,0DAAC;AACH;8GAlBY,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,iBAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJrB,CAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAVW,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAYlB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAQlB,CAAA;;AAEX,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA;;;MCNU,wBAAwB,CAAA;AAPrC,IAAA,WAAA,GAAA;;AASS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAU;AAC1C;8GAHY,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,mBAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJzB,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAHS,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKhB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AAAE,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;AAET,EAAA;AACF,iBAAA;;;ACTD;;AAEG;;;;"}