{"version":3,"file":"ng-alt-snotify.mjs","sources":["../../../projects/ng-alt-snotify/src/lib/enums/snotify-style.enum.ts","../../../projects/ng-alt-snotify/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ng-alt-snotify/src/lib/utils.ts","../../../projects/ng-alt-snotify/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ng-alt-snotify/src/lib/models/snotify-toast.model.ts","../../../projects/ng-alt-snotify/src/lib/services/snotify.service.ts","../../../projects/ng-alt-snotify/src/lib/components/buttons/buttons.component.ts","../../../projects/ng-alt-snotify/src/lib/components/buttons/buttons.component.html","../../../projects/ng-alt-snotify/src/lib/pipes/truncate.pipe.ts","../../../projects/ng-alt-snotify/src/lib/components/prompt/prompt.component.ts","../../../projects/ng-alt-snotify/src/lib/components/prompt/prompt.component.html","../../../projects/ng-alt-snotify/src/lib/enums/snotify-position.enum.ts","../../../projects/ng-alt-snotify/src/lib/components/toast/toast.component.ts","../../../projects/ng-alt-snotify/src/lib/components/toast/toast.component.html","../../../projects/ng-alt-snotify/src/lib/pipes/keys.pipe.ts","../../../projects/ng-alt-snotify/src/lib/components/snotify/snotify.component.ts","../../../projects/ng-alt-snotify/src/lib/components/snotify/snotify.component.html","../../../projects/ng-alt-snotify/src/lib/snotify.module.ts","../../../projects/ng-alt-snotify/src/lib/toast-defaults.ts","../../../projects/ng-alt-snotify/src/public-api.ts","../../../projects/ng-alt-snotify/src/ng-alt-snotify.ts"],"sourcesContent":["/**\n * Toast style.\n */\nexport enum SnotifyStyle {\n  simple = 'simple',\n  success = 'success',\n  error = 'error',\n  warning = 'warning',\n  info = 'info',\n  async = 'async',\n  confirm = 'confirm',\n  prompt = 'prompt'\n}\n","import { Snotify } from '../interfaces/snotify.interface';\nimport { SnotifyTypeType } from '../types/snotify-type.type';\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\n\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(target: any, propertyKey: SnotifyTypeType, descriptor: PropertyDescriptor) {\n  if (propertyKey === SnotifyStyle.async) {\n    return {\n      value(...args: any[]) {\n        let result;\n        if (args.length === 2) {\n          result = {\n            title: null,\n            body: args[0],\n            config: null,\n            action: args[1]\n          };\n        } else if (args.length === 3) {\n          if (typeof args[1] === 'string') {\n            result = {\n              title: args[1],\n              body: args[0],\n              config: null,\n              action: args[2]\n            };\n          } else {\n            result = {\n              title: null,\n              body: args[0],\n              config: args[2],\n              action: args[1]\n            };\n          }\n        } else {\n          result = {\n            title: args[1],\n            body: args[0],\n            config: args[3],\n            action: args[2]\n          };\n        }\n        return descriptor.value.apply(this, [result as Snotify]);\n      }\n    };\n  } else {\n    return {\n      value(...args: any[]) {\n        let result;\n        if (args.length === 1) {\n          result = {\n            title: null,\n            body: args[0],\n            config: null\n          };\n        } else if (args.length === 3) {\n          result = {\n            title: args[1],\n            body: args[0],\n            config: args[2]\n          };\n        } else {\n          result = {\n            title: null,\n            config: null,\n            body: args[0],\n            [typeof args[1] === 'string' ? 'title' : 'config']: args[1]\n          };\n        }\n        return descriptor.value.apply(this, [result as Snotify]);\n      }\n    };\n  }\n}\n","/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n  return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item): boolean {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n\n/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources) {\n  const target = {};\n  if (!sources.length) {\n    return target;\n  }\n\n  while (sources.length > 0) {\n    const source = sources.shift();\n    if (isObject(source)) {\n      for (const key in source) {\n        if (isObject(source[key])) {\n          target[key] = mergeDeep(target[key], source[key]);\n        } else {\n          Object.assign(target, { [key]: source[key] });\n        }\n      }\n    }\n  }\n  return target;\n}\n\nexport function animate(start: number, duration: number, callback: (currentValue: number, progress: number) => {}) {\n  let endTime;\n  requestAnimationFrame(timestamp => (endTime = timestamp + duration));\n  const calculate = () => {\n    requestAnimationFrame(timestamp => {\n      const runtime = timestamp - endTime;\n      const progress = Math.min(runtime / duration, 1) + start;\n      if (runtime < duration) {\n        if (callback(+(100 * progress).toFixed(2), progress)) {\n          calculate();\n        }\n      }\n    });\n  };\n}\n","import { SnotifyTypeType } from '../types/snotify-type.type';\nimport { Snotify } from '../interfaces/snotify.interface';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(target: any, propertyKey: SnotifyTypeType, descriptor: PropertyDescriptor) {\n  return {\n    value(...args: any[]) {\n      (args[0] as Snotify).config = {\n        ...(args[0] as Snotify).config,\n        type: propertyKey\n      };\n      return descriptor.value.apply(this, args);\n    }\n  };\n}\n","import { SnotifyToastConfig } from '../interfaces/snotify-toast-config.interface';\nimport { Subject, Subscription } from 'rxjs';\nimport { SnotifyEventType } from '../types/snotify-event.type';\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\n// @TODO remove method in observable way\n/**\n * Toast main model\n */\nexport class SnotifyToast {\n  /**\n   * Emits SnotifyEventType\n   */\n  readonly eventEmitter = new Subject<SnotifyEventType>();\n  /**\n   * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n   */\n  private eventsHolder: Subscription[] = [];\n  /**\n   * Toast prompt value\n   */\n  value: string;\n  /**\n   * Toast validator\n   */\n  valid: boolean;\n  constructor(public id: number, public title: string, public body: string, public config: SnotifyToastConfig) {\n    if (this.config.type === SnotifyStyle.prompt) {\n      this.value = '';\n    }\n    this.on('hidden', () => {\n      this.eventsHolder.forEach((subscription: Subscription) => {\n        subscription.unsubscribe();\n      });\n    });\n  }\n\n  /**\n   * Subscribe to toast events\n   * @returns this\n   * @param event SnotifyEventType\n   * @param action (toast: this) => void\n   */\n  on(event: SnotifyEventType, action: (toast: this) => void): this {\n    this.eventsHolder.push(\n      this.eventEmitter.subscribe((e: SnotifyEventType) => {\n        if (e === event) {\n          action(this);\n        }\n      })\n    );\n    return this;\n  }\n\n  /**\n   * Tests if a toast equals this toast.\n   * @returns boolean true then equals else false.\n   * @param toast SnotifyToast\n   */\n  equals(toast: SnotifyToast): boolean {\n    return this.body === toast.body && this.title === toast.title && this.config.type === toast.config.type;\n  }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription, from } from 'rxjs';\nimport { SnotifyToastConfig } from '../interfaces/snotify-toast-config.interface';\nimport { Snotify } from '../interfaces/snotify.interface';\nimport { SnotifyTypeType } from '../types/snotify-type.type';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { mergeDeep, uuid } from '../utils';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { SnotifyDefaults } from '../interfaces/snotify-defaults.interface';\nimport { SnotifyToast } from '../models/snotify-toast.model';\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\n\n/**\n * SnotifyService - create, remove, config toasts\n */\n@Injectable()\n// tslint:disable:unified-signatures\nexport class SnotifyService {\n  readonly emitter = new Subject<SnotifyToast[]>();\n  readonly toastChanged = new Subject<SnotifyToast>();\n  readonly toastDeleted = new Subject<number>();\n  private notifications: SnotifyToast[] = [];\n\n  constructor(@Inject('SnotifyToastConfig') public config: SnotifyDefaults) {}\n  /**\n   * emit changes in notifications array\n   */\n  private emit(): void {\n    this.emitter.next(this.notifications.slice());\n  }\n\n  /**\n   * returns SnotifyToast object\n   * @param id Number\n   * @return SnotifyToast|undefined\n   */\n  get(id: number): SnotifyToast {\n    return this.notifications.find(toast => toast.id === id);\n  }\n\n  /**\n   * add SnotifyToast to notifications array\n   * @param toast SnotifyToast\n   */\n  private add(toast: SnotifyToast): void {\n    if (this.config.global.filterDuplicates && this.containsToast(toast)) {\n      return;\n    }\n    if (this.config.global.newOnTop) {\n      this.notifications.unshift(toast);\n    } else {\n      this.notifications.push(toast);\n    }\n    this.emit();\n  }\n\n  /**\n   * checks if the toast is in the collection.\n   * @param inToast SnotifyToast\n   * @returns boolean\n   */\n  private containsToast(inToast: SnotifyToast): boolean {\n    return this.notifications.some(toast => toast.equals(inToast));\n  }\n\n  /**\n   * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n   * @param id number\n   * @param remove boolean\n   */\n  remove(id?: number, remove?: boolean): void {\n    if (!id) {\n      return this.clear();\n    } else if (remove) {\n      this.notifications = this.notifications.filter(toast => toast.id !== id);\n      return this.emit();\n    }\n    this.toastDeleted.next(id);\n  }\n\n  /**\n   * Clear notifications array\n   */\n  clear(): void {\n    this.notifications = [];\n    this.emit();\n  }\n\n  /**\n   * Creates toast and add it to array, returns toast id\n   * @param snotify Snotify\n   * @return number\n   */\n  create(snotify: Snotify): SnotifyToast {\n    const config = mergeDeep(this.config.toast, this.config.type[snotify.config.type], snotify.config);\n    const toast = new SnotifyToast(uuid(), snotify.title, snotify.body, config);\n    this.add(toast);\n    return toast;\n  }\n\n  setDefaults(defaults: SnotifyDefaults): SnotifyDefaults {\n    return (this.config = mergeDeep(this.config, defaults) as SnotifyDefaults);\n  }\n\n  /**\n   * Create toast with simple style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  simple(body: string): SnotifyToast;\n  /**\n   * Create toast with simple style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  simple(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with simple style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  simple(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with simple style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  simple(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  simple(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  success(body: string): SnotifyToast;\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  success(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  success(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with success style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  success(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  success(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  error(body: string): SnotifyToast;\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  error(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  error(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with error style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  error(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  error(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  info(body: string): SnotifyToast;\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  info(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  info(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with info style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  info(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  info(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  warning(body: string): SnotifyToast;\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  warning(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  warning(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with warning style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  warning(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  warning(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  confirm(body: string): SnotifyToast;\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  confirm(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  confirm(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with confirm style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  confirm(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  confirm(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @returns number\n   */\n  prompt(body: string): SnotifyToast;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  prompt(body: string, title: string): SnotifyToast;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  prompt(body: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  prompt(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  prompt(args: any): SnotifyToast {\n    return this.create(args);\n  }\n\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param action Promise<Snotify> | Observable<Snotify>\n   * @returns number\n   */\n  async(body: string, action: Promise<Snotify> | Observable<Snotify>): SnotifyToast;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param title string\n   * @param action Promise<Snotify> | Observable<Snotify>\n   * @returns number\n   */\n  async(body: string, title: string, action: Promise<Snotify> | Observable<Snotify>): SnotifyToast;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param action Promise<Snotify> | Observable<Snotify>\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  async(body: string, action: Promise<Snotify> | Observable<Snotify>, config: SnotifyToastConfig): SnotifyToast;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param title string\n   * @param action Promise<Snotify> | Observable<Snotify>\n   * @param [config] SnotifyToastConfig\n   * @returns number\n   */\n  async(\n    body: string,\n    title: string,\n    action: Promise<Snotify> | Observable<Snotify>,\n    config: SnotifyToastConfig\n  ): SnotifyToast;\n  /**\n   * Transform toast arguments into Snotify object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  async(args: any): SnotifyToast {\n    let async: Observable<any>;\n    if (args.action instanceof Promise) {\n      async = from(args.action);\n    } else {\n      async = args.action;\n    }\n\n    const toast = this.create(args);\n\n    toast.on('mounted', () => {\n      const subscription: Subscription = async.subscribe(\n        (next?: Snotify) => {\n          this.mergeToast(toast, next);\n        },\n        (error?: Snotify) => {\n          this.mergeToast(toast, error, SnotifyStyle.error);\n          subscription.unsubscribe();\n        },\n        () => {\n          this.mergeToast(toast, {}, SnotifyStyle.success);\n          subscription.unsubscribe();\n        }\n      );\n    });\n\n    return toast;\n  }\n\n  private mergeToast(toast, next, type?: SnotifyTypeType) {\n    if (next.body) {\n      toast.body = next.body;\n    }\n    if (next.title) {\n      toast.title = next.title;\n    }\n    if (type) {\n      toast.config = mergeDeep(toast.config, this.config.global, this.config.toast[type], { type }, next.config);\n    } else {\n      toast.config = mergeDeep(toast.config, next.config);\n    }\n    if (next.html) {\n      toast.config.html = next.html;\n    }\n    this.emit();\n    this.toastChanged.next(toast);\n  }\n\n  /**\n   * Creates empty toast with html string inside\n   * @param html string | SafeHtml\n   * @param config SnotifyToastConfig\n   * @returns number\n   */\n  html(html: string | SafeHtml, config?: SnotifyToastConfig): SnotifyToast {\n    return this.create({\n      title: null,\n      body: null,\n      config: {\n        ...config,\n        ...{ html }\n      }\n    });\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SnotifyService } from '../../services/snotify.service';\nimport { SnotifyToast } from '../../models/snotify-toast.model';\n\n@Component({\n  selector: 'ng-snotify-button',\n  templateUrl: './buttons.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\n\n/**\n * Buttons component\n */\nexport class ButtonsComponent {\n  /**\n   * Get buttons Array\n   */\n  @Input() toast: SnotifyToast;\n  constructor(private service: SnotifyService) {}\n\n  /**\n   * remove toast\n   */\n  remove() {\n    this.service.remove(this.toast.id);\n  }\n}\n","<div class=\"snotifyToast__buttons\">\n  <button\n    type=\"button\"\n    *ngFor=\"let button of toast.config.buttons\"\n    [ngClass]=\"{ 'snotifyToast__buttons--bold': button.bold }\"\n    (click)=\"button.action ? button.action(toast) : remove()\"\n  >\n    {{ button.text }}\n  </button>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'truncate'\n})\n\n/**\n * Truncate toast text pipe\n */\nexport class TruncatePipe implements PipeTransform {\n  transform(value: string, ...args: Array<any>): any {\n    let limit = 40;\n    let trail = '...';\n    if (args.length > 0) {\n      limit = args.length > 0 ? parseInt(args[0], 10) : limit;\n      trail = args.length > 1 ? args[1] : trail;\n    }\n\n    return value.length > limit ? value.substring(0, limit) + trail : value;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SnotifyToast } from '../../models/snotify-toast.model';\n\n@Component({\n  selector: 'ng-snotify-prompt',\n  templateUrl: './prompt.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\n\n/**\n * Prompt component. Part of PROMPT type\n */\nexport class PromptComponent {\n  /**\n   * Get PROMPT placeholder\n   */\n  @Input() toast: SnotifyToast;\n  /**\n   * Is PROMPT focused\n   */\n  isPromptFocused = false;\n\n  handleInput($event: Event) {\n    this.toast.value = ($event.target as HTMLInputElement).value;\n    this.toast.eventEmitter.next('input');\n  }\n}\n","<span class=\"snotifyToast__input\" [ngClass]=\"{ 'snotifyToast__input--filled': isPromptFocused }\">\n  <input\n    (input)=\"handleInput($event)\"\n    autofocus\n    class=\"snotifyToast__input__field\"\n    type=\"text\"\n    [id]=\"toast.id\"\n    (focus)=\"isPromptFocused = true\"\n    (blur)=\"isPromptFocused = !!toast.value.length\"\n  />\n  <label class=\"snotifyToast__input__label\" [for]=\"toast.id\">\n    <span class=\"snotifyToast__input__labelContent\">{{ toast.config.placeholder | truncate }}</span>\n  </label>\n</span>\n","/**\n * Toast position\n */\nexport enum SnotifyPosition {\n  leftTop = 'leftTop',\n  leftCenter = 'leftCenter',\n  leftBottom = 'leftBottom',\n  rightTop = 'rightTop',\n  rightCenter = 'rightCenter',\n  rightBottom = 'rightBottom',\n  centerTop = 'centerTop',\n  centerCenter = 'centerCenter',\n  centerBottom = 'centerBottom'\n}\n","import {\n  AfterContentInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport { SnotifyService } from '../../services/snotify.service';\nimport { SnotifyToast } from '../../models/snotify-toast.model';\nimport { Subscription } from 'rxjs';\nimport { SnotifyEventType } from '../../types/snotify-event.type';\nimport { SnotifyStyle } from '../../enums/snotify-style.enum';\n\n@Component({\n  selector: 'ng-snotify-toast',\n  templateUrl: './toast.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class ToastComponent implements OnInit, OnDestroy, AfterContentInit {\n  /**\n   * Get toast from notifications array\n   */\n  @Input() toast: any | SnotifyToast;\n  @Output() stateChanged = new EventEmitter<SnotifyEventType>();\n\n  toastDeletedSubscription: Subscription;\n  toastChangedSubscription: Subscription;\n\n  /**\n   * requestAnimationFrame id\n   */\n  animationFrame: number;\n\n  /**\n   * Toast state\n   */\n  state = {\n    paused: false,\n    progress: 0,\n    animation: '',\n    isDestroying: false,\n    promptType: SnotifyStyle.prompt\n  };\n\n  constructor(private service: SnotifyService) {}\n\n  // Lifecycles\n\n  /**\n   * Init base options. Subscribe to toast changed, toast deleted\n   */\n  ngOnInit() {\n    this.toastChangedSubscription = this.service.toastChanged.subscribe((toast: SnotifyToast) => {\n      if (this.toast.id === toast.id) {\n        this.initToast();\n      }\n    });\n    this.toastDeletedSubscription = this.service.toastDeleted.subscribe(id => {\n      if (this.toast.id === id) {\n        this.onRemove();\n      }\n    });\n    if (!this.toast.config.timeout) {\n      this.toast.config.showProgressBar = false;\n    }\n    this.toast.eventEmitter.next('mounted');\n    this.state.animation = 'snotifyToast--in';\n  }\n\n  ngAfterContentInit() {\n    setTimeout(() => {\n      this.stateChanged.emit('beforeShow');\n      this.toast.eventEmitter.next('beforeShow');\n      this.state.animation = this.toast.config.animation.enter;\n    }, this.service.config.toast.animation.time / 5); // time to show toast push animation (snotifyToast--in)\n  }\n\n  /**\n   * Unsubscribe subscriptions\n   */\n  ngOnDestroy(): void {\n    cancelAnimationFrame(this.animationFrame);\n    this.toast.eventEmitter.next('destroyed');\n    this.toastChangedSubscription.unsubscribe();\n    this.toastDeletedSubscription.unsubscribe();\n  }\n\n  /*\n  Event hooks\n   */\n\n  /**\n   * Trigger OnClick lifecycle\n   */\n  onClick() {\n    this.toast.eventEmitter.next('click');\n    if (this.toast.config.closeOnClick) {\n      this.service.remove(this.toast.id);\n    }\n  }\n\n  /**\n   * Trigger beforeDestroy lifecycle. Removes toast\n   */\n  onRemove() {\n    this.state.isDestroying = true;\n    this.toast.eventEmitter.next('beforeHide');\n    this.stateChanged.emit('beforeHide');\n    this.state.animation = this.toast.config.animation.exit;\n    setTimeout(() => {\n      this.stateChanged.emit('hidden');\n      this.state.animation = 'snotifyToast--out';\n      this.toast.eventEmitter.next('hidden');\n      setTimeout(() => this.service.remove(this.toast.id, true), this.toast.config.animation.time / 2);\n    }, this.toast.config.animation.time / 2);\n  }\n\n  /**\n   * Trigger onHoverEnter lifecycle\n   */\n  onMouseEnter() {\n    this.toast.eventEmitter.next('mouseenter');\n    if (this.toast.config.pauseOnHover) {\n      this.state.paused = true;\n    }\n  }\n\n  /**\n   * Trigger onHoverLeave lifecycle\n   */\n  onMouseLeave() {\n    if (this.toast.config.pauseOnHover && this.toast.config.timeout) {\n      this.state.paused = false;\n      this.startTimeout(this.toast.config.timeout * this.state.progress);\n    }\n    this.toast.eventEmitter.next('mouseleave');\n  }\n\n  /**\n   * Remove toast completely after animation\n   */\n  onExitTransitionEnd() {\n    if (this.state.isDestroying) {\n      return;\n    }\n    this.initToast();\n    this.toast.eventEmitter.next('shown');\n  }\n\n  /*\n   Common\n   */\n\n  /**\n   * Initialize base toast config\n   *\n   */\n  initToast(): void {\n    if (this.toast.config.timeout > 0) {\n      this.startTimeout(0);\n    }\n  }\n\n  /**\n   * Start progress bar\n   * @param startTime number\n   */\n  startTimeout(startTime: number = 0) {\n    const start = performance.now();\n    const calculate = () => {\n      this.animationFrame = requestAnimationFrame(timestamp => {\n        const runtime = timestamp + startTime - start;\n        const progress = Math.min(runtime / this.toast.config.timeout, 1);\n        if (this.state.paused) {\n          cancelAnimationFrame(this.animationFrame);\n        } else if (runtime < this.toast.config.timeout) {\n          this.state.progress = progress;\n          calculate();\n        } else {\n          this.state.progress = 1;\n          cancelAnimationFrame(this.animationFrame);\n          this.service.remove(this.toast.id);\n        }\n      });\n    };\n    calculate();\n  }\n}\n","<div\n  [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n  [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n  [attr.aria-modal]=\"toast.config.type === state.promptType\"\n  [ngClass]=\"[\n    'snotifyToast animated',\n    'snotify-' + toast.config.type,\n    state.animation,\n    toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n  ]\"\n  [ngStyle]=\"{\n    '-webkit-transition': toast.config.animation.time + 'ms',\n    transition: toast.config.animation.time + 'ms',\n    '-webkit-animation-duration': toast.config.animation.time + 'ms',\n    'animation-duration': toast.config.animation.time + 'ms'\n  }\"\n  (animationend)=\"onExitTransitionEnd()\"\n  (click)=\"onClick()\"\n  (mouseenter)=\"onMouseEnter()\"\n  (mouseleave)=\"onMouseLeave()\"\n>\n  <div class=\"snotifyToast__progressBar\" *ngIf=\"toast.config.showProgressBar\">\n    <span class=\"snotifyToast__progressBar__percentage\" [ngStyle]=\"{ width: state.progress * 100 + '%' }\"></span>\n  </div>\n  <div class=\"snotifyToast__inner\" *ngIf=\"!toast.config.html; else toastHTML\">\n    <div class=\"snotifyToast__title\" [attr.id]=\"'snotify_' + toast.id\" *ngIf=\"toast.title\">\n      {{ toast.title | truncate: toast.config.titleMaxLength }}\n    </div>\n    <div class=\"snotifyToast__body\" *ngIf=\"toast.body\">{{ toast.body | truncate: toast.config.bodyMaxLength }}</div>\n    <ng-snotify-prompt *ngIf=\"toast.config.type === state.promptType\" [toast]=\"toast\"> </ng-snotify-prompt>\n    <div\n      *ngIf=\"!toast.config.icon; else elseBlock\"\n      [ngClass]=\"['snotify-icon', toast.config.iconClass || 'snotify-icon--' + toast.config.type]\"\n    ></div>\n    <ng-template #elseBlock>\n      <img class=\"snotify-icon\" [src]=\"toast.config.icon\" />\n    </ng-template>\n  </div>\n  <ng-template #toastHTML>\n    <div class=\"snotifyToast__inner\" [innerHTML]=\"toast.config.html\"></div>\n  </ng-template>\n  <ng-snotify-button *ngIf=\"toast.config.buttons\" [toast]=\"toast\"></ng-snotify-button>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'keys',\n  pure: false\n})\n/**\n * Extract object keys pipe\n */\nexport class KeysPipe implements PipeTransform {\n  transform(value: any, args: any[] = null): any {\n    if (!value) {\n      return value;\n    }\n    return Object.keys(value);\n  }\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SnotifyService } from '../../services/snotify.service';\nimport { SnotifyToast } from '../../models/snotify-toast.model';\nimport { Subscription } from 'rxjs';\nimport { SnotifyNotifications } from '../../interfaces/snotify-notifications.interface';\nimport { SnotifyPosition } from '../../enums/snotify-position.enum';\nimport { SnotifyEventType } from '../../types/snotify-event.type';\n\n@Component({\n  selector: 'ng-snotify',\n  templateUrl: './snotify.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class SnotifyComponent implements OnInit, OnDestroy {\n  /**\n   * Toasts array\n   */\n  notifications: SnotifyNotifications;\n  /**\n   * Toasts emitter\n   */\n  emitter: Subscription;\n  /**\n   * Helper for slice pipe (maxOnScreen)\n   */\n  dockSizeA: number;\n  /**\n   * Helper for slice pipe (maxOnScreen)\n   */\n  dockSizeB: number | undefined;\n  /**\n   * Helper for slice pipe (maxAtPosition)\n   */\n  blockSizeA: number;\n  /**\n   * Helper for slice pipe (maxAtPosition)\n   */\n  blockSizeB: number | undefined;\n  /**\n   * Backdrop Opacity\n   */\n  backdrop = -1;\n  /**\n   * How many toasts with backdrop in current queue\n   */\n  withBackdrop: SnotifyToast[];\n\n  constructor(private service: SnotifyService) {}\n\n  /**\n   * Init base options. Subscribe to options, lifecycle change\n   */\n  ngOnInit() {\n    this.emitter = this.service.emitter.subscribe((toasts: SnotifyToast[]) => {\n      if (this.service.config.global.newOnTop) {\n        this.dockSizeA = -this.service.config.global.maxOnScreen;\n        this.dockSizeB = undefined;\n        this.blockSizeA = -this.service.config.global.maxAtPosition;\n        this.blockSizeB = undefined;\n        this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0);\n      } else {\n        this.dockSizeA = 0;\n        this.dockSizeB = this.service.config.global.maxOnScreen;\n        this.blockSizeA = 0;\n        this.blockSizeB = this.service.config.global.maxAtPosition;\n        this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0).reverse();\n      }\n      this.notifications = this.splitToasts(toasts.slice(this.dockSizeA, this.dockSizeB));\n      this.stateChanged('mounted');\n    });\n  }\n\n  // TODO: fix backdrop if more than one toast called in a row\n  /**\n   * Changes the backdrop opacity\n   * @param event SnotifyEventType\n   */\n  stateChanged(event: SnotifyEventType) {\n    if (!this.withBackdrop.length) {\n      if (this.backdrop >= 0) {\n        this.backdrop = -1;\n      }\n      return;\n    }\n    switch (event) {\n      case 'mounted':\n        if (this.backdrop < 0) {\n          this.backdrop = 0;\n        }\n        break;\n      case 'beforeShow':\n        this.backdrop = this.withBackdrop[this.withBackdrop.length - 1].config.backdrop;\n        break;\n      case 'beforeHide':\n        if (this.withBackdrop.length === 1) {\n          this.backdrop = 0;\n        }\n        break;\n      case 'hidden':\n        if (this.withBackdrop.length === 1) {\n          this.backdrop = -1;\n        }\n        break;\n    }\n  }\n\n  /**\n   * Split toasts toasts into different objects\n   * @param toasts SnotifyToast[]\n   * @returns SnotifyNotifications\n   */\n  splitToasts(toasts: SnotifyToast[]): SnotifyNotifications {\n    const result: SnotifyNotifications = {};\n\n    for (const property in SnotifyPosition) {\n      if (SnotifyPosition.hasOwnProperty(property)) {\n        result[SnotifyPosition[property]] = [];\n      }\n    }\n\n    toasts.forEach((toast: SnotifyToast) => {\n      result[toast.config.position as string].push(toast);\n    });\n\n    return result;\n  }\n\n  /**\n   * Unsubscribe subscriptions\n   */\n  ngOnDestroy() {\n    this.emitter.unsubscribe();\n  }\n}\n","<div class=\"snotify-backdrop\" *ngIf=\"backdrop >= 0\" [style.opacity]=\"backdrop\"></div>\n<div *ngFor=\"let position of notifications | keys\" class=\"snotify snotify-{{ position }}\">\n  <ng-snotify-toast\n    *ngFor=\"let notification of notifications[position] | slice: blockSizeA:blockSizeB\"\n    [toast]=\"notification\"\n    (stateChanged)=\"stateChanged($event)\"\n  >\n  </ng-snotify-toast>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { SnotifyComponent } from './components/snotify/snotify.component';\nimport { SnotifyService } from './services/snotify.service';\nimport { KeysPipe } from './pipes/keys.pipe';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { CommonModule } from '@angular/common';\nimport { ButtonsComponent } from './components/buttons/buttons.component';\nimport { PromptComponent } from './components/prompt/prompt.component';\nimport { ToastComponent } from './components/toast/toast.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SnotifyComponent, ToastComponent, TruncatePipe, ButtonsComponent, PromptComponent, KeysPipe],\n  exports: [SnotifyComponent, TruncatePipe, KeysPipe]\n})\nexport class SnotifyModule {\n  static forRoot(): ModuleWithProviders<SnotifyModule> {\n    return {\n      ngModule: SnotifyModule,\n      providers: [SnotifyService]\n    };\n  }\n}\n","import { SnotifyPosition } from './enums/snotify-position.enum';\nimport { SnotifyStyle } from './enums/snotify-style.enum';\n\n/**\n * Snotify default configuration object\n */\nexport const ToastDefaults = {\n  global: {\n    newOnTop: true,\n    maxOnScreen: 8,\n    maxAtPosition: 8,\n    filterDuplicates: false\n  },\n  toast: {\n    type: SnotifyStyle.simple,\n    showProgressBar: true,\n    timeout: 2000,\n    closeOnClick: true,\n    pauseOnHover: true,\n    bodyMaxLength: 150,\n    titleMaxLength: 16,\n    backdrop: -1,\n    icon: null,\n    iconClass: null,\n    html: null,\n    position: SnotifyPosition.rightBottom,\n    animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 }\n  },\n  type: {\n    [SnotifyStyle.prompt]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [\n        { text: 'Ok', action: null, bold: true },\n        { text: 'Cancel', action: null, bold: false }\n      ],\n      placeholder: 'Enter answer here...',\n      type: SnotifyStyle.prompt\n    },\n    [SnotifyStyle.confirm]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [\n        { text: 'Ok', action: null, bold: true },\n        { text: 'Cancel', action: null, bold: false }\n      ],\n      type: SnotifyStyle.confirm\n    },\n    [SnotifyStyle.simple]: {\n      type: SnotifyStyle.simple\n    },\n    [SnotifyStyle.success]: {\n      type: SnotifyStyle.success\n    },\n    [SnotifyStyle.error]: {\n      type: SnotifyStyle.error\n    },\n    [SnotifyStyle.warning]: {\n      type: SnotifyStyle.warning\n    },\n    [SnotifyStyle.info]: {\n      type: SnotifyStyle.info\n    },\n    [SnotifyStyle.async]: {\n      pauseOnHover: false,\n      closeOnClick: false,\n      timeout: 0,\n      showProgressBar: false,\n      type: SnotifyStyle.async\n    }\n  }\n};\n","/*\n * Public API Surface of ng-alt-snotify\n */\n\nexport * from './lib/components';\nexport * from './lib/enums';\nexport * from './lib/interfaces';\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/snotify.module';\nexport * from './lib/toast-defaults';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifyService","i1","i2.TruncatePipe","i3.ButtonsComponent","i4.PromptComponent","i5.TruncatePipe","i3.ToastComponent","i4.KeysPipe"],"mappings":";;;;;;;AAAA;;AAEG;IACS,aASX;AATD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EATW,YAAY,KAAZ,YAAY,GASvB,EAAA,CAAA,CAAA;;ACRD;;;;;;AAMG;SACa,iBAAiB,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B,EAAA;AACzG,IAAA,IAAI,WAAW,KAAK,YAAY,CAAC,KAAK,EAAE;QACtC,OAAO;YACL,KAAK,CAAC,GAAG,IAAW,EAAA;AAClB,gBAAA,IAAI,MAAM,CAAC;AACX,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB,CAAC;iBACH;AAAM,qBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/B,wBAAA,MAAM,GAAG;AACP,4BAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,4BAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,4BAAA,MAAM,EAAE,IAAI;AACZ,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;yBAChB,CAAC;qBACH;yBAAM;AACL,wBAAA,MAAM,GAAG;AACP,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACf,4BAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;yBAChB,CAAC;qBACH;iBACF;qBAAM;AACL,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACf,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB,CAAC;iBACH;AACD,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAiB,CAAC,CAAC,CAAC;aAC1D;SACF,CAAC;KACH;SAAM;QACL,OAAO;YACL,KAAK,CAAC,GAAG,IAAW,EAAA;AAClB,gBAAA,IAAI,MAAM,CAAC;AACX,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAC;iBACH;AAAM,qBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACb,wBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;qBAChB,CAAC;iBACH;qBAAM;AACL,oBAAA,MAAM,GAAG;AACP,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;wBACb,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;qBAC5D,CAAC;iBACH;AACD,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAiB,CAAC,CAAC,CAAC;aAC1D;SACF,CAAC;KACH;AACH;;AC9EA;;;AAGG;SACa,IAAI,GAAA;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;AAIG;AACG,SAAU,QAAQ,CAAC,IAAI,EAAA;AAC3B,IAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;;AAIG;AACa,SAAA,SAAS,CAAC,GAAG,OAAO,EAAA;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACzB,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBACnD;qBAAM;AACL,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC/C;aACF;SACF;KACF;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAwD,EAAA;AAC/G,IAAA,IAAI,OAAO,CAAC;AACZ,IAAA,qBAAqB,CAAC,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAK;QACrB,qBAAqB,CAAC,SAAS,IAAG;AAChC,YAAA,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACpC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACzD,YAAA,IAAI,OAAO,GAAG,QAAQ,EAAE;AACtB,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AACpD,oBAAA,SAAS,EAAE,CAAC;iBACb;aACF;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AACJ;;ACtDA;;;;;;AAMG;SACa,YAAY,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B,EAAA;IACpG,OAAO;QACL,KAAK,CAAC,GAAG,IAAW,EAAA;AACjB,YAAA,IAAI,CAAC,CAAC,CAAa,CAAC,MAAM,GAAG;AAC5B,gBAAA,GAAI,IAAI,CAAC,CAAC,CAAa,CAAC,MAAM;AAC9B,gBAAA,IAAI,EAAE,WAAW;aAClB,CAAC;YACF,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC3C;KACF,CAAC;AACJ;;AChBA;AACA;;AAEG;MACU,YAAY,CAAA;AAiBJ,IAAA,EAAA,CAAA;AAAmB,IAAA,KAAA,CAAA;AAAsB,IAAA,IAAA,CAAA;AAAqB,IAAA,MAAA,CAAA;AAhBjF;;AAEG;AACM,IAAA,YAAY,GAAG,IAAI,OAAO,EAAoB,CAAC;AACxD;;AAEG;IACK,YAAY,GAAmB,EAAE,CAAC;AAC1C;;AAEG;AACH,IAAA,KAAK,CAAS;AACd;;AAEG;AACH,IAAA,KAAK,CAAU;AACf,IAAA,WAAA,CAAmB,EAAU,EAAS,KAAa,EAAS,IAAY,EAAS,MAA0B,EAAA;QAAxF,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAS,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAS,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;QACzG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACjB;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAK;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,YAA0B,KAAI;gBACvD,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;IACH,EAAE,CAAC,KAAuB,EAAE,MAA6B,EAAA;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAmB,KAAI;AAClD,YAAA,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,CAAC;aACd;SACF,CAAC,CACH,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,KAAmB,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;KACzG;AACF;;AChDD;;AAEG;AAEH;MACa,cAAc,CAAA;AAMwB,IAAA,MAAA,CAAA;AALxC,IAAA,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAC;AACxC,IAAA,YAAY,GAAG,IAAI,OAAO,EAAgB,CAAC;AAC3C,IAAA,YAAY,GAAG,IAAI,OAAO,EAAU,CAAC;IACtC,aAAa,GAAmB,EAAE,CAAC;AAE3C,IAAA,WAAA,CAAiD,MAAuB,EAAA;QAAvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;KAAI;AAC5E;;AAEG;IACK,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;KAC/C;AAED;;;;AAIG;AACH,IAAA,GAAG,CAAC,EAAU,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC1D;AAED;;;AAGG;AACK,IAAA,GAAG,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YACpE,OAAO;SACR;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACnC;aAAM;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,OAAqB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KAChE;AAED;;;;AAIG;IACH,MAAM,CAAC,EAAW,EAAE,MAAgB,EAAA;QAClC,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;SACrB;aAAM,IAAI,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACpB;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5B;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,OAAgB,EAAA;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACnG,QAAA,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChB,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,WAAW,CAAC,QAAyB,EAAA;AACnC,QAAA,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAoB,EAAE;KAC5E;AA8BD;;AAEG;AAMH,IAAA,MAAM,CAAC,IAAS,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,KAAK,CAAC,IAAS,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AA8BD;;AAEG;AAMH,IAAA,MAAM,CAAC,IAAS,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B;AAuCD;;AAEG;AAMH,IAAA,KAAK,CAAC,IAAS,EAAA;AACb,QAAA,IAAI,KAAsB,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,YAAY,OAAO,EAAE;AAClC,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;aAAM;AACL,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;SACrB;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;YACvB,MAAM,YAAY,GAAiB,KAAK,CAAC,SAAS,CAChD,CAAC,IAAc,KAAI;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,aAAC,EACD,CAAC,KAAe,KAAI;gBAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClD,YAAY,CAAC,WAAW,EAAE,CAAC;aAC5B,EACD,MAAK;gBACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACjD,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7B,aAAC,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAsB,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACxB;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC1B;QACD,IAAI,IAAI,EAAE;AACR,YAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5G;aAAM;AACL,YAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACrD;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC/B;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;;;;AAKG;IACH,IAAI,CAAC,IAAuB,EAAE,MAA2B,EAAA;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC;AACjB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,MAAM;gBACT,GAAG,EAAE,IAAI,EAAE;AACZ,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AA3dU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAML,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAN7B,cAAc,EAAA,CAAA,CAAA;;AA2HzB,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAsCD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AAGZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AA+CD,UAAA,CAAA;IALC,iBAAiB;AAClB;;AAEG;;IACF,YAAY;AA4BZ,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;2FAvbU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAF1B,UAAU;;0BAQI,MAAM;2BAAC,oBAAoB,CAAA;AAqHxC,iBAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,MAAM,EAwCN,EAAA,EAAA,OAAO,EAwCP,EAAA,EAAA,KAAK,EAwCL,EAAA,EAAA,IAAI,EAwCJ,EAAA,EAAA,OAAO,EAwCP,EAAA,EAAA,OAAO,EAwCP,EAAA,EAAA,MAAM,MAiDN,KAAK,EAAA,EAAA,EAAA,EAAA,CAAA;;ACnaP;;AAEG;MACU,gBAAgB,CAAA;AAKP,IAAA,OAAA,CAAA;AAJpB;;AAEG;AACM,IAAA,KAAK,CAAe;AAC7B,IAAA,WAAA,CAAoB,OAAuB,EAAA;QAAvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;KAAI;AAE/C;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACpC;uGAZU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,qFCd7B,gTAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDIa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,mBAEZ,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gTAAA,EAAA,CAAA;gFAU5B,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEZR;;AAEG;MACU,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAE,GAAG,IAAgB,EAAA;QAC1C,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;AACxD,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SAC3C;QAED,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACzE;uGAVU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAZ,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AACjB,iBAAA,CAAA;;;ACMD;;AAEG;MACU,eAAe,CAAA;AAC1B;;AAEG;AACM,IAAA,KAAK,CAAe;AAC7B;;AAEG;IACH,eAAe,GAAG,KAAK,CAAC;AAExB,IAAA,WAAW,CAAC,MAAa,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAI,MAAM,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;uGAbU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,qFCb5B,giBAcA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDDa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,mBAEZ,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,giBAAA,EAAA,CAAA;8BAU5B,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEjBR;;AAEG;IACS,gBAUX;AAVD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC/B,CAAC,EAVW,eAAe,KAAf,eAAe,GAU1B,EAAA,CAAA,CAAA;;MCQY,cAAc,CAAA;AA0BL,IAAA,OAAA,CAAA;AAzBpB;;AAEG;AACM,IAAA,KAAK,CAAqB;AACzB,IAAA,YAAY,GAAG,IAAI,YAAY,EAAoB,CAAC;AAE9D,IAAA,wBAAwB,CAAe;AACvC,IAAA,wBAAwB,CAAe;AAEvC;;AAEG;AACH,IAAA,cAAc,CAAS;AAEvB;;AAEG;AACH,IAAA,KAAK,GAAG;AACN,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,YAAY,CAAC,MAAM;KAChC,CAAC;AAEF,IAAA,WAAA,CAAoB,OAAuB,EAAA;QAAvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;KAAI;;AAI/C;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAmB,KAAI;YAC1F,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAG;YACvE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;SAC3C;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC;KAC3C;IAED,kBAAkB,GAAA;QAChB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3D,SAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;KAClD;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;KAC7C;AAED;;AAEG;AAEH;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACpC;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACxD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACnG,SAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;KAC1C;AAED;;AAEG;IACH,YAAY,GAAA;QACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;SAC1B;KACF;AAED;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACpE;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC5C;AAED;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;AAED;;AAEG;AAEH;;;AAGG;IACH,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACtB;KACF;AAED;;;AAGG;IACH,YAAY,CAAC,YAAoB,CAAC,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,SAAS,IAAG;AACtD,gBAAA,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;AAC9C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClE,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,oBAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBAC3C;qBAAM,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,oBAAA,SAAS,EAAE,CAAC;iBACb;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,oBAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACpC;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AACF,QAAA,SAAS,EAAE,CAAC;KACb;uGAxKU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,+HCrB3B,qhEA2CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDtBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAEb,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qhEAAA,EAAA,CAAA;gFAM5B,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;AEpBT;;AAEG;MACU,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAC,KAAU,EAAE,IAAA,GAAc,IAAI,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;uGANU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAR,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAPpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;MCQY,gBAAgB,CAAA;AAkCP,IAAA,OAAA,CAAA;AAjCpB;;AAEG;AACH,IAAA,aAAa,CAAuB;AACpC;;AAEG;AACH,IAAA,OAAO,CAAe;AACtB;;AAEG;AACH,IAAA,SAAS,CAAS;AAClB;;AAEG;AACH,IAAA,SAAS,CAAqB;AAC9B;;AAEG;AACH,IAAA,UAAU,CAAS;AACnB;;AAEG;AACH,IAAA,UAAU,CAAqB;AAC/B;;AAEG;IACH,QAAQ,GAAG,CAAC,CAAC,CAAC;AACd;;AAEG;AACH,IAAA,YAAY,CAAiB;AAE7B,IAAA,WAAA,CAAoB,OAAuB,EAAA;QAAvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;KAAI;AAE/C;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAsB,KAAI;YACvE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AACzD,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AAC5D,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,gBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;aACxE;iBAAM;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AACxD,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC3D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aAClF;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;;AAGD;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;aACpB;YACD,OAAO;SACR;QACD,QAAQ,KAAK;AACX,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;iBACnB;gBACD,MAAM;AACR,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAChF,MAAM;AACR,YAAA,KAAK,YAAY;gBACf,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;iBACnB;gBACD,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;iBACpB;gBACD,MAAM;SACT;KACF;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,MAAsB,EAAA;QAChC,MAAM,MAAM,GAAyB,EAAE,CAAC;AAExC,QAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;AACtC,YAAA,IAAI,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAC5C,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;aACxC;SACF;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAmB,KAAI;AACrC,YAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC5B;uGAvHU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,kDCb7B,8ZASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDIa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,YAAY,EAAA,aAAA,EAEP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8ZAAA,EAAA,CAAA;;;MEI1B,aAAa,CAAA;AACxB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,CAAC,cAAc,CAAC;SAC5B,CAAC;KACH;uGANU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAHT,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,aADhG,YAAY,CAAA,EAAA,OAAA,EAAA,CAEZ,gBAAgB,EAAE,YAAY,EAAE,QAAQ,CAAA,EAAA,CAAA,CAAA;AAEvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;AAC3G,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,CAAC;AACpD,iBAAA,CAAA;;;ACXD;;AAEG;AACU,MAAA,aAAa,GAAG;AAC3B,IAAA,MAAM,EAAE;AACN,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,gBAAgB,EAAE,KAAK;AACxB,KAAA;AACD,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,YAAY,CAAC,MAAM;AACzB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,cAAc,EAAE,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,eAAe,CAAC,WAAW;AACrC,QAAA,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3D,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,CAAC,YAAY,CAAC,MAAM,GAAG;AACrB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9C,aAAA;AACD,YAAA,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,YAAY,CAAC,MAAM;AAC1B,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,OAAO,GAAG;AACtB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9C,aAAA;YACD,IAAI,EAAE,YAAY,CAAC,OAAO;AAC3B,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,MAAM,GAAG;YACrB,IAAI,EAAE,YAAY,CAAC,MAAM;AAC1B,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,OAAO,GAAG;YACtB,IAAI,EAAE,YAAY,CAAC,OAAO;AAC3B,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,KAAK,GAAG;YACpB,IAAI,EAAE,YAAY,CAAC,KAAK;AACzB,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,OAAO,GAAG;YACtB,IAAI,EAAE,YAAY,CAAC,OAAO;AAC3B,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,IAAI,GAAG;YACnB,IAAI,EAAE,YAAY,CAAC,IAAI;AACxB,SAAA;AACD,QAAA,CAAC,YAAY,CAAC,KAAK,GAAG;AACpB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,eAAe,EAAE,KAAK;YACtB,IAAI,EAAE,YAAY,CAAC,KAAK;AACzB,SAAA;AACF,KAAA;;;ACtEH;;AAEG;;ACFH;;AAEG;;;;"}