{"version":3,"file":"novo-elements-elements-query-builder.mjs","sources":["../../../projects/novo-elements/src/elements/query-builder/query-builder.types.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.service.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.tokens.ts","../../../projects/novo-elements/src/elements/query-builder/query-builder.directives.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/abstract-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/address-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/boolean-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/date-time-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/string-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/number-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/id-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-definitions/picker-condition.definition.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-templates/condition-templates.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-builder/condition-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.ts","../../../projects/novo-elements/src/elements/query-builder/condition-group/condition-group.component.html","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.ts","../../../projects/novo-elements/src/elements/query-builder/criteria-builder/criteria-builder.component.html","../../../projects/novo-elements/src/elements/query-builder/query-builder.module.ts","../../../projects/novo-elements/src/elements/query-builder/novo-elements-elements-query-builder.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\nimport { Day } from 'date-fns';\n\nexport enum Conjunction {\n  AND = 'and',\n  OR = 'or',\n  NOT = 'not',\n}\n\nexport type ConditionType = '$and' | '$or' | '$not';\n\nexport type ConditionGroup = {\n  [K in Conjunction as `$${K}`]?: Condition[];\n};\n\nexport type NestedConditionGroup = {\n  [K in Conjunction as `$${K}`]?: ConditionOrConditionGroup[];\n};\n\nexport type ConditionOrConditionGroup = Condition | NestedConditionGroup;\n\nexport enum Operator {\n  after = 'after',\n  before = 'before',\n  beginsWith = 'beginsWith',\n  between = 'between',\n  equalTo = 'equalTo',\n  exclude = 'exclude',\n  excludeAny = 'excludeAny',\n  greaterThan = 'greaterThan',\n  include = 'include',\n  includeAll = 'includeAll',\n  includeAny = 'includeAny',\n  insideRadius = 'insideRadius',\n  isEmpty = 'isEmpty',\n  isNull = 'isNull',\n  lessThan = 'lessThan',\n  outsideRadius = 'outsideRadius',\n  radius = 'radius',\n  within = 'within',\n}\n\nexport type OperatorName = keyof typeof Operator;\n\nexport interface Condition {\n  conditionType?: ConditionType;\n  field: string;\n  operator: OperatorName | string;\n  scope?: string;\n  value: any;\n  supportingValue?: any;\n  entity?: string;\n  warnOnDelete?: () => Promise<boolean>;\n}\n\nexport interface Criteria {\n  criteria: ConditionGroup[];\n}\n\nexport interface NestedCriteria {\n  criteria: NestedConditionGroup[];\n}\n\nexport interface BaseFieldDef {\n  name: string;\n  label?: string;\n  type: string;\n  dataSpecialization?: string;\n  optional?: boolean;\n  multiValue?: boolean;\n  inputType?: string;\n  options?: { value: string | number; label: string; readOnly?: boolean }[];\n  optionsUrl?: string;\n  optionsType?: string;\n  dataType?: string;\n  icon?: string;\n}\n\nexport interface FieldConfig<T extends BaseFieldDef> {\n  value: string;\n  label: string;\n  options: T[];\n  search: (term: string) => T[];\n  find: (name: string) => T;\n}\n\nexport interface AddressData {\n  address_components: AddressComponent[];\n  formatted_address: string;\n  geometry: AddressGeometry;\n  name?: string;\n  place_id: string;\n  radius?: AddressRadius;\n  postal_codes?: string[];\n  types?: string[];\n}\n\nexport interface AddressRadius {\n  value: number;\n  units: AddressRadiusUnitsName;\n  operator?: string;\n}\n\nexport interface AddressComponent {\n  long_name: string;\n  short_name: string;\n  types: string[];\n}\n\nexport interface AddressGeometry {\n  location: AddressGeometryLocation;\n  viewport: AddressGeometryViewport;\n}\n\nexport interface AddressGeometryLocation {\n  lat: number;\n  lng: number;\n}\n\nexport interface AddressGeometryViewport {\n  north: number;\n  south: number;\n  east: number;\n  west: number;\n}\n\nexport enum RadiusUnits {\n  miles = 'miles',\n  km = 'km',\n}\n\nexport type AddressRadiusUnitsName = keyof typeof RadiusUnits;\n\n/** All options that can be used to override the defaults for the address criteria */\nexport type AddressCriteriaConfig = {\n  radiusEnabled?: boolean;\n  radiusUnits?: AddressRadiusUnitsName;\n}\n\n/** All options that can be used to configure date pickers */\nexport type DateCriteriaConfig = {\n  weekStart?: Day;\n}\n\n/** Interface used to provide an outlet for rows to be inserted into. */\nexport interface QueryFilterOutlet {\n  viewContainer: ViewContainerRef;\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseConditionFieldDef } from './query-builder.directives';\nimport { BaseFieldDef, Conjunction, FieldConfig } from './query-builder.types';\n\nexport const defaultEditTypeFn = (field: BaseFieldDef) => {\n  return field.inputType || field.dataType || field.type;\n};\n\nexport interface QueryBuilderConfig {\n  fields: FieldConfig<BaseFieldDef>[];\n  staticFieldSelection?: string;\n}\n\n@Injectable()\nexport class QueryBuilderService {\n  private _customFieldDefs = new Set<BaseConditionFieldDef>();\n  private _fieldDefsByName = new Map<string, BaseConditionFieldDef>();\n  public scopes = signal([]);\n  public hasMultipleScopes = computed(() => this.scopes()?.length > 1);\n  /**\n   * Will dispatch when properties changes, subscribe to this if component should\n   * re-render when props are updated\n   */\n  readonly stateChanges: Subject<void> = new Subject<void>();\n\n  /**\n   * Function to determine operator and input templates for a field.  Value passed\n   * through the criteria builder Input.\n   */\n  public get editTypeFn(): (field: BaseFieldDef) => string {\n    return this._editTypeFn;\n  }\n  public set editTypeFn(value: (field: BaseFieldDef) => string) {\n    this._editTypeFn = value ?? defaultEditTypeFn;\n    this.stateChanges.next();\n  }\n  private _editTypeFn: (field: BaseFieldDef) => string = defaultEditTypeFn;\n\n  /**\n   * The field configuration to control which types of fields are available to select\n   * within the Condition Builder.\n   */\n  public get config(): QueryBuilderConfig {\n    return this._config;\n  }\n  public set config(value: QueryBuilderConfig) {\n    this._config = value;\n    this.stateChanges.next();\n  }\n  private _config: QueryBuilderConfig = {\n    fields: [],\n    staticFieldSelection: null,\n  };\n\n  /**\n   * The configuration to control which types of conjuntions can be used in the query builder.\n   * Value passed through the criteria builder Input\n   * eg. and, or, not\n   */\n  public get allowedGroupings(): Conjunction[] {\n    return this._allowedGroupings;\n  }\n  public set allowedGroupings(value: Conjunction[]) {\n    this._allowedGroupings = value;\n    this.stateChanges.next();\n  }\n  private _allowedGroupings: Conjunction[];\n\n  public componentHost: any;\n\n  constructor(private labels: NovoLabelService) {}\n\n  /** Adds a field definition that was not included as part of the content children. */\n  registerFieldDef(fieldDef: BaseConditionFieldDef) {\n    this._customFieldDefs.add(fieldDef);\n    this._fieldDefsByName.set(fieldDef.name, fieldDef);\n  }\n\n  /** Removes a field definition that was not included as part of the content children. */\n  unregisterFieldDef(fieldDef: BaseConditionFieldDef) {\n    this._customFieldDefs.delete(fieldDef);\n    this._fieldDefsByName.delete(fieldDef.name);\n  }\n\n  getFieldDefsByName() {\n    return this._fieldDefsByName;\n  }\n\n  getConjunctionLabel(conjunction: string) {\n    switch (conjunction.replace('$', '').toLowerCase()) {\n      case Conjunction.OR:\n        return this.labels.or;\n      case Conjunction.NOT:\n        return this.labels.not;\n      case Conjunction.AND:\n      default:\n        return this.labels.and;\n    }\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NOVO_QUERY_BUILDER = new InjectionToken<any>('NOVO_QUERY_BUILDER');\nexport const NOVO_CRITERIA_BUILDER = new InjectionToken<any>('NOVO_CRITERIA_BUILDER');\nexport const NOVO_CONDITION_BUILDER = new InjectionToken<any>('NOVO_CONDITION_BUILDER');\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { QueryBuilderService } from './query-builder.service';\n\n/** Base interface for a condidation template directives. */\nexport interface ConditionDef {\n  template: TemplateRef<any>;\n}\n\n/**\n * Contained within a novoConditionField definition describing what input should be\n * used to capture the compare value of the Condtion\n */\n@Directive({\n    selector: '[novoConditionInputDef]',\n    standalone: false,\n})\nexport class NovoConditionInputDef implements ConditionDef {\n  constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Contained within a novoConditionField definition describing what operators should be available.\n */\n@Directive({\n    selector: '[novoConditionOperatorsDef]',\n    standalone: false,\n})\nexport class NovoConditionOperatorsDef implements ConditionDef {\n  constructor(/** @docs-private */ public template: TemplateRef<any>) {}\n}\n\n/**\n * Field Field definition for the QueryBuilder.\n * Defines the inputType and operators to use for the query builder.\n */\n@Directive()\nexport class BaseConditionFieldDef {\n  /** Unique name for this field. */\n  @Input('novoFilterFieldDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(name: string) {\n    this._setNameInput(name);\n  }\n  protected _name: string;\n\n  @ContentChild(NovoConditionInputDef) fieldInput: NovoConditionInputDef;\n  @ContentChild(NovoConditionOperatorsDef) fieldOperators: NovoConditionOperatorsDef;\n\n  /**\n   * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n   * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n   * do not match are replaced by the '-' character.\n   */\n  cssClassFriendlyName: string;\n  _fieldCssClassName: string[];\n\n  defaultOperator: string;\n\n  constructor() {}\n\n  /**\n   * Overridable method that sets the css classes that will be added to every cell in this\n   * column.\n   * In the future, columnCssClassName will change from type string[] to string and this\n   * will set a single string value.\n   * @docs-private\n   */\n  protected _updateFieldCssClassName() {\n    this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];\n  }\n\n  protected _setNameInput(value: string) {\n    // If the directive is set without a name (updated programmatically), then this setter will\n    // trigger with an empty string and should not overwrite the programmatically set value.\n    if (value) {\n      this._name = value;\n      this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n      this._updateFieldCssClassName();\n    }\n  }\n}\n\n@Directive({\n    selector: '[novoConditionFieldDef]',\n    standalone: false,\n})\nexport class NovoConditionFieldDef extends BaseConditionFieldDef {\n  constructor(private qbs: QueryBuilderService) {\n    super();\n  }\n  register() {\n    this.qbs.registerFieldDef(this);\n  }\n  unregister() {\n    this.qbs.unregisterFieldDef(this);\n  }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControlName, UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { Operator } from '../query-builder.types';\n\n@Directive()\nexport abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {\n  /** Column name that should be used to reference this column. */\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(name: string) {\n    this._name = name;\n    // With Ivy, inputs can be initialized before static query results are\n    // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n    this._syncFieldDefName();\n  }\n  _name: string;\n\n  defaultOperator: Operator | string;\n  protected _previousOperatorValue: Operator;\n\n  protected operatorEditGroups: Set<Operator>[] = [];\n\n  @ViewChild(NovoConditionFieldDef, { static: true }) fieldDef: NovoConditionFieldDef;\n  @ViewChildren(FormControlName) formControlsByName: QueryList<FormControlName>;\n\n  constructor(public labels: NovoLabelService) {}\n\n  ngOnInit() {\n    this._syncFieldDefName();\n    this._syncFieldDefOperatorValue();\n    this._previousOperatorValue = this.defaultOperator as Operator;\n    // Need to add self to FilterBuilder because \"ContentChildren won't find it\"\n    this.fieldDef?.register();\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.frameAfterViewInit();\n    });\n  }\n\n  frameAfterViewInit() {\n    const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;\n    if (operatorField) {\n      this._previousOperatorValue = operatorField.value;\n    }\n  }\n\n  ngOnDestroy() {\n    this.fieldDef?.unregister();\n  }\n\n  /**\n   * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,\n   * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.\n   * @param operators The set of Operator values intended to share UI controls.\n   */\n  protected defineOperatorEditGroup(...operators: Operator[]): void {\n    this.operatorEditGroups.push(new Set(operators));\n  }\n\n  onOperatorSelect(formGroup: UntypedFormGroup): void {\n    let clearVal = true;\n    if (this._previousOperatorValue && this.operatorEditGroups?.length) {\n      const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));\n      const newOperatorValue = formGroup.get('operator').getRawValue();\n      const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));\n      if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {\n        clearVal = false;\n      }\n    }\n    this._previousOperatorValue = formGroup.get('operator').value;\n    if (clearVal) {\n      formGroup.get('value').setValue(null);\n    }\n  }\n\n  /** Synchronizes the column definition name with the text column name. */\n  private _syncFieldDefName() {\n    if (this.fieldDef) {\n      this.fieldDef.name = this.name;\n    }\n  }\n\n  private _syncFieldDefOperatorValue() {\n    if (this.fieldDef) {\n      this.fieldDef.defaultOperator = this.defaultOperator;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  input,\n  InputSignal,\n  OnDestroy,\n  QueryList,\n  Signal,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { PlacesListComponent } from 'novo-elements/elements/places';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Key } from 'novo-elements/utils';\nimport { Subscription } from 'rxjs';\nimport {\n  AddressCriteriaConfig,\n  AddressData,\n  AddressRadius,\n  AddressRadiusUnitsName,\n  Operator,\n  RadiusUnits,\n} from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n    selector: 'novo-address-condition-def',\n    template: `\n    <ng-container novoConditionFieldDef>\n      <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n          <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n          <novo-option value=\"insideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.insideRadius }}</novo-option>\n          <novo-option value=\"outsideRadius\" *ngIf=\"radiusEnabled()\">{{ labels.outsideRadius }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex; fieldMeta as meta\" [formGroup]=\"formGroup\">\n        <novo-flex justify=\"space-between\" align=\"end\">\n          <novo-field #input *ngIf=\"['radius', 'insideRadius', 'outsideRadius'].includes(formGroup.value.operator)\" class=\"address-radius\">\n            <input\n              novoInput\n              paddingLeft=\"3px\"\n              type=\"number\"\n              min=\"1\"\n              max=\"9999\"\n              step=\"1\"\n              formControlName=\"supportingValue\"\n              #distanceInput\n              (input)=\"onRadiusSelect(formGroup, $event)\"\n            />\n            <span marginLeft=\"2px\" marginRight=\"4px\" paddingTop=\"3px\">{{ unitsLabel() }}</span>\n          </novo-field>\n          <novo-field #novoField class=\"address-location\">\n            <novo-chip-list [(ngModel)]=\"chipListModel\" [ngModelOptions]=\"{ standalone: true }\" (click)=\"openPlacesList(viewIndex)\">\n              <novo-chip *ngFor=\"let item of formGroup.get('value').value\" (removed)=\"remove(item, formGroup, viewIndex)\">\n                <novo-text ellipsis [tooltip]=\"item.formatted_address\" tooltipOnOverflow>{{ item.formatted_address }}</novo-text>\n                <novo-icon novoChipRemove>close</novo-icon>\n              </novo-chip>\n              <input\n                novoChipInput\n                [id]=\"viewIndex\"\n                [placeholder]=\"labels.location\"\n                (keyup)=\"onKeyup($event, viewIndex)\"\n                (keydown)=\"onKeydown($event, viewIndex)\"\n                [picker]=\"placesPicker\"\n                #addressInput/>\n            </novo-chip-list>\n            <novo-picker-toggle [overlayId]=\"viewIndex\" icon=\"location\" novoSuffix>\n              <google-places-list\n                [term]=\"term\"\n                (select)=\"selectPlace($event, formGroup, viewIndex)\"\n                formControlName=\"value\"\n                #placesPicker/>\n            </novo-picker-toggle>\n          </novo-field>\n        </novo-flex>\n      </ng-container>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {\n  @ViewChildren(NovoPickerToggleElement) overlayChildren: QueryList<NovoPickerToggleElement>;\n  @ViewChildren('addressInput') inputChildren: QueryList<ElementRef>;\n  @ViewChild('placesPicker') placesPicker: PlacesListComponent;\n  @ViewChildren(NovoSelectElement) addressSideTest: any;\n\n  // Overridable defaults\n  defaults: AddressCriteriaConfig = {\n    radiusEnabled: false,\n    radiusUnits: 'miles',\n  };\n  config: InputSignal<AddressCriteriaConfig> = input();\n  radiusUnits: Signal<AddressRadiusUnitsName> = computed(() =>\n    this.config()?.radiusUnits || this.defaults.radiusUnits,\n  );\n  radiusEnabled: Signal<boolean> = computed(() =>\n    this.config()?.radiusEnabled || this.defaults.radiusEnabled,\n  );\n  unitsLabel: Signal<string> = computed(() =>\n    this.radiusUnits() === RadiusUnits.miles ? this.labels.miles : this.labels.km,\n  );\n\n  defaultOperator = Operator.includeAny;\n  chipListModel: any = '';\n  term: string = '';\n\n  private _addressChangesSubscription: Subscription = Subscription.EMPTY;\n\n  public element = inject(ElementRef);\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.includeAny, Operator.excludeAny, Operator.insideRadius, Operator.outsideRadius);\n  }\n\n  ngOnDestroy() {\n    this._addressChangesSubscription.unsubscribe();\n  }\n\n  onKeyup(event, viewIndex) {\n    if (![Key.Escape, Key.Enter].includes(event.key)) {\n      this.openPlacesList(viewIndex);\n    }\n    this.term = event.target.value;\n  }\n\n  onKeydown(event, viewIndex) {\n    if (!this.placesPicker.dropdownOpen) {\n      this.openPlacesList(viewIndex);\n      this.placesPicker.dropdownOpen = true;\n    }\n    if ([Key.Escape, Key.Tab].includes(event.key)) {\n      this.closePlacesList(viewIndex);\n    } else {\n      this.placesPicker.onKeyDown(event);\n    }\n  }\n\n  getValue(formGroup: AbstractControl): AddressData[] {\n    return formGroup.value.value || [];\n  }\n\n  getCurrentOverlay(viewIndex: string): NovoPickerToggleElement {\n    return this.overlayChildren?.find(item => item.overlayId === viewIndex);\n  }\n\n  getCurrentInput(viewIndex: string): ElementRef {\n    return this.inputChildren?.find(item => (item as any).nativeElement.id === viewIndex);\n  }\n\n  openPlacesList(viewIndex) {\n    this.getCurrentOverlay(viewIndex)?.openPanel();\n  }\n\n  closePlacesList(viewIndex) {\n    this.getCurrentOverlay(viewIndex)?.closePanel();\n  }\n\n  selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void {\n    const valueToAdd: AddressData = {\n      address_components: event.address_components,\n      formatted_address: event.formatted_address,\n      geometry: event.geometry,\n      name: event.name,\n      postal_codes: event.postal_codes,\n      place_id: event.place_id,\n      types: event.types,\n    };\n    const current: AddressData | AddressData[] = this.getValue(formGroup);\n    const updated: AddressData[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n    formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, updated));\n\n    this.inputChildren.forEach(inputChild => {\n      inputChild.nativeElement.value = '';\n    })\n    this.getCurrentInput(viewIndex)?.nativeElement.focus();\n    this.closePlacesList(viewIndex);\n  }\n\n  remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void {\n    const current = this.getValue(formGroup);\n    const index = current.indexOf(valueToRemove);\n    if (index >= 0) {\n      const oldValue = [...current]\n      oldValue.splice(index, 1);\n      formGroup.get('value').setValue(oldValue);\n    }\n    this.closePlacesList(viewIndex);\n  }\n\n  // Override abstract behavior - allow moving location from includeAny to radius, but when moving the opposite direction,\n  // trim out radius information from the value\n  onOperatorSelect(formGroup: UntypedFormGroup): void {\n    const previousOperator = this._previousOperatorValue;\n    super.onOperatorSelect(formGroup);\n    if ([previousOperator, formGroup.get('operator').getRawValue()].indexOf(Operator.insideRadius) !== -1 &&\n        formGroup.get('value').getRawValue() != null) {\n      formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n    }\n  }\n\n  onRadiusSelect(formGroup: AbstractControl, event): void {\n    const maxLengthRadius = event.target.value.slice(0, 4);\n    event.target.value = maxLengthRadius;\n    formGroup.get('supportingValue').setValue(maxLengthRadius);\n    // We must dirty the form explicitly to show up as a user modification when it was done programmatically\n    formGroup.get('value').setValue(this.updateRadiusInValues(formGroup, this.getValue(formGroup)));\n    formGroup.markAsDirty();\n  }\n\n  private updateRadiusInValues(formGroup: AbstractControl, values: AddressData[]): AddressData[] {\n    return values.map(val => ({\n      ...val,\n      radius: this.isRadiusOperatorSelected(formGroup) ? this.getRadiusData(formGroup) : undefined,\n    }));\n  }\n\n  private getRadiusData(formGroup: AbstractControl): AddressRadius {\n    return {\n      value: formGroup.value.supportingValue,\n      units: this.radiusUnits(),\n      operator: formGroup.value.operator,\n    };\n  }\n\n  private isRadiusOperatorSelected(formGroup: AbstractControl): boolean {\n    return ['insideRadius', 'outsideRadius'].includes(formGroup.get('operator')?.value) && formGroup.value?.supportingValue !== null;\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is a boolean with only true/false as possible values.\n */\n@Component({\n    selector: 'novo-boolean-condition-def',\n    template: `\n    <ng-container novoConditionFieldDef>\n      <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"include\">{{ labels.equals }}</novo-option>\n          <novo-option value=\"exclude\">{{ labels.doesNotEqual }}</novo-option>\n          <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <novo-field *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [style.maxWidth.px]=\"250\" [formGroup]=\"formGroup\">\n        @let isNull = formGroup.value.operator === 'isNull';\n        @let useYesNo = isNull || meta.dataType === 'Boolean';\n        @let customOptions = !isNull && meta.options?.length === 2;\n        @if (customOptions) {\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio *ngFor=\"let opt of meta.options; trackBy: optIdentify\" [value]=\"opt.value\">{{ opt.label }}</novo-radio>\n          </novo-radio-group>\n        } @else {\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio [value]=\"true\">{{ useYesNo ? labels.yes : labels.true }}</novo-radio>\n            <novo-radio [value]=\"false\">{{ useYesNo ? labels.no : labels.false }}</novo-radio>\n          </novo-radio-group>\n        }\n      </novo-field>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {\n  defaultOperator = Operator.include;\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.include, Operator.exclude, Operator.isNull);\n  }\n\n  optIdentify(option) {\n    return option.label;\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n  selector: 'novo-date-condition-def',\n  template: `\n    <ng-container novoConditionFieldDef=\"DATE\">\n      <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"before\">{{ labels.before }}</novo-option>\n          <novo-option value=\"after\">{{ labels.after }}</novo-option>\n          <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n          <novo-option value=\"within\">{{ labels.within }}</novo-option>\n          <novo-option value=\"between\">{{ labels.between }}</novo-option>\n          <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n        <novo-field *novoSwitchCases=\"['before', 'after', 'equalTo']\">\n          <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n          <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n            <novo-date-picker #datepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n          </novo-picker-toggle>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['between']\">\n          <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n          <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n            <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" [weekStart]=\"config()?.weekStart\" mode=\"range\"\n                              numberOfMonths=\"2\"></novo-date-picker>\n          </novo-picker-toggle>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['within']\">\n          <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n            <novo-option value=\"future\">{{ labels.future }}</novo-option>\n            <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n            <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n            <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n            <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n            <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n            <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n            <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n            <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n            <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n            <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n            <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n            <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n            <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n            <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n            <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n            <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n            <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n            <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n            <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n            <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n          </novo-select>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['isNull']\">\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n            <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n          </novo-radio-group>\n        </novo-field>\n      </ng-container>\n    </ng-container>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.Default,\n  standalone: false,\n})\nexport class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {\n  @ViewChildren(NovoPickerToggleElement)\n  overlayChildren: QueryList<NovoPickerToggleElement>;\n\n  defaultOperator = Operator.within;\n\n  config: InputSignal<DateCriteriaConfig> = input();\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.before, Operator.after, Operator.equalTo);\n  }\n\n  closePanel(event, viewIndex): void {\n    const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n    overlay.closePanel(event);\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, InputSignal, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { NovoPickerToggleElement } from 'novo-elements/elements/field';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { DateCriteriaConfig, Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * Most complicated of the default conditions defs, a date needs to provide a different\n * input type depending on the operator selected.\n */\n@Component({\n    selector: 'novo-date-time-condition-def',\n    template: `\n      <ng-container novoConditionFieldDef=\"DATE\">\n        <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n          <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n            <novo-option value=\"before\">{{ labels.before }}</novo-option>\n            <novo-option value=\"after\">{{ labels.after }}</novo-option>\n            <novo-option value=\"equalTo\">{{ labels.equals }}</novo-option>\n            <novo-option value=\"within\">{{ labels.within }}</novo-option>\n            <novo-option value=\"between\">{{ labels.between }}</novo-option>\n            <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n          </novo-select>\n        </novo-field>\n        <ng-container *novoConditionInputDef=\"let formGroup; viewIndex as viewIndex\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n          <novo-field *novoSwitchCases=\"['after']\">\n            <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepicker\" formControlName=\"value\"/>\n            <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n              <novo-date-time-picker defaultTime=\"end\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepicker\n                                     [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n            </novo-picker-toggle>\n          </novo-field>\n          <novo-field *novoSwitchCases=\"['before']\">\n            <input novoInput dateTimeFormat=\"iso8601\" [picker]=\"datetimepickerbefore\" formControlName=\"value\"/>\n            <novo-picker-toggle triggerOnFocus [width]=\"-1\" [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n              <novo-date-time-picker defaultTime=\"start\" (onSelect)=\"closePanel($event, viewIndex)\" #datetimepickerbefore\n                                     [weekStart]=\"config()?.weekStart\"></novo-date-time-picker>\n            </novo-picker-toggle>\n          </novo-field>\n          <novo-field *novoSwitchCases=\"['equalTo']\">\n            <input novoInput dateFormat=\"yyyy-mm-dd\" [picker]=\"datepicker\" formControlName=\"value\"/>\n            <novo-picker-toggle triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n              <novo-date-picker (onSelect)=\"closePanel($event, viewIndex)\" #datepicker [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n            </novo-picker-toggle>\n          </novo-field>\n          <novo-field *novoSwitchCases=\"['between']\">\n            <input novoInput dateRangeFormat=\"date\" [picker]=\"daterangepicker\" formControlName=\"value\"/>\n            <novo-picker-toggle [for]=\"daterangepicker\" triggerOnFocus [overlayId]=\"viewIndex\" novoSuffix icon=\"calendar\">\n              <novo-date-picker #daterangepicker (onSelect)=\"closePanel($event, viewIndex)\" mode=\"range\" numberOfMonths=\"2\"\n                                [weekStart]=\"config()?.weekStart\"></novo-date-picker>\n            </novo-picker-toggle>\n          </novo-field>\n          <novo-field *novoSwitchCases=\"['within']\">\n            <novo-select [placeholder]=\"labels.selectDateRange\" formControlName=\"value\">\n              <novo-option value=\"future\">{{ labels.future }}</novo-option>\n              <novo-option value=\"-1\">{{ labels.past1Day }}</novo-option>\n              <novo-option value=\"-7\">{{ labels.past7Days }}</novo-option>\n              <novo-option value=\"-14\">{{ labels.past14Days }}</novo-option>\n              <novo-option value=\"-21\">{{ labels.past21Days }}</novo-option>\n              <novo-option value=\"-30\">{{ labels.past30Days }}</novo-option>\n              <novo-option value=\"-60\">{{ labels.past60Days }}</novo-option>\n              <novo-option value=\"-90\">{{ labels.past90Days }}</novo-option>\n              <novo-option value=\"-180\">{{ labels.past180Days }}</novo-option>\n              <novo-option value=\"-270\">{{ labels.past270Days }}</novo-option>\n              <novo-option value=\"-365\">{{ labels.past1Year }}</novo-option>\n              <novo-option value=\"1\">{{ labels.next1Day }}</novo-option>\n              <novo-option value=\"7\">{{ labels.next7Days }}</novo-option>\n              <novo-option value=\"14\">{{ labels.next14Days }}</novo-option>\n              <novo-option value=\"21\">{{ labels.next21Days }}</novo-option>\n              <novo-option value=\"30\">{{ labels.next30Days }}</novo-option>\n              <novo-option value=\"60\">{{ labels.next60Days }}</novo-option>\n              <novo-option value=\"90\">{{ labels.next90Days }}</novo-option>\n              <novo-option value=\"180\">{{ labels.next180Days }}</novo-option>\n              <novo-option value=\"270\">{{ labels.next270Days }}</novo-option>\n              <novo-option value=\"365\">{{ labels.next1Year }}</novo-option>\n            </novo-select>\n          </novo-field>\n          <novo-field *novoSwitchCases=\"['isNull']\">\n            <novo-radio-group formControlName=\"value\">\n              <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n              <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n            </novo-radio-group>\n          </novo-field>\n        </ng-container>\n      </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {\n  @ViewChildren(NovoPickerToggleElement)\n  overlayChildren: QueryList<NovoPickerToggleElement>;\n\n  defaultOperator = Operator.within;\n\n  config: InputSignal<DateCriteriaConfig> = input();\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.before, Operator.after);\n  }\n\n  closePanel(event, viewIndex): void {\n    const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);\n    overlay.closePanel(event);\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\n\n/**\n * Constructing filters against String fields can be complex. Each \"chip\" added to the\n * condition can be independently used to query a database.  Not all systems support\n * querying within a text column, ie sql unless LIKE is enabled. This could result in a\n * performance penalty.\n */\n@Component({\n    selector: 'novo-string-condition-def',\n    template: `\n    <!-- fieldTypes should be UPPERCASE -->\n    <ng-container novoConditionFieldDef=\"STRING\">\n      <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n          <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n          <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n          <novo-option value=\"beginsWith\" *ngIf=\"meta?.hasBeginsWith\">{{ labels.beginsWith }}</novo-option>\n          <novo-option value=\"isEmpty\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n        <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny', 'beginsWith']\">\n          <novo-chip-list #chipList aria-label=\"filter value\" multiple=\"true\" [chipsToggleable]=\"false\" formControlName=\"value\">\n            <novo-chip *ngFor=\"let chip of formGroup.value?.value || []\" [value]=\"chip\" (removed)=\"remove(chip, formGroup)\">\n              <novo-text ellipsis [tooltip]=\"chip\" tooltipOnOverflow>{{ chip }}</novo-text>\n              <novo-icon novoChipRemove>close</novo-icon>\n            </novo-chip>\n            <input\n              novoChipInput\n              [placeholder]=\"labels.typeToAddChips\"\n              autocomplete=\"off\"\n              (novoChipInputTokenEnd)=\"add($event, formGroup)\"\n            />\n          </novo-chip-list>\n          <novo-autocomplete></novo-autocomplete>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['isEmpty']\">\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n            <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n          </novo-radio-group>\n        </novo-field>\n      </ng-container>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    // Change detection is intentionally not set to OnPush. This component's template will be provided\n    // to the table to be inserted into its view. This is problematic when change detection runs since\n    // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n    // means the template in the table's view will not have the updated value (and in fact will cause\n    // an ExpressionChangedAfterItHasBeenCheckedError).\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {\n  defaultOperator = Operator.includeAny;\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny, Operator.beginsWith);\n  }\n\n  getValue(formGroup: AbstractControl): any[] {\n    return formGroup.value?.value || [];\n  }\n\n  add(event: any, formGroup: AbstractControl): void {\n    const input = event.input;\n    input.value = '';\n    const valueToAdd = event.value;\n    if (valueToAdd !== '') {\n      const current: any[] = this.getValue(formGroup);\n      const newValue: any[] = Array.isArray(current) ? [...current, valueToAdd] : [valueToAdd];\n      this.setFormValue(formGroup, newValue);\n    }\n  }\n\n  remove(valueToRemove: string, formGroup: AbstractControl): void {\n    const current = this.getValue(formGroup);\n    const index = current.indexOf(valueToRemove);\n    if (index >= 0) {\n      const value = [...current]\n      value.splice(index, 1);\n      this.setFormValue(formGroup, value);\n    }\n  }\n\n  private setFormValue(formGroup: AbstractControl, newValue: any[]) {\n    formGroup.get('value').setValue(newValue);\n    formGroup.markAsDirty();\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\n/**\n * When constructing a query using a field that is an Int, Double, Number ...etc.\n * TODO: Do we implement currency formation here potentially?\n */\n@Component({\n    selector: 'novo-number-condition-def',\n    template: `\n    <ng-container novoConditionFieldDef>\n      <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"greaterThan\">{{ labels.greaterThan }}</novo-option>\n          <novo-option value=\"lessThan\">{{ labels.lessThan }}</novo-option>\n          <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n          <novo-option value=\"between\">{{ labels.between }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <ng-container *novoConditionInputDef=\"let formGroup\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n        <novo-field *novoSwitchCases=\"['greaterThan', 'lessThan', 'equalTo']\">\n          <input novoInput type=\"number\" formControlName=\"value\"/>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['isNull']\">\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n            <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n          </novo-radio-group>\n        </novo-field>\n        <ng-container *novoSwitchCases=\"['between']\">\n          <novo-number-range formControlName=\"value\"/>\n        </ng-container>\n      </ng-container>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {\n  defaultOperator = Operator.equalTo;\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.greaterThan, Operator.lessThan, Operator.equalTo);\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { Operator } from '../query-builder.types';\n\n/**\n * Any condition that has a type of ID usually only is queried by ID.\n */\n@Component({\n    selector: 'novo-id-condition-def',\n    template: `\n    <ng-container novoConditionFieldDef>\n      <novo-field *novoConditionOperatorsDef=\"let formGroup\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\">\n          <novo-option value=\"equalTo\">{{ labels.equalTo }}</novo-option>\n          <ng-content></ng-content>\n        </novo-select>\n      </novo-field>\n      <novo-field *novoConditionInputDef=\"let formGroup\" [formGroup]=\"formGroup\">\n        <input novoInput type=\"number\" min=\"1\" step=\"1\" formControlName=\"value\" />\n      </novo-field>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {\n  defaultOperator = Operator.equalTo;\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseFieldDef, Operator } from '../query-builder.types';\nimport { AbstractConditionFieldDef } from './abstract-condition.definition';\nimport { NovoSelectElement } from 'novo-elements/elements/select';\n\ntype FieldOption = BaseFieldDef['options'][number];\n/**\n * Handle selection of field values when a list of options is provided.\n */\n@Component({\n    selector: 'novo-picker-condition-def',\n    template: `\n    <ng-container novoConditionFieldDef>\n      <novo-field *novoConditionOperatorsDef=\"let formGroup; fieldMeta as meta\" [formGroup]=\"formGroup\">\n        <novo-select [placeholder]=\"labels.operator\" formControlName=\"operator\" (onSelect)=\"onOperatorSelect(formGroup)\">\n          <novo-option value=\"includeAny\">{{ labels.includeAny }}</novo-option>\n          <novo-option value=\"includeAll\" *ngIf=\"!meta?.removeIncludeAll\">{{ labels.includeAll }}</novo-option>\n          <novo-option value=\"excludeAny\">{{ labels.exclude }}</novo-option>\n          <novo-option value=\"isNull\" *ngIf=\"!meta?.removeIsEmpty\">{{ labels.isEmpty }}</novo-option>\n        </novo-select>\n      </novo-field>\n      <ng-container *novoConditionInputDef=\"let formGroup; fieldMeta as meta\" [ngSwitch]=\"formGroup.value.operator\" [formGroup]=\"formGroup\">\n        <novo-field *novoSwitchCases=\"['includeAny', 'includeAll', 'excludeAny']\">\n          <novo-select #select extupdatefix formControlName=\"value\" [placeholder]=\"labels.select\" [multiple]=\"true\">\n            <novo-option [disabled]=\"!meta?.allowCustomFilterValues\" [hidden]=\"!meta?.allowCustomFilterValues\">\n              <novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>\n            </novo-option>\n            <!-- What about optionUrl/optionType -->\n            @for (option of meta?.options; track optionTracker) {\n              <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n                {{ option.label}}\n              </novo-option>\n            }\n            @for (option of customOptions(meta?.options, select); track optionTracker) {\n              <novo-option [hidden]=\"hideOption(option, filterInput?.value)\" [value]=\"option.value\" [attr.data-automation-value]=\"option.label\">\n                {{ option.label}}\n              </novo-option>\n            }\n            <novo-option class=\"add-option\" *ngIf=\"showAddOption(meta, select, filterInput?.value)\" [value]=\"filterInput?.value\" [allowSelection]=\"false\">\n              {{filterInput.value}}\n              <novo-icon class=\"add-icon\" novoSuffix>add-thin</novo-icon>\n            </novo-option>\n          </novo-select>\n        </novo-field>\n        <novo-field *novoSwitchCases=\"['isNull']\">\n          <novo-radio-group formControlName=\"value\">\n            <novo-radio [value]=\"true\">{{ labels.yes }}</novo-radio>\n            <novo-radio [value]=\"false\">{{ labels.no }}</novo-radio>\n          </novo-radio-group>\n        </novo-field>\n      </ng-container>\n    </ng-container>\n  `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.Default,\n    standalone: false,\n})\nexport class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {\n  defaultOperator = Operator.includeAny;\n\n  constructor(labelService: NovoLabelService) {\n    super(labelService);\n    this.defineOperatorEditGroup(Operator.includeAny, Operator.includeAll, Operator.excludeAny);\n  }\n\n  override onOperatorSelect(formGroup: UntypedFormGroup): void {\n    super.onOperatorSelect(formGroup);\n    // For multi-select operators, ensure value is an array, not null/boolean\n    const newOperator = formGroup.get('operator').value;\n    if ([Operator.includeAny, Operator.includeAll, Operator.excludeAny].includes(newOperator)) {\n      const currentValue = formGroup.get('value').value;\n      if (!Array.isArray(currentValue)) {\n        formGroup.get('value').setValue([]);\n      }\n    }\n  }\n\n  showAddOption(meta, select, filterValue: string): boolean {\n    if (!(meta?.allowCustomFilterValues)) {\n      return false;\n    }\n    filterValue = filterValue?.trim().toLowerCase();\n    if (!filterValue) {\n      return false;\n    }\n    if (select?.value && Array.isArray(select.value) && select.value.find(selectValue => selectValue.trim().toLowerCase() === filterValue)) {\n      return false;\n    }\n    return meta?.options && meta.options.find(opt => {\n      const optionLabel = opt.label.trim().toLowerCase();\n      return optionLabel === filterValue;\n    }) == null;\n  }\n\n  optionTracker(option: FieldOption) {\n    return `${option.value}~~~${option.label}`;\n  }\n\n  hideOption(option: FieldOption, filterValue: string): boolean {\n    return filterValue && (option.value.toString().indexOf(filterValue) === -1 &&\n        !option.label.toLowerCase().includes(filterValue.toLowerCase()));\n  }\n\n  customOptions(options: FieldOption[], select: NovoSelectElement): FieldOption[] {\n    if (!Array.isArray(select.value)) {\n      return [];\n    }\n    return select.value.filter((selectedOption: string) => {\n      return (!options || !(options.find(option => option.value === selectedOption)));\n    }).map(value => ({\n      value,\n      label: value,\n    }));\n  }\n\n  applyCustomItem() {\n    // Method to handle adding a new item when \"Add Item\" is selected\n    // This is a placeholder for potential custom logic to add new items\n    // Could be implemented to open a modal, trigger a service call, etc.\n    console.warn('Custom item addition not implemented');\n\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\n@Component({\n    selector: 'novo-condition-templates',\n    templateUrl: './condition-templates.component.html',\n    standalone: false,\n})\nexport class NovoConditionTemplatesComponent {\n  @Input() addressConfig: AddressCriteriaConfig;\n  @Input() dateConfig: DateCriteriaConfig;\n}\n","<novo-id-condition-def name=\"ID\"/>\n<novo-date-condition-def name=\"DATE\" [config]=\"dateConfig\"/>\n<novo-date-time-condition-def name=\"TIMESTAMP\" [config]=\"dateConfig\"/>\n<novo-string-condition-def name=\"STRING\"/>\n<novo-number-condition-def name=\"FLOAT\"/>\n<novo-number-condition-def name=\"INTEGER\"/>\n<novo-number-condition-def name=\"BIGDECIMAL\"/>\n<novo-number-condition-def name=\"DOUBLE\"/>\n<novo-address-condition-def name=\"ADDRESS\" [config]=\"addressConfig\"/>\n<novo-boolean-condition-def name=\"BOOLEAN\"/>\n<novo-picker-condition-def name=\"SELECT\"/>\n<novo-string-condition-def name=\"DEFAULT\"/>\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  SimpleChanges,\n  SkipSelf,\n  ViewChild,\n  ViewContainerRef,\n  computed,\n  input,\n} from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderConfig, QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';\nimport { AddressCriteriaConfig, BaseFieldDef, DateCriteriaConfig, FieldConfig, QueryFilterOutlet } from '../query-builder.types';\nimport { Helpers } from 'novo-elements/utils';\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n    selector: '[conditionInputOutlet]',\n    standalone: false,\n})\nexport class ConditionInputOutlet implements QueryFilterOutlet {\n  constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\n@Directive({\n    selector: '[conditionOperatorOutlet]',\n    standalone: false,\n})\nexport class ConditionOperatorOutlet implements QueryFilterOutlet {\n  constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {}\n}\n\n@Component({\n    selector: 'novo-condition-builder',\n    templateUrl: './condition-builder.component.html',\n    styleUrls: ['./condition-builder.component.scss'],\n    providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },\n        {\n            provide: QueryBuilderService,\n            deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],\n            useFactory: (labelService: NovoLabelService, queryBuilderService?: QueryBuilderService) => {\n                if (!queryBuilderService) {\n                    queryBuilderService = new QueryBuilderService(labelService);\n                }\n                return queryBuilderService;\n            },\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class ConditionBuilderComponent implements OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n  @ViewChild(ConditionOperatorOutlet, { static: true }) _operatorOutlet: ConditionOperatorOutlet;\n  @ViewChild(ConditionInputOutlet, { static: true }) _inputOutlet: ConditionInputOutlet;\n\n  @Input() label: any;\n  @Input() scope: string;\n  @Input() andIndex: number;\n  @Input() groupIndex: number;\n  @Input() addressConfig: AddressCriteriaConfig;\n  @Input() dateConfig: DateCriteriaConfig;\n  hideOperator = input(true);\n  conditionType = input();\n\n  // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.\n  // In the former case, config will come from inputs, and we will instantiate our own QueryBuilderService. In the latter, it comes from\n  // the QueryBuilderService.\n  inputConfig = input<QueryBuilderConfig>(null, { alias: 'config'});\n  inputEditTypeFn = input<(field: BaseFieldDef) => string>(null, { alias: 'editTypeFn'});\n  private config = computed<QueryBuilderConfig>(() => {\n    if (this.isConditionHost) {\n      this.queryBuilderService.config = this.inputConfig();\n    }\n    return this.queryBuilderService.config;\n  });\n  private editTypeFn = computed<(field: BaseFieldDef) => string>(() => {\n    if (this.isConditionHost) {\n      this.queryBuilderService.editTypeFn = this.inputEditTypeFn();\n    }\n    return this.queryBuilderService.editTypeFn;\n  });\n\n  public parentForm: FormGroup;\n  public fieldConfig: FieldConfig<BaseFieldDef>;\n  public searches!: Subscription;\n  public results$: Promise<any[]>;\n  public searchTerm: FormControl = new FormControl();\n  public fieldDisplayWith;\n  public displayIcon: string;\n\n  public staticFieldSelection = computed(() => this.config().staticFieldSelection);\n  private _lastContext: any = {};\n  @HostBinding('class.condition-host')\n  public isConditionHost = false;\n\n  public gridColumns = computed(() => {\n    if (this.staticFieldSelection()) {\n      return '13rem 1fr';\n    } else {\n      const firstColumnWidth = this.hideOperator() ? '20rem' : '16rem';\n      return `${firstColumnWidth} 13rem 1fr`;\n    }\n  });\n\n  /** Subject that emits when the component has been destroyed. */\n  private readonly _onDestroy = new Subject<void>();\n\n  constructor(\n    public labels: NovoLabelService,\n    private cdr: ChangeDetectorRef,\n    private queryBuilderService: QueryBuilderService,\n    private controlContainer: ControlContainer,\n  ) {\n    if (!queryBuilderService.componentHost) {\n      queryBuilderService.componentHost = this;\n      this.isConditionHost = true;\n      this.groupIndex = 0;\n      this.andIndex = 0;\n    }\n  }\n\n  ngOnInit() {\n    this.parentForm = this.controlContainer.control as FormGroup;\n    this.parentForm.controls.field.valueChanges.subscribe((value) => {\n      Promise.resolve().then(() => this.updateFieldSelection());\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.inputConfig?.previousValue?.staticFieldSelection &&\n      changes.inputConfig.previousValue.staticFieldSelection !== changes.inputConfig.currentValue.staticFieldSelection) {\n        this.parentForm.controls.field.setValue(changes.inputConfig.currentValue.staticFieldSelection);\n    }\n  }\n\n  ngAfterContentInit() {\n    const allFields = this.config()?.fields || [];\n    const scopedFields = this.scope ? allFields.find((field) => field.value === this.scope) : allFields[0];\n    allFields.length && this.changeFieldOptions(scopedFields);\n    this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {\n      this.results$ = Promise.resolve(\n        this.fieldConfig.options.filter(\n          (f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase()),\n        ),\n      );\n      this.cdr.markForCheck();\n    });\n  }\n\n  ngAfterViewInit() {\n    if (this.parentForm.value?.field !== null) {\n      Promise.resolve().then(() => this.updateFieldSelection());\n    }\n  }\n\n  ngOnDestroy() {\n    this.searches?.unsubscribe();\n    // Clear all outlets and Maps\n    [this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {\n      def.clear();\n    });\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  /**\n   * Updates the Conditions \"Field\" Options to Change base on new Scope\n   * @param fieldConfig\n   */\n  changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>) {\n    this.fieldConfig = fieldConfig;\n    this.searchTerm.setValue('');\n    this.results$ = Promise.resolve(this.fieldConfig.options);\n  }\n\n  /**\n   * Resets the input and operator view containers, regenerates the field templates,\n   * and marks the component for change detection.\n   *\n   * Use this method after updating form controls to reinitialize the input and\n   * operator fields so that the view reflects the latest form control changes.\n   *\n   * @returns void\n   */\n  resetInputAndOperator(): void {\n    this._inputOutlet.viewContainer.clear();\n    this._operatorOutlet.viewContainer.clear();\n    this.createFieldTemplates();\n    this.cdr.markForCheck();\n  }\n\n  getField() {\n    const field = this.parentForm?.value?.field;\n    if (!field) {\n      return null;\n    }\n    return this.fieldConfig.find(field);\n  }\n\n  getDefaultField() {\n    const fields = this.fieldConfig.options;\n    if (fields?.length) {\n      return fields[0].name;\n    }\n    return null;\n  }\n\n  updateFieldSelection() {\n    const fieldConf = this.getField();\n    if (!fieldConf) {\n      this.parentForm.get('field').setValue(this.getDefaultField());\n      return;\n    } else {\n      this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;\n      this.displayIcon = fieldConf.icon || null;\n    }\n    const { field } = this.parentForm.value;\n\n    if (this._lastContext.field !== field) {\n      if (this._lastContext.field) {\n        // only clearing operator/value if field was previously defined so we can preload values onto the form\n        this.parentForm.get('value').setValue(null);\n        this.parentForm.get('operator').setValue(null);\n      }\n      this.createFieldTemplates();\n    }\n    setTimeout(() => this.updateConditionType());\n\n    this._lastContext = { ...this.parentForm.value };\n    this.cdr.markForCheck();\n  }\n\n  updateConditionType() {\n    this.parentForm.get('conditionType')?.setValue(this.conditionType());\n  }\n\n  private findDefinitionForField(field) {\n    if (!field) {\n      return;\n    }\n    let editType = this.editTypeFn()(field);\n    // Don't look at dataSpecialization it is no good, this misses currency, and percent\n    const { name } = field;\n    if (editType.toUpperCase() === 'RADIO') {\n      editType = this.doesFieldQualifyAsBinary(field) ? 'BOOLEAN' : 'SELECT';\n    }\n    const fieldDefsByName = this.queryBuilderService.getFieldDefsByName();\n    // Check Fields by priority for match Field Definition\n    const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));\n    return fieldDefsByName.get(key);\n  }\n\n  private doesFieldQualifyAsBinary(field): boolean {\n    if (field.dataType === 'Boolean') {\n      return true;\n    }\n    // If no options are presented, use True/False options.\n    const optionCount = field.options?.length\n    if (!Helpers.isNumber(optionCount) || optionCount === 0) {\n      return true;\n    }\n    // If the field uses 2 options, we can show 2 radio values for that. 1 is an invalid state, but better displayed with a Select picker.\n    return field.options.length === 2;\n  }\n\n  private createFieldTemplates() {\n    const definition = this.findDefinitionForField(this.getField());\n\n    if (!this.parentForm.get('operator').value) {\n      this.parentForm.get('operator').setValue(definition.defaultOperator);\n    }\n\n    this.createFieldOperators(definition);\n    this.createFieldInput(definition);\n  }\n\n  private createFieldOperators(definition: BaseConditionFieldDef) {\n    this._operatorOutlet.viewContainer.clear();\n    if (definition) {\n      const context = { $implicit: this.parentForm, fieldMeta: this.getField() };\n      this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);\n    }\n    this.cdr.markForCheck();\n  }\n\n  private createFieldInput(definition: BaseConditionFieldDef) {\n    this._inputOutlet.viewContainer.clear();\n    if (definition) {\n      const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };\n      this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);\n    }\n    this.cdr.markForCheck();\n  }\n}\n","<form [formGroup]=\"parentForm\">\n  <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n    <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n      <novo-select\n        [placeholder]=\"labels.chooseAField\"\n        formControlName=\"field\"\n        (onSelect)=\"updateFieldSelection()\"\n        overlayWidth=\"24rem\"\n        overlayHeight=\"20rem\"\n        [displayWith]=\"fieldDisplayWith\"\n        [style.minWidth.px]=\"160\"\n        [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n        [displayIcon]=\"displayIcon\">\n        <novo-optgroup class=\"filter-search-results\">\n          <novo-option>\n            <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n          </novo-option>\n          <ng-container *ngIf=\"results$ | async as results; else loading\">\n            <ng-container *ngIf=\"results.length\">\n              <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n                [attr.data-automation-id]=\"field.name\">\n                {{ field.label || field.name }}\n              </novo-option>\n            </ng-container>\n          </ng-container>\n        </novo-optgroup>\n      </novo-select>\n    </novo-field>\n\n    <div class=\"condition-operator\">\n      <ng-container conditionOperatorOutlet></ng-container>\n    </div>\n\n    <div class=\"condition-input\">\n      <ng-container conditionInputOutlet></ng-container>\n    </div>\n  </novo-grid>\n  <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n  <novo-loading></novo-loading>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { Condition, Conjunction } from '../query-builder.types';\nimport { NovoLabelService } from 'novo-elements/services';\n\nconst EMPTY_CONDITION: Condition = {\n  conditionType: '$and',\n  field: null,\n  operator: null,\n  scope: null,\n  value: null,\n  supportingValue: null,\n};\n@Component({\n    selector: 'novo-condition-group',\n    templateUrl: './condition-group.component.html',\n    styleUrls: ['./condition-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }],\n    host: {\n        class: 'novo-condition-group',\n    },\n    standalone: false,\n})\nexport class ConditionGroupComponent implements OnInit, OnDestroy {\n  @Input() controlName: string = '$' + Conjunction.AND;\n  @Input() groupIndex: number;\n  @Input() hideFirstOperator: boolean = true;\n  @Input() canBeEmpty: boolean = false;\n  @Input() formGroupName: any;\n\n  public scope: string;\n  public entity: string;\n  public parentForm: UntypedFormGroup;\n  /** Subject that emits when the component has been destroyed. */\n  private readonly _onDestroy = new Subject<void>();\n\n  constructor(\n    public qbs: QueryBuilderService,\n    public labels: NovoLabelService,\n    private controlContainer: ControlContainer,\n    private formBuilder: FormBuilder,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    this.parentForm = this.controlContainer.control as UntypedFormGroup;\n    this.controlName = Object.keys(this.parentForm.controls)[0];\n    this.updateGroupScopeAndEntity();\n    merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(() => this.cdr.markForCheck());\n  }\n\n  ngOnChanges() {\n    this.updateGroupScopeAndEntity();\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  updateGroupScopeAndEntity() {\n    if (this.parentForm && this.controlName) {\n      this.scope = this.parentForm.value[this.controlName][0]?.scope || this.qbs.scopes()[0];\n      const entity = this.parentForm.value[this.controlName][0]?.entity;\n      if (entity) {\n        this.entity = entity;\n      }\n    }\n  }\n\n  updateControlName(value: string) {\n    const name = `$${value.replace('$', '')}`;\n    if (name !== this.controlName) {\n      const current = this.parentForm.get(this.controlName).value;\n      this.parentForm.controls[name] = this.parentForm.controls[this.controlName];\n      delete this.parentForm.controls[this.controlName];\n      this.controlName = name;\n      // scrub properties not on control\n      const currentStrict = current.map(item => this.sanitizeCondition(item));\n      this.parentForm.get(this.controlName)?.setValue(currentStrict);\n      this.cdr.markForCheck();\n    }\n  }\n\n  private sanitizeCondition(condition: any): Condition {\n    return {\n      conditionType: condition.conditionType,\n      field: condition.field,\n      operator: condition.operator,\n      scope: condition.scope,\n      value: condition.value,\n      supportingValue: condition.supportingValue,\n      entity: condition.entity,\n      warnOnDelete: condition.warnOnDelete,\n    };\n  }\n\n  get root(): FormArray {\n    return this.parentForm.get(this.controlName) as FormArray;\n  }\n\n  addCondition(data?: any) {\n    const condition = this.newCondition(data);\n    const onlyConditionIsEmpty = JSON.stringify(this.root.value) === JSON.stringify([EMPTY_CONDITION]);\n    this.root.push(condition);\n    this.qbs.hasMultipleScopes() && onlyConditionIsEmpty && this.removeCondition(0);\n    this.cdr.markForCheck();\n  }\n\n  async removeCondition(index: number) {\n    const condition = this.root.at(index)?.value;\n    const warnOnDelete = condition?.warnOnDelete;\n    const fieldName = condition?.field;\n    const isLastInstanceOfPinnedField = typeof warnOnDelete === 'function' && this.root.value.filter(c => c.field === fieldName).length === 1;\n\n    if (isLastInstanceOfPinnedField) {\n      const shouldDelete = await warnOnDelete();\n      if (!shouldDelete) {\n        return;\n      }\n    }\n\n    const isPrimaryScope = this.scope === this.qbs.scopes()[0];\n    const lastRowInGroup = this.root.length === 1;\n    const lastRowInQueryBuilder = this.cantRemoveRow();\n    this.root.removeAt(index);\n    if ((lastRowInQueryBuilder || (lastRowInGroup && isPrimaryScope)) && !this.canBeEmpty) {\n      this.addCondition();\n    }\n    this.cdr.markForCheck();\n  }\n\n  newCondition({ field, operator, scope, value, supportingValue, entity, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n    return this.formBuilder.group({\n      conditionType: '$and',\n      field: [field, Validators.required],\n      operator: [operator, Validators.required],\n      scope: [scope],\n      value: [value],\n      supportingValue: [supportingValue],\n      entity: [entity],\n      warnOnDelete: [warnOnDelete],\n    });\n  }\n\n  cantRemoveRow() {\n    if ((this.parentForm.parent as FormArray).length > 1) {\n      return false;\n    }\n    return this.root.length <= 1;\n  }\n}\n","<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n  <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n    <ng-container\n      *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n      <ng-container [formGroupName]=\"andIndex\">\n        <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"entity || scope\" align=\"end\" gap=\"sm\" #flex>\n          <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\" data-automation-id=\"groupings-dropdown\">\n            <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n            <novo-optgroup>\n              <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\" [attr.data-automation-id]=\"c\">\n                {{qbs.getConjunctionLabel(c)}}</novo-option>\n            </novo-optgroup>\n          </novo-dropdown>\n          <ng-template #labeledGroup>\n            <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n              {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n          </ng-template>\n          <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n          <novo-button class=\"delete-btn\" theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\" data-automation-id=\"delete-filter-button\">\n          </novo-button>\n        </novo-flex>\n      </ng-container>\n    </ng-container>\n    <button\n      *ngIf=\"!qbs.hasMultipleScopes()\"\n      theme=\"dialogue\"\n      data-automation-id=\"add-advanced-search-condition\"\n      icon=\"add-thin\"\n      side=\"left\"\n      size=\"sm\"\n      uppercase\n      (click)=\"addCondition()\">\n      {{ labels.addCondition }}</button>\n  </novo-stack>\n</div>\n","import {\n  AfterContentChecked,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  ContentChildren,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  viewChild,\n  viewChildren,\n} from '@angular/core';\nimport { ControlContainer, FormArray, FormBuilder, NG_VALUE_ACCESSOR, UntypedFormGroup, Validators } from '@angular/forms';\nimport { interval, Subject } from 'rxjs';\nimport { debounce, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { NovoTabbedGroupPickerElement, TabbedGroupPickerButtonConfig, TabbedGroupPickerTab } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { ConditionGroupComponent } from '../condition-group/condition-group.component';\nimport { NovoConditionFieldDef } from '../query-builder.directives';\nimport { QueryBuilderService } from '../query-builder.service';\nimport { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';\nimport { BaseFieldDef, Condition, ConditionGroup, Conjunction, AddressCriteriaConfig, DateCriteriaConfig } from '../query-builder.types';\n\nconst EMPTY_CONDITION: Condition = {\n  conditionType: '$and',\n  field: null,\n  operator: null,\n  scope: null,\n  value: null,\n  supportingValue: null,\n  entity: null,\n  warnOnDelete: undefined,\n};\n@Component({\n    selector: 'novo-criteria-builder',\n    templateUrl: './criteria-builder.component.html',\n    styleUrls: ['./criteria-builder.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },\n        { provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },\n        { provide: QueryBuilderService, useClass: QueryBuilderService },\n    ],\n    host: {\n        class: 'novo-criteria-builder',\n    },\n    standalone: false,\n})\nexport class CriteriaBuilderComponent implements OnInit, OnDestroy, AfterContentChecked, AfterViewInit {\n  @Input() config: any;\n  @Input() controlName: string;\n  @Input() allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];\n  @Input() editTypeFn: (field: BaseFieldDef) => string;\n  @Input() addressConfig: AddressCriteriaConfig;\n  @Input() dateConfig: DateCriteriaConfig;\n  @Input() canBeEmpty: boolean = false;\n\n  @Input('hideFirstOperator')\n  set HideFirstOperator(hide: boolean) {\n      if (!Helpers.isEmpty(hide)) {\n        this._hideFirstOperator = hide;\n      }\n  }\n  get hideFirstOperator() {\n    return this._hideFirstOperator;\n  }\n  private _hideFirstOperator: boolean = true;\n\n  @ContentChildren(NovoConditionFieldDef, { descendants: true }) _contentFieldDefs: QueryList<NovoConditionFieldDef>;\n  scopedFieldPicker = viewChild(NovoTabbedGroupPickerElement);\n  conditionGroups = viewChildren(ConditionGroupComponent);\n\n  public parentForm: UntypedFormGroup;\n  public innerForm: UntypedFormGroup;\n  public tabbedGroupPickerTabs = computed<TabbedGroupPickerTab[]>(() => {\n    const tabs = [];\n    this.qbs.scopes()?.forEach((scope) => {\n      tabs.push({\n        typeName: scope,\n        typeLabel: scope,\n        valueField: 'name',\n        labelField: 'label',\n        data: this.qbs.config.fields.find((field) => field.value === scope)?.options || [],\n      });\n    });\n    return tabs;\n  });\n  public addButtonConfig: TabbedGroupPickerButtonConfig = {\n    theme: 'dialogue',\n    side: 'left',\n    size: 'sm',\n    icon: 'add-thin',\n    label: this.labels.addCondition,\n  };\n  /** Subject that emits when the component has been destroyed. */\n  private readonly _onDestroy = new Subject<void>();\n\n  constructor(\n    private controlContainer: ControlContainer,\n    private formBuilder: FormBuilder,\n    private cdr: ChangeDetectorRef,\n    public qbs: QueryBuilderService,\n    public labels: NovoLabelService,\n  ) {\n    if (!qbs.componentHost) {\n      qbs.componentHost = this;\n    }\n  }\n\n  ngOnInit() {\n    this.parentForm = this.controlContainer.control as UntypedFormGroup;\n    this.innerForm = this.formBuilder.group({\n      criteria: this.formBuilder.array([]),\n    });\n\n    this.parentForm.valueChanges.pipe(\n      startWith(this.parentForm.value),\n      filter(v => v?.criteria),\n      takeUntil(this._onDestroy),\n    ).subscribe((value) => {\n      Promise.resolve().then(() => {\n        this.setInitialValue(value[this.controlName]);\n        this.cdr.markForCheck();\n      });\n    });\n    this.innerForm.valueChanges\n      .pipe(\n        debounce(() => interval(10)),\n        takeUntil(this._onDestroy),\n      )\n      .subscribe((value) => {\n        const result = value.criteria.filter((it, i) => {\n          const key = Object.keys(it)[0];\n          if (it[key].length === 0) {\n            this.removeConditionGroupAt(i);\n          }\n          return it[key].length > 0;\n        });\n\n        Promise.resolve().then(() => {\n          this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });\n          this.cdr.markForCheck();\n        });\n      });\n  }\n\n  ngAfterContentChecked(): void {\n    this._configureQueryBuilderService();\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n    this._registerFieldDefs();\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  private isConditionGroup(group: unknown): group is ConditionGroup {\n    return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));\n  }\n\n  private setInitialValue(value: ConditionGroup[] | Condition[]) {\n    if (value.length) {\n      if (this.isConditionGroup(value[0])) {\n        value.forEach((it) => this.addConditionGroup(it));\n      } else {\n        const conditions: Condition[] = [...value] as Condition[];\n        if (this.qbs.hasMultipleScopes()) {\n          // divide up by scope into separate groups\n          const scopedConditions: { [key: string]: Condition[] } = {};\n          conditions.forEach((condition) => {\n            scopedConditions[condition.scope] = scopedConditions[condition.scope] || [];\n            scopedConditions[condition.scope].push(condition);\n          })\n          for (const scope in scopedConditions) {\n            this.addConditionGroup({ $and: scopedConditions[scope] });\n          }\n        } else {\n          this.addConditionGroup({ $and: conditions });\n        }\n      }\n    } else {\n      this.addConditionGroup({ $and: value });\n    }\n  }\n\n  get root(): FormArray {\n    return this.innerForm.get('criteria') as FormArray;\n  }\n\n  addConditionGroup(data: any = { $and: [EMPTY_CONDITION] }) {\n    this.root.push(this.newConditionGroup(data));\n    this.cdr.markForCheck();\n  }\n\n  newConditionGroup(data: ConditionGroup): UntypedFormGroup {\n    const controls = Object.entries(data).reduce((obj, [key, val]) => {\n      return {\n        ...obj,\n        [key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),\n      };\n    }, {});\n    return this.formBuilder.group(controls);\n  }\n\n  newCondition({ field, operator, scope, value, supportingValue, warnOnDelete }: Condition = EMPTY_CONDITION): UntypedFormGroup {\n    const entity = this.getFieldEntity(this.config, scope);\n    return this.formBuilder.group({\n      conditionType: '$and',\n      field: [field, Validators.required],\n      operator: [operator, Validators.required],\n      scope: [scope],\n      value: [value],\n      supportingValue: [supportingValue],\n      entity: [entity],\n      warnOnDelete: [warnOnDelete],\n    });\n  }\n\n  getFieldEntity(fieldConfigs, scope) {\n    if (Array.isArray(fieldConfigs?.fields)) {\n      return fieldConfigs.fields.find(field => field.value === scope)?.entity\n    }\n    return null;\n  }\n\n  removeConditionGroupAt(index: number) {\n    this.root.removeAt(index, { emitEvent: false });\n  }\n\n  clearAllConditions() {\n    while (this.root.length) {\n      this.root.removeAt(0);\n    }\n  }\n\n  onFieldSelect(field) {\n    this.scopedFieldPicker().dropdown.closePanel();\n    const condition = { field: field.name, operator: null, scope: field.scope, value: null, entity: field.entity };\n    const group = this.conditionGroups().find((conditionGroup) => conditionGroup.scope === field.scope);\n    if (group) {\n      group.addCondition(condition);\n    } else {\n      this.addConditionGroup({ $and: [condition] })\n    }\n  }\n\n  private _configureQueryBuilderService() {\n    this.qbs.scopes.set(this.config?.fields.map((f) => f.value));\n    this.qbs.config = this.config;\n    this.qbs.editTypeFn = this.editTypeFn;\n    this.qbs.allowedGroupings = this.allowedGroupings as Conjunction[];\n  }\n\n  private _registerFieldDefs() {\n    const defs = [...Array.from(this._contentFieldDefs)];\n    defs.forEach((fieldDef) => {\n      this.qbs.registerFieldDef(fieldDef);\n    });\n  }\n}\n","<form [formGroup]=\"innerForm\">\n  <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n    <ng-container\n      *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n      <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{ qbs.hasMultipleScopes() ? conditionGroup.scope + ' ' + labels.filterss : qbs.getConjunctionLabel('and') }}</novo-label>\n      <novo-condition-group [hideFirstOperator]=\"hideFirstOperator\" [canBeEmpty]=\"canBeEmpty\" [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\" #conditionGroup></novo-condition-group>\n    </ng-container>\n  </novo-stack>\n  <novo-tabbed-group-picker\n    *ngIf=\"qbs.hasMultipleScopes()\"\n    [tabs]=\"tabbedGroupPickerTabs()\"\n    [selectionEnabled]=\"false\"\n    [buttonConfig]=\"addButtonConfig\"\n    (activation)=\"onFieldSelect($event)\">\n  </novo-tabbed-group-picker>\n</form>\n<novo-condition-templates [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!--\n  {\n    $and: [{\n      $or: [{\n        entity: 'JobOrder'\n        field: 'categories',\n        operator: 'doesNotContain',\n        value: 'Healthcare'\n      }]\n    }]\n  }\n -->\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NovoAutoCompleteModule } from 'novo-elements/elements/autocomplete';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCardModule } from 'novo-elements/elements/card';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDateTimePickerModule } from 'novo-elements/elements/date-time-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule, NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoNonIdealStateModule } from 'novo-elements/elements/non-ideal-state';\nimport { GooglePlacesModule } from 'novo-elements/elements/places';\nimport { NovoRadioModule } from 'novo-elements/elements/radio'\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoSelectSearchModule } from 'novo-elements/elements/select-search';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { NovoTabbedGroupPickerModule } from 'novo-elements/elements/tabbed-group-picker';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { ConditionBuilderComponent, ConditionInputOutlet, ConditionOperatorOutlet } from './condition-builder/condition-builder.component';\nimport { NovoDefaultAddressConditionDef } from './condition-definitions/address-condition.definition';\nimport { NovoDefaultBooleanConditionDef } from './condition-definitions/boolean-condition.definition';\nimport { NovoDefaultDateConditionDef } from './condition-definitions/date-condition.definition';\nimport { NovoDefaultDateTimeConditionDef } from './condition-definitions/date-time-condition.definition';\nimport { NovoDefaultIdConditionDef } from './condition-definitions/id-condition.definition';\nimport { NovoDefaultNumberConditionDef } from './condition-definitions/number-condition.definition';\nimport { NovoDefaultPickerConditionDef } from './condition-definitions/picker-condition.definition';\nimport { NovoDefaultStringConditionDef } from './condition-definitions/string-condition.definition';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\nimport { CriteriaBuilderComponent } from './criteria-builder/criteria-builder.component';\nimport { NovoConditionFieldDef, NovoConditionInputDef, NovoConditionOperatorsDef } from './query-builder.directives';\nimport { NovoConditionTemplatesComponent } from './condition-templates/condition-templates.component';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    DragDropModule,\n    CdkTableModule,\n    GooglePlacesModule,\n    NovoAutoCompleteModule,\n    NovoButtonModule,\n    NovoCommonModule,\n    NovoFormModule,\n    NovoSelectModule,\n    NovoNonIdealStateModule,\n    NovoFieldModule,\n    NovoOptionModule,\n    NovoFlexModule,\n    NovoTabModule,\n    NovoTabbedGroupPickerModule,\n    NovoLoadingModule,\n    NovoCardModule,\n    NovoDatePickerModule,\n    NovoDateTimePickerModule,\n    NovoIconModule,\n    NovoOverlayModule,\n    NovoRadioModule,\n    NovoSearchBoxModule,\n    NovoSwitchModule,\n    NovoChipsModule,\n    NovoSelectSearchModule,\n    NovoDropdownModule,\n    NovoFormExtrasModule,\n    NovoTooltipModule,\n  ],\n  declarations: [\n    CriteriaBuilderComponent,\n    ConditionBuilderComponent,\n    ConditionInputOutlet,\n    ConditionOperatorOutlet,\n    ConditionGroupComponent,\n    NovoDefaultAddressConditionDef,\n    NovoDefaultBooleanConditionDef,\n    NovoDefaultDateConditionDef,\n    NovoDefaultDateTimeConditionDef,\n    NovoConditionOperatorsDef,\n    NovoConditionInputDef,\n    NovoConditionFieldDef,\n    NovoDefaultStringConditionDef,\n    NovoDefaultNumberConditionDef,\n    NovoDefaultIdConditionDef,\n    NovoDefaultPickerConditionDef,\n    NovoConditionTemplatesComponent,\n  ],\n  exports: [\n    CriteriaBuilderComponent,\n    ConditionBuilderComponent,\n    NovoDefaultAddressConditionDef,\n    NovoDefaultBooleanConditionDef,\n    NovoDefaultDateConditionDef,\n    NovoDefaultDateTimeConditionDef,\n    NovoConditionOperatorsDef,\n    NovoConditionInputDef,\n    NovoConditionFieldDef,\n    NovoDefaultStringConditionDef,\n    NovoDefaultNumberConditionDef,\n    NovoDefaultIdConditionDef,\n    NovoDefaultPickerConditionDef,\n    NovoConditionTemplatesComponent,\n  ],\n})\nexport class NovoQueryBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryBuilderService","i6","i7","i12.NovoConditionOperatorsDef","i12.NovoConditionInputDef","i12.NovoConditionFieldDef","i4","i5","i8.NovoConditionOperatorsDef","i8.NovoConditionInputDef","i8.NovoConditionFieldDef","i8","i9.NovoConditionOperatorsDef","i9.NovoConditionInputDef","i9.NovoConditionFieldDef","i9","i10.NovoConditionOperatorsDef","i10.NovoConditionInputDef","i10.NovoConditionFieldDef","i1","i2","i3","i5.NovoConditionOperatorsDef","i5.NovoConditionInputDef","i5.NovoConditionFieldDef","i1.NovoDefaultAddressConditionDef","i2.NovoDefaultBooleanConditionDef","i3.NovoDefaultDateConditionDef","i4.NovoDefaultDateTimeConditionDef","i5.NovoDefaultStringConditionDef","i6.NovoDefaultNumberConditionDef","i7.NovoDefaultIdConditionDef","i8.NovoDefaultPickerConditionDef","i2.QueryBuilderService","i10","i11.NovoConditionTemplatesComponent","EMPTY_CONDITION","i9.ConditionBuilderComponent","i8.ConditionGroupComponent","i9.NovoConditionTemplatesComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGY;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,WAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAJW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;IAkBX;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAnBW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;IAyGR;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;ACxHhB,MAAM,iBAAiB,GAAG,CAAC,KAAmB,KAAI;IACvD,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI;AACxD,CAAC;MAQY,mBAAmB,CAAA;AAW9B;;;AAGG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;IACA,IAAW,UAAU,CAAC,KAAsC,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,iBAAiB;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAGA;;;AAGG;AACH,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;IACrB;IACA,IAAW,MAAM,CAAC,KAAyB,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAMA;;;;AAIG;AACH,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;IACA,IAAW,gBAAgB,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAKA,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAA,CAAA,MAAM,GAAN,MAAM;AAvDlB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAyB;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAiC;AAC5D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,EAAE,kDAAC;AACnB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,GAAG,CAAC,6DAAC;AACpE;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;QAalD,IAAA,CAAA,WAAW,GAAoC,iBAAiB;AAahE,QAAA,IAAA,CAAA,OAAO,GAAuB;AACpC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,oBAAoB,EAAE,IAAI;SAC3B;IAkB8C;;AAG/C,IAAA,gBAAgB,CAAC,QAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACpD;;AAGA,IAAA,kBAAkB,CAAC,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC7C;IAEA,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,mBAAmB,CAAC,WAAmB,EAAA;AACrC,QAAA,QAAQ,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;YAChD,KAAK,WAAW,CAAC,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;YACvB,KAAK,WAAW,CAAC,GAAG;AAClB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;YACxB,KAAK,WAAW,CAAC,GAAG;AACpB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;;IAE5B;+GApFW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCbY,kBAAkB,GAAG,IAAI,cAAc,CAAM,oBAAoB;MACjE,qBAAqB,GAAG,IAAI,cAAc,CAAM,uBAAuB;MACvE,sBAAsB,GAAG,IAAI,cAAc,CAAM,wBAAwB;;ACItF;;;AAGG;MAKU,qBAAqB,CAAA;IAChC,WAAA,sBAAwC,QAA0B,EAAA;QAA1B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;+GAD1D,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;AAEG;MAKU,yBAAyB,CAAA;IACpC,WAAA,sBAAwC,QAA0B,EAAA;QAA1B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;+GAD1D,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;;AAGG;MAEU,qBAAqB,CAAA;;AAEhC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IACA,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B;AAgBA,IAAA,WAAA,GAAA,EAAe;AAEf;;;;;;AAMG;IACO,wBAAwB,GAAA;QAChC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,oBAAoB,CAAA,CAAE,CAAC;IAC9E;AAEU,IAAA,aAAa,CAAC,KAAa,EAAA;;;QAGnC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;YAC/D,IAAI,CAAC,wBAAwB,EAAE;QACjC;IACF;+GA7CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWlB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAZ5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;sBAGE,KAAK;uBAAC,oBAAoB;;sBAS1B,YAAY;uBAAC,qBAAqB;;sBAClC,YAAY;uBAAC,yBAAyB;;AAwCnC,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAC9D,IAAA,WAAA,CAAoB,GAAwB,EAAA;AAC1C,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,GAAG,GAAH,GAAG;IAEvB;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACjC;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACnC;+GATW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MChFqB,yBAAyB,CAAA;;AAE7C,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IACA,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;QAGjB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAWA,IAAA,WAAA,CAAmB,MAAwB,EAAA;QAAxB,IAAA,CAAA,MAAM,GAAN,MAAM;QALf,IAAA,CAAA,kBAAkB,GAAoB,EAAE;IAKJ;IAE9C,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAA2B;;AAE9D,QAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;IAC3B;IAEA,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,OAAO;QAC7H,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,KAAK;QACnD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC7B;AAEA;;;;AAIG;IACO,uBAAuB,CAAC,GAAG,SAAqB,EAAA;QACxD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD;AAEA,IAAA,gBAAgB,CAAC,SAA2B,EAAA;QAC1C,IAAI,QAAQ,GAAG,IAAI;QACnB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE;YAClE,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjH,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;AAChE,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjG,YAAA,IAAI,0BAA0B,KAAK,CAAC,CAAC,IAAI,qBAAqB,KAAK,CAAC,CAAC,IAAI,0BAA0B,KAAK,qBAAqB,EAAE;gBAC7H,QAAQ,GAAG,KAAK;YAClB;QACF;QACA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;QAC7D,IAAI,QAAQ,EAAE;YACZ,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC;IACF;;IAGQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAChC;IACF;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACtD;IACF;+GArFoB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmBlC,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAClB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FApBT,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C;;sBAGE;;sBAiBA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACjD,YAAY;uBAAC,eAAe;;;ACK/B;;AAEG;AA4DG,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;AA8B3E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;;AAxBrB,QAAA,IAAA,CAAA,QAAQ,GAA0B;AAChC,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,OAAO;SACrB;QACD,IAAA,CAAA,MAAM,GAAuC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;AACpD,QAAA,IAAA,CAAA,WAAW,GAAmC,QAAQ,CAAC,MACrD,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,uDACxD;AACD,QAAA,IAAA,CAAA,aAAa,GAAoB,QAAQ,CAAC,MACxC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,yDAC5D;AACD,QAAA,IAAA,CAAA,UAAU,GAAmB,QAAQ,CAAC,MACpC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,sDAC9E;AAED,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;QACrC,IAAA,CAAA,aAAa,GAAQ,EAAE;QACvB,IAAA,CAAA,IAAI,GAAW,EAAE;AAET,QAAA,IAAA,CAAA,2BAA2B,GAAiB,YAAY,CAAC,KAAK;AAE/D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAIjC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC;IACvH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;IAChD;IAEA,OAAO,CAAC,KAAK,EAAE,SAAS,EAAA;QACtB,IAAI,CAAC,CAAA,QAAA,mBAAA,OAAA,iBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAChC;QACA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;IAChC;IAEA,SAAS,CAAC,KAAK,EAAE,SAAS,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI;QACvC;QACA,IAAI,CAAA,QAAA,mBAAA,KAAA,eAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,QAAQ,CAAC,SAA0B,EAAA;AACjC,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IACpC;AAEA,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IACzE;AAEA,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,IAAK,IAAY,CAAC,aAAa,CAAC,EAAE,KAAK,SAAS,CAAC;IACvF;AAEA,IAAA,cAAc,CAAC,SAAS,EAAA;QACtB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;IAChD;AAEA,IAAA,eAAe,CAAC,SAAS,EAAA;QACvB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE;IACjD;AAEA,IAAA,WAAW,CAAC,KAAU,EAAE,SAA0B,EAAE,SAAiB,EAAA;AACnE,QAAA,MAAM,UAAU,GAAgB;YAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB;QACD,MAAM,OAAO,GAAgC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrE,MAAM,OAAO,GAAkB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/F,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE9E,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,IAAG;AACtC,YAAA,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACrC,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IACjC;AAEA,IAAA,MAAM,CAAC,aAA0B,EAAE,SAA0B,EAAE,SAAiB,EAAA;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC;AAC7B,YAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IACjC;;;AAIA,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AAC1C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB;AACpD,QAAA,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;YAChD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACjG;IACF;IAEA,cAAc,CAAC,SAA0B,EAAE,KAAK,EAAA;AAC9C,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,eAAe;QACpC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;;QAE1D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/F,SAAS,CAAC,WAAW,EAAE;IACzB;IAEQ,oBAAoB,CAAC,SAA0B,EAAE,MAAqB,EAAA;QAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACxB,YAAA,GAAG,GAAG;AACN,YAAA,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS;AAC7F,SAAA,CAAC,CAAC;IACL;AAEQ,IAAA,aAAa,CAAC,SAA0B,EAAA;QAC9C,OAAO;AACL,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,eAAe;AACtC,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,YAAA,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ;SACnC;IACH;AAEQ,IAAA,wBAAwB,CAAC,SAA0B,EAAA;QACzD,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;IAClI;+GAnJW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAC3B,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAGvB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7DnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,GAAA,EAAA,YAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,gCAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA3D1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;sBAEE,YAAY;uBAAC,uBAAuB;;sBACpC,YAAY;uBAAC,cAAc;;sBAC3B,SAAS;uBAAC,cAAc;;sBACxB,YAAY;uBAAC,iBAAiB;;;AC7FjC;;AAEG;AAiCG,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;AAG3E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAIhC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;IACnF;AAEA,IAAA,WAAW,CAAC,MAAM,EAAA;QAChB,OAAO,MAAM,CAAC,KAAK;IACrB;+GAVW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9B7B;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACjCD;;;AAGG;AAmEG,MAAO,2BAA4B,SAAQ,yBAAyB,CAAA;AAQxE,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AALrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM;QAEjC,IAAA,CAAA,MAAM,GAAoC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;AAI/C,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACjF;IAEA,UAAU,CAAC,KAAK,EAAE,SAAS,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAC/E,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;IAC3B;+GAhBW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EACxB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAlEvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE,YAAY;uBAAC,uBAAuB;;;ACvEvC;;;AAGG;AAiFG,MAAO,+BAAgC,SAAQ,yBAAyB,CAAA;AAQ5E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AALrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM;QAEjC,IAAA,CAAA,MAAM,GAAoC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;QAI/C,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC/D;IAEA,UAAU,CAAC,KAAK,EAAE,SAAS,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAC/E,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;IAC3B;+GAhBW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAC5B,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/EzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKQ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAhF3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyET,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;sBAEE,YAAY;uBAAC,uBAAuB;;;ACrFvC;;;;;AAKG;AAiDG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;AAInC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAClH;AAEA,IAAA,QAAQ,CAAC,SAA0B,EAAA;AACjC,QAAA,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;IACrC;IAEA,GAAG,CAAC,KAAU,EAAE,SAA0B,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;AAChB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;AAC9B,QAAA,IAAI,UAAU,KAAK,EAAE,EAAE;YACrB,MAAM,OAAO,GAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC/C,MAAM,QAAQ,GAAU,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACxF,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;QACxC;IACF;IAEA,MAAM,CAAC,aAAqB,EAAE,SAA0B,EAAA;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC;AAC1B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;QACrC;IACF;IAEQ,YAAY,CAAC,SAA0B,EAAE,QAAe,EAAA;QAC9D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzC,SAAS,CAAC,WAAW,EAAE;IACzB;+GApCW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9C5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,gCAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAUU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;;;;;;oBAMrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACtDD;;;AAGG;AAiCG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAIhC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IACzF;+GANW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9B5B;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACpCD;;AAEG;AAoBG,MAAO,yBAA0B,SAAQ,yBAAyB,CAAA;AAnBxE,IAAA,WAAA,GAAA;;AAoBE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AACnC,IAAA;+GAFY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBxB;;;;;;;;;;;;AAYX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACjBD;;AAEG;AAiDG,MAAO,6BAA8B,SAAQ,yBAAyB,CAAA;AAG1E,IAAA,WAAA,CAAY,YAA8B,EAAA;QACxC,KAAK,CAAC,YAAY,CAAC;AAHrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,UAAU;AAInC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC7F;AAES,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AACnD,QAAA,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;;QAEjC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACzF,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAChC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC;QACF;IACF;AAEA,IAAA,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAmB,EAAA;AAC7C,QAAA,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK;QACd;QACA,WAAW,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;QAC/C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE;AACtI,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAG;YAC9C,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YAClD,OAAO,WAAW,KAAK,WAAW;QACpC,CAAC,CAAC,IAAI,IAAI;IACZ;AAEA,IAAA,aAAa,CAAC,MAAmB,EAAA;QAC/B,OAAO,CAAA,EAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAA,CAAE;IAC5C;IAEA,UAAU,CAAC,MAAmB,EAAE,WAAmB,EAAA;AACjD,QAAA,OAAO,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtE,YAAA,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE;IAEA,aAAa,CAAC,OAAsB,EAAE,MAAyB,EAAA;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,EAAE;QACX;QACA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAsB,KAAI;YACpD,QAAQ,CAAC,OAAO,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK;YACf,KAAK;AACL,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;IACL;IAEA,eAAe,GAAA;;;;AAIb,QAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC;IAEtD;+GAhEW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9C5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA;oBACC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;AAChD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MClDY,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,2JCR5C,wnBAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDJa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAExB,KAAK,EAAA,QAAA,EAAA,wnBAAA,EAAA;;sBAGlB;;sBACA;;;AEqBH;;;AAGG;MAKU,oBAAoB,CAAA;IAC/B,WAAA,CAAmB,aAA+B,EAAS,UAAsB,EAAA;QAA9D,IAAA,CAAA,aAAa,GAAb,aAAa;QAA2B,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;+GADzE,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;AAKD;;;AAGG;MAKU,uBAAuB,CAAA;IAClC,WAAA,CAAmB,aAA+B,EAAS,UAAsB,EAAA;QAA9D,IAAA,CAAA,aAAa,GAAb,aAAa;QAA2B,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;+GADzE,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAwBY,yBAAyB,CAAA;AAwDpC,IAAA,WAAA,CACS,MAAwB,EACvB,GAAsB,EACtB,mBAAwC,EACxC,gBAAkC,EAAA;QAHnC,IAAA,CAAA,MAAM,GAAN,MAAM;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAlD1B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,wDAAC;QAC1B,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;;;;AAKvB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,IAAI,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAC,GAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkC,IAAI,mDAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAC,GAAC;AAC9E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAqB,MAAK;AACjD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;YACtD;AACA,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM;AACxC,QAAA,CAAC,kDAAC;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAkC,MAAK;AAClE,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;YAC9D;AACA,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAC5C,QAAA,CAAC,sDAAC;AAMK,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE;AAI3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,oBAAoB,gEAAC;QACxE,IAAA,CAAA,YAAY,GAAQ,EAAE;QAEvB,IAAA,CAAA,eAAe,GAAG,KAAK;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,gBAAA,OAAO,WAAW;YACpB;iBAAO;AACL,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,GAAG,OAAO;gBAChE,OAAO,CAAA,EAAG,gBAAgB,CAAA,UAAA,CAAY;YACxC;AACF,QAAA,CAAC,uDAAC;;AAGe,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAQ/C,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;AACtC,YAAA,mBAAmB,CAAC,aAAa,GAAG,IAAI;AACxC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;QACnB;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAoB;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9D,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3D,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB;AAC1D,YAAA,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,EAAE;AAChH,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,CAAC;QAClG;IACF;IAEA,kBAAkB,GAAA;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACtG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC9G,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAChH,CACF;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3D;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;;AAE5B,QAAA,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACpF,GAAG,CAAC,KAAK,EAAE;AACb,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC5B;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,WAAsC,EAAA;AACvD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAC3D;AAEA;;;;;;;;AAQG;IACH,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1C,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;QAC3C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AACvC,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACvB;AACA,QAAA,OAAO,IAAI;IACb;IAEA,oBAAoB,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7D;QACF;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;YAC/D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI;QAC3C;QACA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;QAEvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;AAE3B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChD;YACA,IAAI,CAAC,oBAAoB,EAAE;QAC7B;QACA,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACtE;AAEQ,IAAA,sBAAsB,CAAC,KAAK,EAAA;QAClC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;;AAEvC,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;AACtB,QAAA,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AACtC,YAAA,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,QAAQ;QACxE;QACA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;;QAErE,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC;AAEQ,IAAA,wBAAwB,CAAC,KAAK,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AAChC,YAAA,OAAO,IAAI;QACb;;AAEA,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI;QACb;;AAEA,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IACnC;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE/D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC;QACtE;AAEA,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACnC;AAEQ,IAAA,oBAAoB,CAAC,UAAiC,EAAA;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1E,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;QACpG;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,gBAAgB,CAAC,UAAiC,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AAC5I,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC7F;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;+GAjPW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAfvB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACnF,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC/E,gBAAA,UAAU,EAAE,CAAC,YAA8B,EAAE,mBAAyC,KAAI;oBACtF,IAAI,CAAC,mBAAmB,EAAE;AACtB,wBAAA,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC;oBAC/D;AACA,oBAAA,OAAO,mBAAmB;gBAC9B,CAAC;AACJ,aAAA;SACJ,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKQ,uBAAuB,6FACvB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5EjC,wwDA8CA,EAAA,MAAA,EAAA,CAAA,kvDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,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,EAAAA,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,aAAA,EAAA,QAAA,EAAA,8CAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPa,oBAAoB,mEAYpB,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuBvB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;+BACI,wBAAwB,EAAA,SAAA,EAGvB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAA,yBAA2B,EAAE;AACnF,wBAAA;AACI,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC/E,4BAAA,UAAU,EAAE,CAAC,YAA8B,EAAE,mBAAyC,KAAI;gCACtF,IAAI,CAAC,mBAAmB,EAAE;AACtB,oCAAA,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC;gCAC/D;AACA,gCAAA,OAAO,mBAAmB;4BAC9B,CAAC;AACJ,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,wwDAAA,EAAA,MAAA,EAAA,CAAA,kvDAAA,CAAA,EAAA;;sBAGlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAEhD;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAgCA,WAAW;uBAAC,sBAAsB;;;AE3GrC,MAAM8B,iBAAe,GAAc;AACjC,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,eAAe,EAAE,IAAI;CACtB;MAYY,uBAAuB,CAAA;IAalC,WAAA,CACS,GAAwB,EACxB,MAAwB,EACvB,gBAAkC,EAClC,WAAwB,EACxB,GAAsB,EAAA;QAJvB,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,MAAM,GAAN,MAAM;QACL,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;AAjBJ,QAAA,IAAA,CAAA,WAAW,GAAW,GAAG,GAAG,WAAW,CAAC,GAAG;QAE3C,IAAA,CAAA,iBAAiB,GAAY,IAAI;QACjC,IAAA,CAAA,UAAU,GAAY,KAAK;;AAOnB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;IAQ9C;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAA2B;AACnE,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;AAC7D,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC7C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC5B;IAEA,yBAAyB,GAAA;QACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;YACjE,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM;YACtB;QACF;IACF;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA,CAAE;AACzC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK;AAC3D,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAEvB,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;AAC9D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEQ,IAAA,iBAAiB,CAAC,SAAc,EAAA;QACtC,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,YAAY,EAAE,SAAS,CAAC,YAAY;SACrC;IACH;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAc;IAC3D;AAEA,IAAA,YAAY,CAAC,IAAU,EAAA;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAACA,iBAAe,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,oBAAoB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,MAAM,eAAe,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK;AAC5C,QAAA,MAAM,YAAY,GAAG,SAAS,EAAE,YAAY;AAC5C,QAAA,MAAM,SAAS,GAAG,SAAS,EAAE,KAAK;AAClC,QAAA,MAAM,2BAA2B,GAAG,OAAO,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAEzI,IAAI,2BAA2B,EAAE;AAC/B,YAAA,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE;YACzC,IAAI,CAAC,YAAY,EAAE;gBACjB;YACF;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAC7C,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,qBAAqB,KAAK,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YACrF,IAAI,CAAC,YAAY,EAAE;QACrB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAgBA,iBAAe,EAAA;AAChH,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,eAAe,EAAE,CAAC,eAAe,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,YAAY,EAAE,CAAC,YAAY,CAAC;AAC7B,SAAA,CAAC;IACJ;IAEA,aAAa,GAAA;QACX,IAAK,IAAI,CAAC,UAAU,CAAC,MAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;IAC9B;+GAjIW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EANrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpH,wiEAmCA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDRa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;+BACI,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,uBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,IAAA,EAC1G;AACF,wBAAA,KAAK,EAAE,sBAAsB;AAChC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,wiEAAA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA;;sBAGlB;;sBACA;;sBACA;;sBACA;;sBACA;;;AEJH,MAAM,eAAe,GAAc;AACjC,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,YAAY,EAAE,SAAS;CACxB;MAgBY,wBAAwB,CAAA;IASnC,IACI,iBAAiB,CAAC,IAAa,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;IACJ;AACA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;IAChC;IAgCA,WAAA,CACU,gBAAkC,EAClC,WAAwB,EACxB,GAAsB,EACvB,GAAwB,EACxB,MAAwB,EAAA;QAJvB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,MAAM,GAAN,MAAM;AAnDN,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;QAIrE,IAAA,CAAA,UAAU,GAAY,KAAK;QAW5B,IAAA,CAAA,kBAAkB,GAAY,IAAI;AAG1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,4BAA4B,6DAAC;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,uBAAuB,2DAAC;AAIhD,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAyB,MAAK;YACnE,MAAM,IAAI,GAAG,EAAE;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;gBACnC,IAAI,CAAC,IAAI,CAAC;AACR,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,OAAO;oBACnB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE;AACnF,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,iEAAC;AACK,QAAA,IAAA,CAAA,eAAe,GAAkC;AACtD,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SAChC;;AAEgB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAS/C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACtB,YAAA,GAAG,CAAC,aAAa,GAAG,IAAI;QAC1B;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAA2B;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAC/B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EACxB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC5B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAChC;gBACA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3B,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5E,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,6BAA6B,EAAE;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC5B;AAEQ,IAAA,gBAAgB,CAAC,KAAc,EAAA;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjF;AAEQ,IAAA,eAAe,CAAC,KAAqC,EAAA;AAC3D,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACnD;iBAAO;AACL,gBAAA,MAAM,UAAU,GAAgB,CAAC,GAAG,KAAK,CAAgB;AACzD,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE;;oBAEhC,MAAM,gBAAgB,GAAmC,EAAE;AAC3D,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAC/B,wBAAA,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;wBAC3E,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACnD,oBAAA,CAAC,CAAC;AACF,oBAAA,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE;AACpC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D;gBACF;qBAAO;oBACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAC9C;YACF;QACF;aAAO;YACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzC;IACF;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAc;IACpD;IAEA,iBAAiB,CAAC,OAAY,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,iBAAiB,CAAC,IAAoB,EAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI;YAC/D,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;aACtE;QACH,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;IACzC;AAEA,IAAA,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,KAAgB,eAAe,EAAA;AACxG,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,eAAe,EAAE,CAAC,eAAe,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,YAAY,EAAE,CAAC,YAAY,CAAC;AAC7B,SAAA,CAAC;IACJ;IAEA,cAAc,CAAC,YAAY,EAAE,KAAK,EAAA;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;AACvC,YAAA,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,MAAM;QACzE;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACjD;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvB;IACF;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;QACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC9C,QAAA,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;QAC9G,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;QACnG,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;QAC/B;aAAO;YACL,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C;IACF;IAEQ,6BAA6B,GAAA;QACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAC7B,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QACrC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAiC;IACpE;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;+GAtNW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,EAAA,CAAA,gBAAA,EAAA,CAAA,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAVtB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACpG,YAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACzE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAClE,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EA0Bc,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACR,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAC3B,uBAAuB,gEC3ExD,+tCA8BA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,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,EAAAA,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,EAAAa,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDuBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACpG,wBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,0BAA0B,EAAE;AACzE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;qBAClE,EAAA,IAAA,EACK;AACF,wBAAA,KAAK,EAAE,uBAAuB;AACjC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,+tCAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA;;sBAGlB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,KAAK;uBAAC,mBAAmB;;sBAWzB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;AAC/B,aAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,4BAA4B,iGAC3B,uBAAuB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEqC3C,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAnC/B,wBAAwB;YACxB,yBAAyB;YACzB,oBAAoB;YACpB,uBAAuB;YACvB,uBAAuB;YACvB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,+BAA+B;YAC/B,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,6BAA6B;YAC7B,6BAA6B;YAC7B,yBAAyB;YACzB,6BAA6B;AAC7B,YAAA,+BAA+B,aAjD/B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,2BAA2B;YAC3B,iBAAiB;YACjB,cAAc;YACd,oBAAoB;YACpB,wBAAwB;YACxB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,sBAAsB;YACtB,kBAAkB;YAClB,oBAAoB;AACpB,YAAA,iBAAiB,aAsBjB,wBAAwB;YACxB,yBAAyB;YACzB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,+BAA+B;YAC/B,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,6BAA6B;YAC7B,6BAA6B;YAC7B,yBAAyB;YACzB,6BAA6B;YAC7B,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YApE/B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,2BAA2B;YAC3B,iBAAiB;YACjB,cAAc;YACd,oBAAoB;YACpB,wBAAwB;YACxB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,sBAAsB;YACtB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAsCR,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtElC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,kBAAkB;wBAClB,sBAAsB;wBACtB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,2BAA2B;wBAC3B,iBAAiB;wBACjB,cAAc;wBACd,oBAAoB;wBACpB,wBAAwB;wBACxB,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,eAAe;wBACf,sBAAsB;wBACtB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,yBAAyB;wBACzB,oBAAoB;wBACpB,uBAAuB;wBACvB,uBAAuB;wBACvB,8BAA8B;wBAC9B,8BAA8B;wBAC9B,2BAA2B;wBAC3B,+BAA+B;wBAC/B,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;wBACzB,6BAA6B;wBAC7B,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,yBAAyB;wBACzB,8BAA8B;wBAC9B,8BAA8B;wBAC9B,2BAA2B;wBAC3B,+BAA+B;wBAC/B,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;wBACzB,6BAA6B;wBAC7B,+BAA+B;AAChC,qBAAA;AACF,iBAAA;;;AC/GD;;AAEG;;;;"}