{"version":3,"file":"onepoint-yap-dashboard-search.mjs","sources":["../../../../projects/onepoint-yap/dashboard/search/components/choose-widget/choose-widget.component.ts","../../../../projects/onepoint-yap/dashboard/search/components/choose-widget/choose-widget.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/store/search-mono-class.actions.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/store/search-mono-class.reducer.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/store/search-mono-class.selectors.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/store/search-multi-class.actions.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/store/search-multi-class.reducer.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/store/search-multi-class.selectors.ts","../../../../projects/onepoint-yap/dashboard/search/search-fulltext/store/search-fulltext.actions.ts","../../../../projects/onepoint-yap/dashboard/search/components/save-query/save-query.component.ts","../../../../projects/onepoint-yap/dashboard/search/components/save-query/save-query.component.html","../../../../projects/onepoint-yap/dashboard/search/style/css.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-home/search-home.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-home/search-home.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-condition/search-condition.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-condition/search-condition.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-composed/search-composed.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-composed/search-composed.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-order/search-order.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-order/search-order.component.html","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/components/search-mono-class/search-mono-class.component.html","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/store/search-multi-class.service.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.html","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.html","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/components/search-multi-class/search-multi-class.component.html","../../../../projects/onepoint-yap/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-fulltext/search-fulltext/search-fulltext.component.html","../../../../projects/onepoint-yap/dashboard/search/components/save-query-button/save-query-button.component.ts","../../../../projects/onepoint-yap/dashboard/search/components/save-query-button/save-query-button.component.html","../../../../projects/onepoint-yap/dashboard/search/components/edit-named-query/edit-named-query.component.ts","../../../../projects/onepoint-yap/dashboard/search/components/edit-named-query/edit-named-query.component.html","../../../../projects/onepoint-yap/dashboard/search/search-tools/search-tools.component.ts","../../../../projects/onepoint-yap/dashboard/search/search-tools/search-tools.component.html","../../../../projects/onepoint-yap/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.ts","../../../../projects/onepoint-yap/dashboard/search/components/edit-named-query-modal/edit-named-query-modal.component.html","../../../../projects/onepoint-yap/dashboard/search/i18n/en.translations.ts","../../../../projects/onepoint-yap/dashboard/search/i18n/fr.translations.ts","../../../../projects/onepoint-yap/dashboard/search/search-fulltext/store/search-fulltext.service.ts","../../../../projects/onepoint-yap/dashboard/search/search-fulltext/store/search-fulltext.effects.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/store/search-mono-class.service.ts","../../../../projects/onepoint-yap/dashboard/search/search-mono-class/store/search-mono-class.effects.ts","../../../../projects/onepoint-yap/dashboard/search/search-multi-class/store/search-multi-class.effects.ts","../../../../projects/onepoint-yap/dashboard/search/search.module.ts","../../../../projects/onepoint-yap/dashboard/search/onepoint-yap-dashboard-search.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {\n  CatalogEntry,\n  NamedQueryTypes,\n  SubscriptionnerDirective,\n  ToolboxManifestService,\n  ToolboxMenuService\n} from '@onepoint-yap/dashboard';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n  selector: 'yap-choose-widget',\n  templateUrl: './choose-widget.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class ChooseWidgetComponent extends SubscriptionnerDirective implements OnChanges {\n  @ViewChild('chooseWidgets') chooseWidgets!: ElementRef<HTMLButtonElement>;\n  selectedWidget?: Element | null;\n  widgetSelected?: { icon: string; label: string; type: string };\n  @Input() panelOpen: boolean = false;\n  readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n  @Output() selected = new EventEmitter<string>();\n  readonly TOP_POSITION: ConnectedPosition = {\n    originX: 'start',\n    originY: 'top',\n    overlayX: 'start',\n    overlayY: 'bottom'\n  };\n  readonly BOTTOM_POSITION: ConnectedPosition = {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'top'\n  };\n  @Input() mode = 'button';\n  @Input() width = 200;\n  widgets$: Observable<CatalogEntry[]>;\n\n  constructor(private toolboxMenuService: ToolboxMenuService, private toolboxManifestService: ToolboxManifestService) {\n    super();\n    this.widgets$ = this.toolboxMenuService.menuStructure$.pipe(\n      map((menu) =>\n        menu\n          .map((items) => [...items.sub.filter((s) => this.toolboxManifestService.isModel(s.type))])\n          .reduce((acc, items) => [...acc, ...items], [])\n      )\n    );\n    this.subscriptions.add(\n      this.widgets$.subscribe(\n        (widgets) => (this.widgetSelected = [...widgets].sort((a, b) => (a.type === 'table' ? -1 : 1))[0])\n      )\n    );\n  }\n  ngOnChanges(): void {\n    if (this.panelOpen) {\n      setTimeout(() => {\n        this.chooseWidgets.nativeElement.focus();\n      }, 10);\n    }\n  }\n\n  togglePopup() {\n    this.panelOpen = !this.panelOpen;\n  }\n\n  onSelectWidget(type: { icon: string; label: string; type: string }) {\n    this.widgetSelected = type;\n    this.selected.emit(type.type);\n  }\n}\n","<div cdkOverlayOrigin #originSearch=\"cdkOverlayOrigin\" class=\"m-choose-widget\">\n  <button\n    type=\"button\"\n    title=\"{{ '@yap.widget.buttonChoice' | i18n }}\"\n    class=\"a-btn a-btn--primary a-btn--icon-text m-choose-widget__buttons-widget\"\n    (click)=\"togglePopup()\"\n    *ngIf=\"mode === 'button'\"\n  >\n    <img\n      [alt]=\"widgetSelected?.label\"\n      [src]=\"widgetSelected?.icon | getSecuredImage | async\"\n      [width]=\"22\"\n      [height]=\"22\"\n    />\n    <span>{{ widgetSelected ? (widgetSelected.label | i18n) : ('@yap.toolbox.table' | i18n) }}</span>\n  </button>\n</div>\n\n<div class=\"m-choose-widget__input\" [class.choose-widget__input__inline]=\"mode === 'inline'\" *ngIf=\"mode !== 'button'\">\n  <ng-content></ng-content>\n</div>\n\n<ng-template\n  cdkConnectedOverlay\n  cdkConnectedOverlayLockPosition\n  [cdkConnectedOverlayOrigin]=\"originSearch\"\n  [cdkConnectedOverlayOpen]=\"panelOpen\"\n  [cdkConnectedOverlayPositions]=\"[BOTTOM_POSITION, TOP_POSITION]\"\n>\n  <div class=\"m-choose-widget__widget_overlay\" (keydown.escape)=\"togglePopup()\" [style.width.px]=\"width\">\n    <div class=\"m-choose-widget__widget_overlay__content\">\n      <div *ngFor=\"let widget of widgets$ | async\">\n        <button\n          #chooseWidgets\n          type=\"button\"\n          class=\"m-choose-widget__widget_overlay__content__item\"\n          [class.choose-widget__widget_overlay__content__item__selected]=\"widget.type === widgetSelected?.type\"\n          (click)=\"onSelectWidget(widget)\"\n        >\n          <img [alt]=\"widget.label | i18n\" [height]=\"22\" [width]=\"22\" [src]=\"widget.icon | getSecuredImage | async\" />\n          <span class=\"m-choose-widget__widget_overlay__content__item__label\">{{ widget.label | i18n }}</span>\n        </button>\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import { createAction, props } from '@ngrx/store';\nimport {\n  Attribute,\n  ConditionType,\n  DescriptionQuery,\n  MonoClassSearchPayload,\n  NormalizedCondition,\n  OperatorType,\n  OrderValue,\n  ValueDataType\n} from '@onepoint-yap/dashboard';\n\nexport const SearchMonoClassActions = {\n  save: createAction('[SearchMonoClass] save', props<{ descriptionQuery: DescriptionQuery; id?: string }>()),\n  search: createAction('[SearchMonoClass] launch Mono Class search'),\n  load: createAction('[SearchMonoClass] launch Mono Class search'),\n  saveMonoClassSearch: createAction('[SearchMonoClass] launch Mono Class search'),\n\n  selectMonoClassSearch: createAction('[Condition] select mono class search', props<{ classId: string }>()),\n  addFirstNormalizedCondition: createAction(\n    '[Condition] add first normalizedCondition ',\n    props<{ condition: NormalizedCondition }>()\n  ),\n  addNormalizedConditionAttributeForConditionId: createAction(\n    '[Condition] add normalizedCondition attribute ',\n    props<{ conditionId: string; attribute: Attribute }>()\n  ),\n  addNormalizedConditionComposedForConditionId: createAction(\n    '[Condition] add normalizedCondition composed ',\n    props<{ conditionId: string }>()\n  ),\n  addNormalizedConditionForConditionId: createAction(\n    '[Condition] add normalizedCondition for condition id',\n    props<{ conditionId: string; condition: NormalizedCondition }>()\n  ),\n  updateNormalizedConditionOperatorForConditionId: createAction(\n    '[Condition] update normalizedCondition operator for condition id',\n    props<{ conditionId: string; operator: OperatorType }>()\n  ),\n  updateNormalizedConditionValueForConditionId: createAction(\n    '[Condition] update normalizedCondition value for condition id',\n    props<{ conditionId: string; value: ValueDataType; upperValue?: ValueDataType }>()\n  ),\n  updateNormalizedConditionTypeForConditionId: createAction(\n    '[Condition] update normalizedCondition type for condition id',\n    props<{ conditionId: string; conditionType: ConditionType }>()\n  ),\n  deleteNormalizedConditionById: createAction(\n    '[Condition] delete normalizedCondition for condition id',\n    props<{ conditionId: string }>()\n  ),\n  deleteNormalizedCondition: createAction(\n    '[Condition] delete normalizedCondition',\n    props<{ condition: NormalizedCondition }>()\n  ),\n  removeConditionFromComposed: createAction(\n    '[Condition] remove normalizedCondition id from parent composed',\n    props<{ parentId: string; childrenId: string }>()\n  ),\n  loadExistingConditions: createAction(\n    '[SearchMonoClass] load existing conditions',\n    props<{ payload: MonoClassSearchPayload }>()\n  ),\n  addIdCondition: createAction('[SearchMonoClass] add id condition', props<{ ids: string[] }>()),\n  addIdMaster: createAction('[SearchMonoClass] add id master', props<{ id: string }>()),\n  addEntities: createAction(\n    '[SearchMonoClass] add entities',\n    props<{ entities: { [key: string]: NormalizedCondition } }>()\n  ),\n  addIdClass: createAction('[SearchMonoClass] add id class', props<{ id: string }>()),\n  resetSearch: createAction('[SearchMonoClass] reset search'),\n  addOrder: createAction('[SearchMonoClass] add order', props<{ attribute?: string; asc?: OrderValue }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MonoClassConditions, ResultOrder } from '@onepoint-yap/dashboard';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\n\nexport const searchMonoClassFeatureKey = '@yap/search/mono-class';\n\nexport interface SearchMonoClassState {\n  loading: boolean;\n  monoClassConditions: MonoClassConditions;\n  monoClassId?: string;\n  order?: ResultOrder;\n}\n\nexport const initialSearchMonoClassState: SearchMonoClassState = {\n  loading: false,\n  monoClassConditions: {\n    masterId: null,\n    ids: [],\n    entities: {}\n  },\n  order: undefined\n};\n\nexport const searchMonoClassReducer = createReducer(\n  initialSearchMonoClassState,\n  on(SearchMonoClassActions.selectMonoClassSearch, (state, action) => ({\n    ...state,\n    monoClassId: action.classId\n  })),\n  on(SearchMonoClassActions.addFirstNormalizedCondition, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      masterId: action.condition.id,\n      ids: [action.condition.id],\n      entities: {\n        [action.condition.id]: action.condition\n      }\n    }\n  })),\n  on(SearchMonoClassActions.addNormalizedConditionForConditionId, (state, action) => {\n    const composedIds = [\n      ...(state.monoClassConditions.entities[action.conditionId]?.composed ?? []),\n      action.condition.id\n    ];\n    return {\n      ...state,\n      monoClassConditions: {\n        ...state.monoClassConditions,\n        ids: [...state.monoClassConditions.ids, action.condition.id],\n        entities: {\n          ...state.monoClassConditions.entities,\n          [action.conditionId]: {\n            ...state.monoClassConditions.entities[action.conditionId],\n            composed: composedIds\n          },\n          [action.condition.id]: action.condition\n        }\n      }\n    };\n  }),\n  on(SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      ...state.monoClassConditions,\n      entities: {\n        ...state.monoClassConditions.entities,\n        [action.conditionId]: {\n          ...state.monoClassConditions.entities[action.conditionId],\n          operator: action.operator\n        }\n      }\n    }\n  })),\n  on(SearchMonoClassActions.updateNormalizedConditionValueForConditionId, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      ...state.monoClassConditions,\n      entities: {\n        ...state.monoClassConditions.entities,\n        [action.conditionId]: {\n          ...state.monoClassConditions.entities[action.conditionId],\n          value: action.value,\n          upperValue: action.upperValue\n        }\n      }\n    }\n  })),\n  on(SearchMonoClassActions.updateNormalizedConditionTypeForConditionId, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      ...state.monoClassConditions,\n      entities: {\n        ...state.monoClassConditions.entities,\n        [action.conditionId]: {\n          ...state.monoClassConditions.entities[action.conditionId],\n          type: action.conditionType\n        }\n      }\n    }\n  })),\n  on(SearchMonoClassActions.deleteNormalizedCondition, (state, action) => {\n    const ids = [...state.monoClassConditions.ids.filter((id) => id !== action.condition.id)];\n    const { [action.condition.id]: value, ...entities } = { ...state.monoClassConditions.entities };\n    return {\n      ...state,\n      monoClassConditions: {\n        ...state.monoClassConditions,\n        ids,\n        entities\n      }\n    };\n  }),\n  on(SearchMonoClassActions.removeConditionFromComposed, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      ...state.monoClassConditions,\n      entities: {\n        ...state.monoClassConditions.entities,\n        [action.parentId]: {\n          ...state.monoClassConditions.entities[action.parentId],\n          composed: [\n            ...(state.monoClassConditions.entities[action.parentId]?.composed?.filter(\n              (el) => el !== action.childrenId\n            ) ?? [])\n          ]\n        }\n      }\n    }\n  })),\n  on(SearchMonoClassActions.addIdCondition, (state, action) => ({\n    ...state,\n    monoClassConditions: { ...state.monoClassConditions, ids: [...action.ids] }\n  })),\n  on(SearchMonoClassActions.addIdMaster, (state, action) => ({\n    ...state,\n    monoClassConditions: { ...state.monoClassConditions, masterId: action.id }\n  })),\n  on(SearchMonoClassActions.addEntities, (state, action) => ({\n    ...state,\n    monoClassConditions: {\n      ...state.monoClassConditions,\n      entities: { ...action.entities }\n    }\n  })),\n  on(SearchMonoClassActions.addIdClass, (state, action) => ({\n    ...state,\n    monoClassId: action.id\n  })),\n  on(SearchMonoClassActions.resetSearch, (state) => ({\n    ...state,\n    monoClassId: undefined,\n    monoClassConditions: {\n      masterId: null,\n      ids: [],\n      entities: {}\n    }\n  })),\n  on(SearchMonoClassActions.addOrder, (state, action) => ({\n    ...state,\n    order: action.asc\n      ? {\n          attribute: action.attribute ?? state.order?.attribute ?? '',\n          asc: action.asc\n        }\n      : undefined\n  }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { Attribute, ClassSelectors, MonoClassConditions } from '@onepoint-yap/dashboard';\nimport * as fromSearchMonoClass from './search-mono-class.reducer';\nimport { SearchMonoClassState } from './search-mono-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMonoClass.SearchMonoClassState>(\n  fromSearchMonoClass.searchMonoClassFeatureKey\n);\n\nconst selectMonoClassIdSearch = createSelector(feature, (state: SearchMonoClassState) => state?.monoClassId);\nconst selectMonoClassAttributesSearch = createSelector(\n  ClassSelectors.entities,\n  selectMonoClassIdSearch,\n  (classes, classId?: string) => (classId ? [...new Set(classes[classId]?.attributes ?? [])] : [])\n);\n\nconst selectMonoClassSearchAttributeById = (attributeId: string) =>\n  createSelector(selectMonoClassAttributesSearch, (attributes: Attribute[]) =>\n    attributes.find((attr) => attr.id === attributeId)\n  );\nconst selectMonoClassConditions = createSelector(feature, (state: SearchMonoClassState) => state.monoClassConditions);\nconst order = createSelector(feature, (state: SearchMonoClassState) => state.order);\nconst selectMonoClassConditionsMasterId = createSelector(\n  selectMonoClassConditions,\n  (monoClassCondition: MonoClassConditions) => monoClassCondition?.masterId\n);\n\nconst selectMonoClassConditionsById = (id: string) =>\n  createSelector(\n    selectMonoClassConditions,\n    (monoClassConditions: MonoClassConditions) => monoClassConditions.entities[id]\n  );\n\nconst searchMonoClassValid = createSelector(\n  selectMonoClassConditions,\n  selectMonoClassIdSearch,\n  (conditions: MonoClassConditions, searchClassId) => {\n    if (!searchClassId) {\n      return false;\n    }\n    const attributeConditionIds = conditions.ids.filter((id) => conditions.entities[id]?.type === 'ATTRIBUTE');\n    return (\n      attributeConditionIds.find((id) => {\n        const condition = conditions.entities[id];\n        const pattern = condition?.pattern ?? '';\n        const value = condition?.value ?? '';\n        if (pattern === '' || value === '') {\n          return true;\n        }\n        return !RegExp(pattern).test(`${value}`);\n      }) === undefined\n    );\n  }\n);\n\nexport const SearchMonoClassSelectors = {\n  feature,\n  selectMonoClassIdSearch,\n  selectMonoClassAttributesSearch,\n  selectMonoClassSearchAttributeById,\n  selectMonoClassConditions,\n  selectMonoClassConditionsById,\n  selectMonoClassConditionsMasterId,\n  searchMonoClassValid,\n  order\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery, MultiClassCondition, MultiClassSearchPayload } from '@onepoint-yap/dashboard';\n\nexport const SearchMultiClassActions = {\n  updateMultiType: createAction('[Search Multi class] update conditonnal type', props<{ multiType: 'AND' | 'OR' }>()),\n  addNewEmptyCondition: createAction('[SearchMultiClass] add empty condition'),\n  addMultiClassCondition: createAction(\n    '[SearchMultiClass] add multi class condition',\n    props<{ condition: MultiClassCondition }>()\n  ),\n  updateConditionField: createAction(\n    '[SearchMultiClass] update condition field',\n    props<{ conditionId: string; field: string }>()\n  ),\n  updateCondition: createAction(\n    '[SearchMultiClass] update condition',\n    props<{ conditionId: string; key: keyof MultiClassCondition; value: any; upperValue?: any }>()\n  ),\n  updateConditionPattern: createAction(\n    '[SearchMultiClass] update condition pattern',\n    props<{ conditionId: string; pattern: string; isDate: boolean }>()\n  ),\n  removeCondition: createAction('[SearchMultiClass] remove condition', props<{ conditionId: string }>()),\n  resetSearch: createAction('[SearchMultiClass] reset search'),\n\n  loadExistingConditions: createAction(\n    '[SearchMultiClass] load existing conditions',\n    props<{ payload: MultiClassSearchPayload }>()\n  ),\n  updateConditions: createAction(\n    '[SearchMultiClass] update conditions',\n    props<{ conditions: MultiClassCondition[] }>()\n  ),\n\n  search: createAction('[SearchMultiClass] launch search'),\n  save: createAction('[SearchMultiClass] launch save', props<{ descriptionQuery: DescriptionQuery; id?: string }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MultiClassCondition } from '@onepoint-yap/dashboard';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\n\nexport const searchMultiClassFeatureKey = '@yap/search/multi-class';\n\nexport interface SearchMultiClassState {\n  multiType: 'AND' | 'OR';\n  conditions: MultiClassCondition[];\n}\n\nexport const initialSearchState: SearchMultiClassState = {\n  multiType: 'AND',\n  conditions: []\n};\n\nexport const searchMultiClassReducer = createReducer(\n  initialSearchState,\n  on(SearchMultiClassActions.updateMultiType, (state, action) => ({\n    ...state,\n    multiType: action.multiType\n  })),\n  on(SearchMultiClassActions.addMultiClassCondition, (state, action) => ({\n    ...state,\n    conditions: [...state.conditions, action.condition]\n  })),\n  on(SearchMultiClassActions.removeCondition, (state, action) => ({\n    ...state,\n    conditions: [...state.conditions.filter((c) => c.id !== action.conditionId)]\n  })),\n  on(SearchMultiClassActions.updateConditionField, (state, action) => ({\n    ...state,\n    conditions: [\n      ...state.conditions.map((c) =>\n        c.id === action.conditionId\n          ? ({\n              ...c,\n              field: action.field\n            } as MultiClassCondition)\n          : c\n      )\n    ]\n  })),\n  on(SearchMultiClassActions.updateConditionPattern, (state, action) => ({\n    ...state,\n    conditions: [\n      ...state.conditions.map((c) =>\n        c.id === action.conditionId\n          ? ({\n              ...c,\n              pattern: action.pattern,\n              isDate: action.isDate,\n              operator: action.isDate ? 'GREATER_THAN' : 'EQUALS',\n              value: null\n            } as MultiClassCondition)\n          : c\n      )\n    ]\n  })),\n  on(SearchMultiClassActions.updateCondition, (state, action) => ({\n    ...state,\n    conditions: [\n      ...state.conditions.map((c) =>\n        c.id === action.conditionId\n          ? {\n              ...c,\n              [action.key]: action.value,\n              upperValue: action.upperValue\n            }\n          : c\n      )\n    ]\n  })),\n  on(SearchMultiClassActions.updateConditions, (state, action) => ({\n    ...state,\n    conditions: action.conditions\n  })),\n  on(SearchMultiClassActions.resetSearch, (state) => ({\n    ...state,\n    multiType: 'AND',\n    conditions: []\n  }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { MultiClassCondition } from '@onepoint-yap/dashboard';\nimport * as fromSearchMultiClass from './search-multi-class.reducer';\nimport { SearchMultiClassState } from './search-multi-class.reducer';\n\nconst feature = createFeatureSelector<fromSearchMultiClass.SearchMultiClassState>(\n  fromSearchMultiClass.searchMultiClassFeatureKey\n);\n\nconst multiType = createSelector(feature, (state: SearchMultiClassState) => state?.multiType);\nconst conditions = createSelector(feature, (state: SearchMultiClassState) => state?.conditions);\nconst getConditionById = (id: string) =>\n  createSelector(conditions, (conditions: MultiClassCondition[]) => conditions?.find((c) => c.id === id));\n\n// in case when user could choose classes before fields\n\nconst searchMultiClassValid = createSelector(conditions, (conditions: MultiClassCondition[]) => {\n  return (\n    conditions.find((condition: MultiClassCondition) => {\n      if (condition.field === undefined) {\n        return true;\n      }\n      if ((condition.value ?? '') === '') {\n        return true;\n      }\n      if (condition.pattern) {\n        const pattern = condition.pattern;\n        const value = condition.value as string;\n        const patternTest = RegExp(pattern).test(value);\n        return !patternTest;\n      }\n      return false;\n    }) === undefined\n  );\n});\n\nexport const SearchMultiClassSelectors = {\n  feature,\n  multiType,\n  conditions,\n  getConditionById,\n  searchMultiClassValid\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DescriptionQuery } from '@onepoint-yap/dashboard';\n\nexport const searchFulltextActions = {\n  search: createAction('[Search Fulltext] search', props<{ search: string; classes: string[] }>()),\n  save: createAction(\n    '[Search Fulltext] save',\n    props<{ search: string; classes: string[]; descriptionQuery: DescriptionQuery; id?: string }>()\n  )\n};\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  ConfigActions,\n  DataSourceActions,\n  DataSourceSelectors,\n  DEFAULT_NAMED_QUERY_ID,\n  EXPLORE_NAMED_QUERY_ID,\n  NamedQuery,\n  NamedQueryTypes,\n  YAP_DIALOG_DATA,\n  YapDialogRef,\n  YapVisibility,\n  YapVisibilityType\n} from '@onepoint-yap/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\n\n@Component({\n  selector: 'yap-save-query',\n  templateUrl: './save-query.component.html'\n})\nexport class YapSaveQueryComponent implements OnInit {\n  value: string = '';\n  opened = false;\n  currentEdit$: Observable<NamedQuery | undefined>;\n  isEdit = false;\n\n  id?: string;\n  name: string = '';\n  description: string = '';\n  visibility: YapVisibility = {\n    type: YapVisibilityType.PRIVATE,\n    users: []\n  };\n  savedNameQuery?: NamedQuery;\n\n  get modalSave(): boolean {\n    return this.data.save;\n  }\n\n  get saveDisabled(): boolean {\n    return (\n      (this.name ?? '') === '' ||\n      (this.savedNameQuery?.name === this.name && !this.savedNameQuery?.owner) ||\n      this.name.length > 30 ||\n      this.description.length > 200\n    );\n  }\n  @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n  @ViewChild('save') save!: ElementRef<HTMLButtonElement>;\n\n  constructor(\n    private store: Store,\n    private dialog: YapDialogRef<YapSaveQueryComponent>,\n    @Inject(YAP_DIALOG_DATA)\n    private data: {\n      save: boolean;\n      type: NamedQueryTypes;\n      payload?: SearchFulltextChange;\n    }\n  ) {\n    this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n  }\n\n  ngOnInit(): void {\n    setTimeout(() => {\n      this.cross.nativeElement.focus();\n    }, 10);\n\n    this.currentEdit$.pipe(take(1)).subscribe((nq) => {\n      if (nq) {\n        this.savedNameQuery = nq;\n        this.id = nq.id;\n        this.isEdit = true;\n        this.name = nq.name;\n        this.description = nq.description ?? '';\n      }\n    });\n  }\n\n  onSave() {\n    const id =\n      this.id === DEFAULT_NAMED_QUERY_ID || this.id === EXPLORE_NAMED_QUERY_ID || !this.id ? uuidv4() : this.id;\n    if (this.name !== '') {\n      const descriptionQuery = {\n        name: this.name,\n        description: this.description ?? undefined,\n        visibility: this.visibility\n      };\n      switch (this.data.type) {\n        case NamedQueryTypes.FULL_TEXT:\n          const classes = this.data.payload?.classes ?? [];\n          const search = this.data.payload?.value ?? '';\n          this.store.dispatch(searchFulltextActions.save({ descriptionQuery, classes, search, id }));\n          break;\n        case NamedQueryTypes.MONO_CLASS:\n          this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id }));\n          break;\n        case NamedQueryTypes.MULTI_CLASS:\n          this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id }));\n          break;\n      }\n      this.onClose();\n    }\n  }\n  focusCrossElement() {\n    this.cross.nativeElement.focus();\n  }\n\n  focusValidation() {\n    this.save.nativeElement.focus();\n  }\n\n  onClose() {\n    this.store.dispatch(ConfigActions.closeOverlay({ id: 'YapSaveQueryComponent' }));\n    this.store.dispatch(DataSourceActions.namedQuery.stopRename());\n    if (this.isEdit) {\n      this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    }\n    this.isEdit = false;\n    this.dialog.close();\n  }\n}\n","<div\n  class=\"o-modal-wrapper\"\n  role=\"dialog\"\n  aria-modal=\"true\"\n  aria-labelledby=\"dialog_rename\"\n  (keydown.escape)=\"onClose()\"\n>\n  <div class=\"o-modal\">\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ '@yap.search.namedQuery.' + (modalSave ? 'saveTitle' : 'renameTitle') | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"onClose()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n\n    <div class=\"m-form-label-field\">\n      <label class=\"a-label\" for=\"name\">{{ '@yap.search.namedQuery.name' | i18n }}</label>\n      <input [(ngModel)]=\"name\" id=\"name\" type=\"text\" class=\"a-form-field\" required maxlength=\"30\" />\n    </div>\n    <div class=\"m-form-label-field\">\n      <label class=\"a-label\" for=\"description\">{{ '@yap.search.namedQuery.description' | i18n }}</label>\n      <input [(ngModel)]=\"description\" id=\"description\" type=\"text\" class=\"a-form-field\" required maxlength=\"200\" />\n    </div>\n\n    <yap-share [(ngModel)]=\"visibility\"></yap-share>\n\n    <div class=\"m-btn-group\">\n      <button type=\"button\" (click)=\"onClose()\" class=\"a-btn a-btn--secondary\">\n        {{ '@yap.toolbox.manifest.close' | i18n }}\n      </button>\n      <button\n        type=\"button\"\n        #save\n        (click)=\"onSave()\"\n        class=\"a-btn a-btn--primary\"\n        [disabled]=\"saveDisabled\"\n        (keydown.tab)=\"focusCrossElement()\"\n      >\n        {{ '@yap.toolbox.manifest.check' | i18n }}\n      </button>\n    </div>\n  </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'yap-search-css',\n  template: '',\n  styleUrls: [\n    '_m-choose-widget.scss',\n    '_o-edit-named-query.scss',\n    '_o-search-fulltext.scss',\n    '_o-yap-search-composed.scss',\n    '_o-yap-search-order.scss',\n    '_m-yap-search-select-attribute.scss',\n    '_o-multi-class-condition.scss',\n    '_o-search-mono-class.scss',\n    '_o-yap-search-condition.scss',\n    '_o-yap-search-tools.scss',\n    '_o-edit-named-query-modal.scss',\n    '_o-multi-class-field-selection.scss',\n    '_o-search-multi-class.scss',\n    '_o-yap-search-home.scss'\n  ],\n  encapsulation: ViewEncapsulation.None\n})\nexport class YapSearchCssComponent {}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  ConfigActions,\n  DashboardActions,\n  DashboardGridLayout,\n  DashboardSelectors,\n  DataSourceActions,\n  DataSourceSelectors,\n  defaultMenuStructure,\n  FullTextSearchPayload,\n  NamedQuery,\n  NamedQueryTypes,\n  NamedQueryUtils,\n  SearchActions,\n  WidgetLayout,\n  YapDialogConfirmComponent,\n  YapDialogConfirmData,\n  YapDialogService\n} from '@onepoint-yap/dashboard';\nimport { BehaviorSubject, combineLatest, combineLatestWith, filter, Observable, Subscription, take } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { YapSaveQueryComponent } from '../components/save-query/save-query.component';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\n\n@Component({\n  selector: 'yap-search-home',\n  templateUrl: './search-home.component.html'\n})\nexport class YapSearchHomeComponent implements OnInit, OnDestroy {\n  @ViewChild('templateSpot', { read: TemplateRef }) templateSpot!: TemplateRef<any>;\n  @ViewChild('templateRefresh', { read: TemplateRef }) templateRefresh!: TemplateRef<any>;\n\n  @Input() searchFulltextTpl?: TemplateRef<any>;\n  @Input() isMoreList = false;\n\n  @Output() changeListView = new EventEmitter<boolean>();\n  @Output() changeSearchCriteria = new EventEmitter<boolean>();\n\n  namedQueryList$?: Observable<NamedQuery[]>;\n  private subscription: Subscription = new Subscription();\n\n  namedQueriesUses$!: Observable<{ [p: string]: { windowIndex: number; type: string; layout: WidgetLayout }[] }>;\n  spotting$ = new BehaviorSubject<string>('');\n  spottingWidget$!: Observable<{ windowIndex: number; type: string; layout: WidgetLayout }[]>;\n  refreshOptions = [0, 10, 30, 60];\n\n  icons = {\n    map: 'share_location',\n    table: 'table_chart',\n    chart: 'show_chart',\n    graph: 'graph'\n  } as { [key: string]: string };\n\n  loadOpened: string | undefined;\n\n  private overlayRef?: OverlayRef;\n\n  readonly connectedPosition: ConnectedPosition = {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'top'\n  };\n  structure = defaultMenuStructure.map((items) => ({\n    ...items,\n    sub: items.sub.filter((s) => s.type !== 'iframe' && s.type !== 'detail')\n  }));\n\n  refreshRates$!: Observable<{ [p: string]: number }>;\n  refreshId: string = '';\n  deleteError$?: Observable<any>;\n  layout$!: Observable<DashboardGridLayout>;\n  DashboardGridLayout = DashboardGridLayout;\n\n  constructor(\n    private store: Store,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    private yapDialog: YapDialogService\n  ) {}\n\n  ngOnInit() {\n    this.store.dispatch(DataSourceActions.load());\n    this.namedQueryList$ = this.store.select(DataSourceSelectors.getNamedQuerySorted);\n    this.namedQueriesUses$ = this.store.select(DashboardSelectors.namedQueriesUses);\n    this.spottingWidget$ = combineLatest([this.namedQueriesUses$, this.spotting$]).pipe(\n      map(([uses, spotting]) => uses[spotting] ?? []),\n      map((uses) => uses.map((use) => ({ ...use, windowIndex: use.windowIndex + 1 })))\n    );\n    this.refreshRates$ = this.store.select(DashboardSelectors.refreshRates);\n    this.layout$ = this.store.select(DashboardSelectors.gridLayout);\n    this.deleteError$ = this.store.select(DataSourceSelectors.errors).pipe(debounceTime(100));\n  }\n\n  onSearchNamedQuery(id: string) {\n    this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: 'table' }));\n  }\n\n  onFavorite(id: string, isFavorite: boolean | undefined) {\n    if (!isFavorite) {\n      this.store.dispatch(DataSourceActions.namedQuery.addFavorite({ id }));\n    } else {\n      this.store.dispatch(DataSourceActions.namedQuery.deleteFavorite({ id }));\n    }\n  }\n\n  onSpot(id: string, $event: MouseEvent) {\n    this.spotting$.next(id);\n\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: false,\n          panelClass: ['spot-rs']\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n      this.overlayRef.attach(new TemplatePortal(this.templateSpot, this.viewContainerRef));\n      const spotElement = document.querySelector('.spot-rs') as HTMLDivElement;\n      if (!!spotElement) {\n        spotElement.style.left = $event.clientX - 10 + 'px';\n        spotElement.style.top = $event.clientY - 10 + 'px';\n      }\n    }\n  }\n\n  hideSpot() {\n    this.overlayRef?.dispose();\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n    this.overlayRef = undefined;\n  }\n\n  onEdit(namedQuery: NamedQuery) {\n    this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: namedQuery }));\n  }\n\n  onChangeListView(isMoreList: boolean) {\n    this.changeListView.emit(isMoreList);\n  }\n\n  onSearchCriteria() {\n    this.changeSearchCriteria.emit();\n  }\n\n  loadWidget(id: string, sub: { icon: string; label: string; type: string }) {\n    this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: sub.type }));\n    this.loadOpened = undefined;\n  }\n\n  onDelete(nq: NamedQuery) {\n    const data: YapDialogConfirmData = {\n      title: '@yap.search.namedQuery.delete',\n      actions: [\n        { id: 0, label: '@yap.toolbox.manifest.close', color: 'ghost' },\n        { id: 1, label: '@yap.search.namedQuery.delete' }\n      ]\n    };\n    const dialog = this.yapDialog.open(YapDialogConfirmComponent, {\n      data\n    });\n    this.subscription.add(\n      dialog.closeValue.pipe(take(1)).subscribe((action) => {\n        this.store.dispatch(ConfigActions.closeOverlay({ id: 'YapDialogConfirmComponent' }));\n        if (action.id === 1) {\n          this.store.dispatch(DataSourceActions.namedQuery.delete({ id: nq.id ?? '' }));\n          this.subscription.add(\n            this.deleteError$\n              ?.pipe(\n                combineLatestWith(this.store.select(DataSourceSelectors.isLoading)),\n                filter(([, isLoading]) => !isLoading),\n                take(1)\n              )\n              .subscribe(([error]) => {\n                if (error?.status === 403) {\n                  const data: YapDialogConfirmData = {\n                    title: '@yap.manifest.deleteError',\n                    actions: [{ id: 1, label: '@yap.toolbox.close' }]\n                  };\n                  const errorDialog = this.yapDialog.open(YapDialogConfirmComponent, {\n                    data\n                  });\n                  this.subscription.add(\n                    errorDialog.closeValue.pipe(take(1)).subscribe(() => {\n                      this.store.dispatch(ConfigActions.closeOverlay({ id: 'YapDialogConfirmComponent' }));\n                    })\n                  );\n                }\n              })\n          );\n        }\n      })\n    );\n  }\n\n  onRename(nq: NamedQuery) {\n    this.store.dispatch(DataSourceActions.namedQuery.openRename());\n    this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: nq }));\n    const save = false;\n    const type = NamedQueryUtils.getTypeFromPayload(nq.request);\n    const data =\n      type === NamedQueryTypes.FULL_TEXT\n        ? { save, type, payload: this.extractPayload(nq.request as FullTextSearchPayload) }\n        : { save, type };\n    this.yapDialog.open(YapSaveQueryComponent, { data });\n  }\n\n  private extractPayload(payload: FullTextSearchPayload): SearchFulltextChange {\n    const { fullSearch, oClasses } = payload;\n    return { value: fullSearch.value, classes: oClasses ?? [] };\n  }\n\n  onRefresh(id: string, $event: MouseEvent) {\n    this.refreshId = id;\n\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['refresh-rs']\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n      this.overlayRef.attach(new TemplatePortal(this.templateRefresh, this.viewContainerRef));\n      this.overlayRef.backdropClick().subscribe((_) => this.hideSpot());\n      const refreshElement = document.querySelector('.refresh-rs') as HTMLDivElement;\n      const refresh = document.querySelector('.refreshbt') as HTMLDivElement;\n      if (!!refreshElement) {\n        const rect = refresh.getBoundingClientRect();\n        refreshElement.style.left = rect.left + rect.width + 10 + 'px';\n        refreshElement.style.top = rect.top + 137 + 'px';\n      }\n    }\n  }\n\n  selectRefresh($event: number) {\n    this.store.dispatch(DashboardActions.setRefreshRate({ id: this.refreshId ?? '', rate: $event }));\n    this.hideSpot();\n  }\n\n  refresh(id: string) {\n    this.store.dispatch(SearchActions.getDatasourceItems({ id }));\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n}\n","<yap-search-css></yap-search-css>\n<div class=\"o-yap-search-home__named-query\">\n  <ng-container *ngIf=\"namedQueryList$ | async as namedQuery\">\n    <ng-container *ngIf=\"namedQuery.length > 0; else noNamedQuery\">\n      <div class=\"o-yap-search-home__named-query__card\">\n        <yap-expand-panel [open]=\"true\">\n          <yap-expand-panel-title>{{ '@yap.search.home.title' | i18n }}</yap-expand-panel-title>\n\n          <yap-card *ngFor=\"let nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery\">\n            <yap-card-header [marker]=\"true\">\n              <yap-card-icon>\n                <yap-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></yap-nq-color-selector>\n                <img\n                  [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n                  [height]=\"22\"\n                  [width]=\"22\"\n                  [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n                />\n              </yap-card-icon>\n\n              <yap-card-title>\n                <div\n                  class=\"o-yap-card-title__text\"\n                  [yapTooltip]=\"infoTooltip\"\n                  aria-describedby=\"infoTooltip_searchHome\"\n                >\n                  <div class=\"a-p o-yap-card-title__text__title\">{{ nq.name }}</div>\n                  <div class=\"a-p o-yap-card-title__text__description\" *ngIf=\"nq.description\">{{ nq.description }}</div>\n                </div>\n\n                <ng-template #infoTooltip>\n                  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n                    <span class=\"m-tooltip__text\">\n                      {{ nq.name }}\n                    </span>\n                    <span class=\"m-tooltip__description\" *ngIf=\"nq.description\">\n                      {{ nq.description }}\n                    </span>\n                  </div>\n                </ng-template>\n\n                <yap-icon\n                  class=\"o-yap-card-title__pin\"\n                  *ngIf=\"nq.favorite\"\n                  [width]=\"18\"\n                  [height]=\"18\"\n                  aria-label=\"favorite\"\n                  iconSvg=\"epingle\"\n                ></yap-icon>\n\n                <button\n                  [yapTooltip]=\"infoTooltipShow\"\n                  yapTooltipPosition=\"bottom\"\n                  aria-describedby=\"infoTooltipShow_searchHome\"\n                  class=\"a-btn a-btn--secondary -size-sm\"\n                  (click)=\"onSearchNamedQuery(nq.id)\"\n                  *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\"\n                >\n                  {{ '@yap.search.namedQuery.display' | i18n }}\n                  <span class=\"u-visually-hidden\">le widget associé à cette recherche</span>\n                </button>\n              </yap-card-title>\n\n              <yap-card-menu>\n                <div class=\"o-yap-card-menu__nav\">\n                  <button\n                    type=\"button\"\n                    class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\"\n                    (click)=\"onFavorite(nq.id, nq.favorite)\"\n                  >\n                    <yap-icon iconSvg=\"epingle\"></yap-icon>\n                    {{ (nq.favorite ? '@yap.search.namedQuery.noFavorite' : '@yap.search.namedQuery.favorite') | i18n }}\n                  </button>\n                  <yap-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n                    <button type=\"button\" class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\">\n                      <yap-icon iconSvg=\"synchro\"></yap-icon>\n                      {{ '@yap.search.namedQuery.refreshData' | i18n }}\n                    </button>\n                  </yap-card-menu>\n                  <yap-card-menu *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\">\n                    <button\n                      type=\"button\"\n                      class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\"\n                      (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n                      cdkOverlayOrigin\n                      #triggerLoad=\"cdkOverlayOrigin\"\n                    >\n                      <yap-icon iconSvg=\"file_download\"></yap-icon>\n                      {{ '@yap.search.namedQuery.display' | i18n }}\n                      <yap-icon\n                        iconSvg=\"fleche_haut\"\n                        [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n                      ></yap-icon>\n                    </button>\n\n                    <ng-template\n                      cdkConnectedOverlay\n                      [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n                      [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n                      [cdkConnectedOverlayHasBackdrop]=\"true\"\n                      [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n                      cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n                      (backdropClick)=\"loadOpened = undefined\"\n                    >\n                      <div class=\"o-draggable-menu -search-home\">\n                        <ul class=\"o-draggable-menu__list\">\n                          <ng-container *ngFor=\"let menu of structure\">\n                            <li class=\"o-draggable-menu__list__item\">\n                              <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                <yap-icon [iconSvg]=\"menu.icon\"></yap-icon>\n                                {{ menu.label | i18n }}\n                              </button>\n\n                              <ul class=\"o-draggable-menu__list__submenu\">\n                                <ng-container *ngFor=\"let sub of menu.sub\">\n                                  <li class=\"o-draggable-menu__list__submenu__item\">\n                                    <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n                                      <yap-icon [iconSvg]=\"sub.icon\"></yap-icon>\n                                      {{ sub.label | i18n }}\n                                    </button>\n                                  </li>\n                                </ng-container>\n                              </ul>\n                            </li>\n                          </ng-container>\n                        </ul>\n                      </div>\n                    </ng-template>\n                  </yap-card-menu>\n\n                  <yap-card-menu class=\"o-yap-card-menu__nav__item\">\n                    <yap-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></yap-nq-color-selector>\n                  </yap-card-menu>\n\n                  <yap-card-menu (click)=\"onSpot(nq.id, $event)\">\n                    <button type=\"button\" class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\">\n                      <yap-icon iconSvg=\"mode_clic\"></yap-icon>\n                      {{ '@yap.search.namedQuery.spot' | i18n }}\n                      <yap-icon\n                        iconSvg=\"fleche_haut\"\n                        [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n                      ></yap-icon>\n                    </button>\n                  </yap-card-menu>\n                  <yap-card-menu (click)=\"onRefresh(nq.id, $event)\">\n                    <button type=\"button\" class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\">\n                      <yap-icon iconSvg=\"history-line\"></yap-icon>\n                      {{ '@yap.search.namedQuery.refresh.title' | i18n }}\n                      <yap-icon\n                        iconSvg=\"fleche_haut\"\n                        [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n                      ></yap-icon>\n                    </button>\n                  </yap-card-menu>\n                  <button\n                    type=\"button\"\n                    class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\"\n                    (click)=\"onDelete(nq)\"\n                    *ngIf=\"nq.owner\"\n                  >\n                    <yap-icon iconSvg=\"delete\"></yap-icon>\n                    {{ '@yap.search.namedQuery.delete' | i18n }}\n                  </button>\n                  <button\n                    type=\"button\"\n                    class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\"\n                    (click)=\"onRename(nq)\"\n                    *ngIf=\"nq.owner\"\n                  >\n                    <yap-icon iconSvg=\"renamed\"></yap-icon>\n                    {{ '@yap.search.namedQuery.rename' | i18n }}\n                  </button>\n                  <button\n                    type=\"button\"\n                    class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\"\n                    (click)=\"onEdit(nq)\"\n                    (keydown.tab)=\"hideSpot()\"\n                  >\n                    <yap-icon iconSvg=\"edit\"></yap-icon>\n                    {{ '@yap.search.namedQuery.edit' | i18n }}\n                  </button>\n                </div>\n              </yap-card-menu>\n            </yap-card-header>\n          </yap-card>\n        </yap-expand-panel>\n      </div>\n      <button\n        class=\"a-btn -link-like\"\n        aria-pressed=\"false\"\n        id=\"btn_view_more\"\n        *ngIf=\"namedQuery.length > 2\"\n        (click)=\"onChangeListView(isMoreList)\"\n      >\n        {{ isMoreList ? ('@yap.search.namedQuery.seeLess' | i18n) : ('@yap.search.namedQuery.seeMore' | i18n) }}\n      </button>\n    </ng-container>\n\n    <ng-template #noNamedQuery>\n      <p class=\"search-home__container-search\">{{ '@yap.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n    </ng-template>\n  </ng-container>\n</div>\n\n<ng-template #infoTooltipShow>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipShow_searchHome\">\n    <span class=\"m-tooltip__text\"> Afficher le widget associé à cette recherche </span>\n  </div>\n</ng-template>\n\n<div class=\"o-yap-search-home__search\">\n  <h3 class=\"a-h3\">{{ '@yap.search.home.ssTitle' | i18n }}</h3>\n  <ng-container *ngIf=\"searchFulltextTpl\">\n    <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n    <p class=\"a-p o-yap-search-home__search__or\">{{ '@yap.search.home.or' | i18n }}</p>\n  </ng-container>\n  <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n    <yap-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></yap-icon>\n    {{ '@yap.search.home.searchByCriteria' | i18n }}\n    <yap-icon iconSvg=\"arrow_right\"></yap-icon>\n  </button>\n</div>\n\n<ng-template #templateSpot>\n  <div (mouseleave)=\"hideSpot()\">\n    {{\n      ((spottingWidget$ | async)?.length ?? 0 > 0\n        ? '@yap.search.namedQuery.spotTitle'\n        : '@yap.search.namedQuery.noSpot'\n      ) | i18n : { length: (spottingWidget$ | async)?.length }\n    }}\n    <div *ngFor=\"let use of spottingWidget$ | async\" class=\"spot-line\">\n      <yap-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></yap-icon>\n      {{ '@yap.search.namedQuery.type.' + use.type | i18n }} - {{ '@yap.search.namedQuery.use' | i18n : use }}\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n  <div>\n    <button\n      *ngFor=\"let option of refreshOptions\"\n      class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n      (click)=\"selectRefresh(option)\"\n    >\n      <yap-icon\n        [width]=\"20\"\n        [height]=\"20\"\n        iconSvg=\"check\"\n        *ngIf=\"(((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option\"\n      ></yap-icon>\n      {{ '@yap.search.namedQuery.refresh.' + option | i18n }}\n    </button>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassSelectors, FieldSelectors, FieldType } from '@onepoint-yap/dashboard';\nimport { filter, map, Observable, switchMap } from 'rxjs';\nimport { withLatestFrom } from 'rxjs/operators';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n  selector: 'yap-search-select-attribute',\n  templateUrl: './search-select-attribute.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapSearchSelectAttributeComponent {\n  @Input() set id(val: string) {\n    this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n      filter((id): id is string => id !== null),\n      switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n      filter((clazz): clazz is Class => clazz !== undefined),\n      withLatestFrom(this.store.select(FieldSelectors.fields)),\n      map(([clazz, fields]) => {\n        const attributes = [...(clazz.attributes ?? [])].filter(\n          (attr) => fields.find((field) => field.id === attr.field)?.type !== FieldType.RAW\n        );\n        return attributes.sort((a, b) => a.name.localeCompare(b.name));\n      })\n    );\n  }\n\n  @Output() selectAttributeChange = new EventEmitter<Attribute>();\n\n  get attributes$(): Observable<Attribute[]> | undefined {\n    return this._attributes$;\n  }\n\n  _attributes$?: Observable<Attribute[]>;\n\n  constructor(private store: Store<any>) {}\n\n  onSelectAttribute(attribute: Attribute): void {\n    this.selectAttributeChange.emit(attribute);\n  }\n}\n","<ng-container *ngIf=\"_attributes$ | async as attributes\">\n  <ul class=\"m-yap-search-select-attribute\">\n    <li class=\"m-yap-search-select-attribute__item\" *ngFor=\"let attr of attributes\">\n      <button class=\"a-btn\" (click)=\"onSelectAttribute(attr)\">\n        {{ attr.name }}\n      </button>\n    </li>\n  </ul>\n</ng-container>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  Attribute,\n  Class,\n  ClassSelectors,\n  DateRange,\n  Field,\n  FieldSelectors,\n  FieldType,\n  NormalizedCondition,\n  OPERATOR_OPTIONS,\n  OperatorOption,\n  OperatorType\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, filter, map, Observable, Subject, Subscription, switchMap, tap } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n  selector: 'yap-search-condition',\n  templateUrl: './search-condition.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapSearchConditionComponent implements OnDestroy {\n  @HostBinding('class') class = 'o-yap-search-condition-wrapper';\n\n  @Input() set attributeId(val: string) {\n    this.attributeId$.next(val);\n    this.attributeName$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n      filter((id): id is string => id !== null),\n      switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n      filter((clazz): clazz is Class => clazz !== undefined),\n      map((clazz: Class) => clazz.attributes.find((c) => c.id === val)?.name ?? '')\n    );\n  }\n\n  @Input() set id(val: string) {\n    this.conditionId$.next(val);\n    this.conditionId = val;\n  }\n\n  @Input() set useTextDateInputs(val: boolean) {\n    this.textDateInputs = val;\n  }\n\n  private attributeId$ = new Subject<string>();\n  private conditionId$ = new Subject<string>();\n  private conditionId!: string;\n  attributeName$?: Observable<string>;\n  operatorOptions$!: Observable<OperatorOption[]>;\n  condition$!: Observable<NormalizedCondition>;\n\n  pattern?: string;\n  isDate = false;\n  firstValueInvalid = false;\n  secondValueInvalid = false;\n  conditionValue = '';\n  secondConditionValue = '';\n  twoValues = false;\n  operatorSelectedValue?: OperatorType;\n  textDateInputs = false;\n  dateConditionValue: string | DateRange = '';\n\n  private sub = new Subscription();\n\n  constructor(private store: Store<any>, private _detect: ChangeDetectorRef) {\n    this.sub.add(\n      combineLatest([this.attributeId$, this.conditionId$])\n        .pipe(\n          filter(([attributeId, conditionId]) => attributeId !== null && conditionId !== null),\n          tap(([attributeId, conditionId]) => {\n            this.assignOperatorOption$(attributeId);\n            this.assignCondition$(conditionId);\n          }),\n          switchMap(() => combineLatest([this.operatorOptions$, this.condition$]))\n        )\n        .subscribe(([operatorOptions, condition]) => {\n          if (condition) {\n            this.conditionValue = condition.value?.toString() ?? '';\n            const operator = operatorOptions.find((ope) => ope.operator === condition.operator);\n            if (operator) {\n              this.operatorSelectedValue = operator.operator;\n              this.twoValues = operator.twoValues;\n            }\n            this.pattern = condition.pattern;\n            this.isDate = condition.isDate ?? false;\n            this._detect.markForCheck();\n          }\n        })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.sub.unsubscribe();\n  }\n\n  onSelectedOperator(operatorType: OperatorType): void {\n    this.store.dispatch(\n      SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId({\n        conditionId: this.conditionId,\n        operator: operatorType\n      })\n    );\n  }\n\n  updateFirstValue(): void {\n    this.store.dispatch(\n      SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n        value: this.conditionValue,\n        conditionId: this.conditionId\n      })\n    );\n  }\n\n  onCheckValidity(evt: any, first: boolean) {\n    if (this.pattern && evt?.target?.value) {\n      if (first) {\n        this.firstValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n      } else {\n        this.secondValueInvalid = !RegExp(this.pattern).test(evt.target.value);\n      }\n      this._detect.markForCheck();\n    }\n  }\n\n  onDeleteAttributeCondition(): void {\n    this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: this.conditionId }));\n  }\n\n  updateSecondValue(): void {\n    this.store.dispatch(\n      SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n        value: this.conditionValue,\n        conditionId: this.conditionId,\n        upperValue: this.secondConditionValue\n      })\n    );\n  }\n\n  updateDateCondition(): void {\n    this.store.dispatch(\n      SearchMonoClassActions.updateNormalizedConditionValueForConditionId({\n        value: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.start : this.dateConditionValue,\n        conditionId: this.conditionId,\n        upperValue: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.end : ''\n      })\n    );\n  }\n\n  private assignOperatorOption$(attributeId: string): void {\n    this.operatorOptions$ = this.store\n      .select(SearchMonoClassSelectors.selectMonoClassSearchAttributeById(attributeId))\n      .pipe(\n        filter((attr): attr is Attribute => attr !== undefined),\n        switchMap((attr: Attribute) => this.store.select(FieldSelectors.fieldById(attr.field))),\n        filter((field): field is Field => field !== undefined),\n        map((field: Field) => {\n          const fieldType = field.type;\n          if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {\n            return OPERATOR_OPTIONS.filter((el) => el.type === 'string');\n          } else if (\n            fieldType === FieldType.INTEGER ||\n            fieldType === FieldType.DECIMAL ||\n            fieldType === FieldType.LONG\n          ) {\n            return OPERATOR_OPTIONS.filter((el) => el.type === 'number');\n          } else {\n            return OPERATOR_OPTIONS.filter((el) => el.type === 'date');\n          }\n        })\n      );\n  }\n\n  private assignCondition$(conditionId: string): void {\n    this.condition$ = this.store\n      .select(SearchMonoClassSelectors.selectMonoClassConditionsById(conditionId))\n      .pipe(filter((cond): cond is NormalizedCondition => cond !== null));\n  }\n}\n","<div class=\"o-yap-search-condition\">\n  <div class=\"o-yap-search-condition__fields\" [class.has-date-picker]=\"isDate && !textDateInputs\">\n    <input class=\"a-form-field\" type=\"text\" [ngModel]=\"attributeName$ | async\" readonly />\n    <yap-select\n      class=\"a-yap-select operator\"\n      [labelTranslate]=\"true\"\n      [items]=\"operatorOptions$ | async\"\n      [itemsAsOption]=\"true\"\n      bindValue=\"operator\"\n      bindLabel=\"translation\"\n      name=\"operator\"\n      [ngModel]=\"operatorSelectedValue\"\n      (ngModelChange)=\"onSelectedOperator($event)\"\n    ></yap-select>\n    <ng-container *ngIf=\"isDate && !textDateInputs; else textInput\">\n      <yap-date-picker\n        class=\"o-yap-search-condition__date-picker\"\n        [(ngModel)]=\"dateConditionValue\"\n        (ngModelChange)=\"updateDateCondition()\"\n        [rangePicker]=\"twoValues\"\n        [roundSelection]=\"true\"\n        [timePicker]=\"true\"\n        required\n      ></yap-date-picker>\n    </ng-container>\n  </div>\n  <ng-template #textInput>\n    <input\n      class=\"a-form-field\"\n      type=\"text\"\n      [placeholder]=\"(twoValues ? '@yap.search.placeholder.minValue' : '@yap.search.placeholder.search') | i18n\"\n      [ngClass]=\"{ '-half': twoValues }\"\n      [class.yap-search-condition-input-pattern]=\"firstValue.touched && firstValueInvalid\"\n      [class.yap-search-condition-input-required]=\"firstValue.touched && firstValue.invalid\"\n      name=\"value\"\n      [type]=\"isDate ? 'date' : 'text'\"\n      required\n      #firstValue=\"ngModel\"\n      [(ngModel)]=\"conditionValue\"\n      (input)=\"onCheckValidity($event, true)\"\n      (focusout)=\"updateFirstValue()\"\n    />\n    <ng-container *ngIf=\"twoValues\">\n      <input\n        class=\"a-form-field\"\n        type=\"text\"\n        [placeholder]=\"'@yap.search.placeholder.maxValue' | i18n\"\n        required\n        [type]=\"isDate ? 'date' : 'text'\"\n        [(ngModel)]=\"secondConditionValue\"\n        (input)=\"onCheckValidity($event, false)\"\n        (focusout)=\"updateSecondValue()\"\n      />\n    </ng-container>\n  </ng-template>\n  <button\n    type=\"button\"\n    class=\"a-btn a-btn--icon-only -circle -size-xs delete\"\n    (click)=\"onDeleteAttributeCondition()\"\n    [title]=\"'@yap.search.attribute.remove' | i18n\"\n  >\n    <yap-icon iconSvg=\"close\" [width]=\"22\" [height]=\"22\"></yap-icon>\n    <span class=\"u-visually-hidden\">{{ '@yap.search.attribute.remove' | i18n }}</span>\n  </button>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, ConditionType, NormalizedCondition } from '@onepoint-yap/dashboard';\nimport { Observable, of } from 'rxjs';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n  selector: 'yap-search-composed',\n  templateUrl: './search-composed.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapSearchComposedComponent {\n  @HostBinding('class') class = 'o-yap-search-composed-wrapper';\n  @HostBinding('class.is-hover') hover = false;\n  masterId$: Observable<string | null>;\n\n  @HostListener('mouseover', ['$event'])\n  onMouseOver(evt: any) {\n    evt.stopPropagation();\n    this.hover = true;\n  }\n\n  @HostListener('mouseout', ['$event'])\n  onMouseOut(evt: any) {\n    evt.stopPropagation();\n    this.hover = false;\n  }\n\n  @Input() set id(val: string) {\n    this._id = val;\n    this.condition$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(this._id));\n  }\n\n  private _id!: string;\n  condition$: Observable<NormalizedCondition | null> = of(null);\n\n  panelNewAttributeOpen = false;\n\n  constructor(private store: Store<any>, private _change: ChangeDetectorRef) {\n    this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n  }\n\n  onAddNestedCondition(conditionId: string): void {\n    this.store.dispatch(SearchMonoClassActions.addNormalizedConditionComposedForConditionId({ conditionId }));\n  }\n\n  onSelectType(conditionId: string, conditionType: ConditionType): void {\n    this.store.dispatch(\n      SearchMonoClassActions.updateNormalizedConditionTypeForConditionId({ conditionId, conditionType })\n    );\n  }\n\n  onOpenPanel() {\n    this.panelNewAttributeOpen = true;\n    this._change.markForCheck();\n  }\n\n  onClosePanel() {\n    if (this.panelNewAttributeOpen) {\n      this.panelNewAttributeOpen = false;\n      this._change.markForCheck();\n    }\n  }\n\n  onAddAttributeCondition(attribute: Attribute, conditionId: string): void {\n    this.store.dispatch(\n      SearchMonoClassActions.addNormalizedConditionAttributeForConditionId({ conditionId, attribute })\n    );\n    this.onClosePanel();\n  }\n\n  onDeleteNestedCondition(conditionId: string): void {\n    this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId }));\n  }\n}\n","<div class=\"o-yap-search-composed\" [ngClass]=\"{ 'yap-search-composed-hover': hover }\">\n  <ng-container *ngIf=\"condition$ | async as cond\">\n    <ng-container *ngIf=\"cond.type === 'ATTRIBUTE'; else composedBlock\">\n      <ng-container *ngIf=\"cond.attribute\">\n        <yap-search-condition [attributeId]=\"cond.attribute\" [id]=\"cond.id\"></yap-search-condition>\n      </ng-container>\n    </ng-container>\n    <ng-template #composedBlock>\n      <div class=\"o-yap-search-composed__condition\">\n        <div class=\"o-yap-search-composed__condition__type -vertical-bar\">\n          <div class=\"o-yap-search-composed__condition__type__content\">\n            <yap-toggle\n              [leftword]=\"'@yap.search.type.or' | i18n\"\n              [rightword]=\"'@yap.search.type.and' | i18n\"\n              [alwaysActive]=\"true\"\n              [ngModel]=\"cond.type === 'OR'\"\n              (ngModelChange)=\"onSelectType(cond.id, cond.type === 'OR' ? 'AND' : 'OR')\"\n            ></yap-toggle>\n          </div>\n        </div>\n        <div class=\"o-yap-search-composed__condition__content\">\n          <ng-container *ngFor=\"let composedId of cond.composed\">\n            <yap-search-composed [id]=\"composedId\"></yap-search-composed>\n          </ng-container>\n\n          <div class=\"o-yap-search-composed__condition__content__footer\">\n            <button\n              type=\"button\"\n              class=\"a-btn a-btn--select -size-sm\"\n              (click)=\"onOpenPanel()\"\n              [yapOverlay]=\"selectAttribute\"\n              [overlayOpen]=\"panelNewAttributeOpen\"\n              (overlayOpenChange)=\"onClosePanel()\"\n              yapOverlayPosition=\"start-bottom\"\n              [yapOverlayNoPadding]=\"true\"\n            >\n              <yap-icon iconSvg=\"add\" [width]=\"15\" [height]=\"15\"> </yap-icon>\n              <span>{{ '@yap.search.composed.addCondition' | i18n }}</span>\n            </button>\n            <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"onAddNestedCondition(cond.id)\">\n              <yap-icon iconSvg=\"picture-in-picture\" [width]=\"16\" [height]=\"16\"></yap-icon>\n              <span>{{ '@yap.search.composed.addGroup' | i18n }}</span>\n            </button>\n            <ng-container *ngIf=\"masterId$ | async as masterId\">\n              <button\n                type=\"button\"\n                class=\"a-btn a-btn--icon-only -circle -size-sm o-yap-search-composed__condition__content__footer__remove\"\n                *ngIf=\"masterId !== cond.id\"\n                (click)=\"onDeleteNestedCondition(cond.id)\"\n              >\n                <yap-icon iconSvg=\"close\" [width]=\"16\" [height]=\"16\"> </yap-icon>\n                <span class=\"u-visually-hidden\">{{ '@yap.search.composed.remove' | i18n }}</span>\n              </button>\n            </ng-container>\n          </div>\n\n          <ng-template #selectAttribute>\n            <yap-search-select-attribute\n              [id]=\"cond.id\"\n              (selectAttributeChange)=\"onAddAttributeCondition($event, cond.id)\"\n            ></yap-search-select-attribute>\n          </ng-template>\n        </div>\n      </div>\n    </ng-template>\n  </ng-container>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  Attribute,\n  Class,\n  ClassSelectors,\n  Field,\n  FieldSelectors,\n  FieldType,\n  OrderValue,\n  ResultOrder,\n  YapI18nService\n} from '@onepoint-yap/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, withLatestFrom } from 'rxjs/operators';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n  selector: 'yap-search-order',\n  templateUrl: './search-order.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapSearchOrderComponent implements AfterViewInit {\n  @HostBinding('class') class = 'o-yap-search-order-wrapper';\n  @HostBinding('class.is-hover') hover = false;\n  masterId$: Observable<string | null>;\n  monoClassId$: Observable<string | undefined>;\n  classes$: Observable<Class[]>;\n  variableAttributes$: Observable<Attribute[]>;\n  order$: Observable<ResultOrder | undefined>;\n  fields$: Observable<Field[]>;\n  private activated = false;\n\n  @HostListener('mouseover', ['$event'])\n  onMouseOver(evt: any) {\n    evt.stopPropagation();\n    this.hover = true;\n  }\n\n  @HostListener('mouseout', ['$event'])\n  onMouseOut(evt: any) {\n    evt.stopPropagation();\n    this.hover = false;\n  }\n\n  constructor(private store: Store<any>, private translateService: YapI18nService) {\n    this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n    this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n    this.order$ = this.store.select(SearchMonoClassSelectors.order);\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.fields$ = this.store.select(FieldSelectors.fields);\n\n    this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(\n      map(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []),\n      withLatestFrom(this.fields$),\n      map(([attrs, fields]) => attrs.filter((attr) => fields.find((f) => f.id === attr.field)?.type !== FieldType.RAW)),\n      map((attrs) =>\n        attrs.concat({\n          name: this.translateService.instant('@yap.search.composed.orderNone'),\n          id: 'null'\n        } as unknown as Attribute)\n      ),\n      distinctUntilChanged((p, c) => equal(p, c))\n    );\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.activated = true;\n    }, 100);\n  }\n\n  changeProperty(_attribute?: string, asc?: OrderValue) {\n    if (this.activated) {\n      const attribute = _attribute === 'null' ? undefined : _attribute;\n      this.store.dispatch(\n        SearchMonoClassActions.addOrder({ attribute: attribute, asc: asc ?? (attribute ? 'asc' : undefined) })\n      );\n    }\n  }\n}\n","<div class=\"o-yap-search-order\">\n  <yap-select\n    (ngModelChange)=\"changeProperty($event)\"\n    [itemsAsOption]=\"true\"\n    [items]=\"variableAttributes$ | async\"\n    [ngModel]=\"(order$ | async)?.attribute ?? 'null'\"\n    bindLabel=\"name\"\n    bindValue=\"id\"\n    class=\"a-yap-select\"\n  ></yap-select>\n  <yap-toggle\n    *ngIf=\"(order$ | async)?.attribute\"\n    [ngModel]=\"(order$ | async)?.asc === 'asc'\"\n    (ngModelChange)=\"changeProperty(undefined, $event ? 'asc' : 'desc')\"\n    [alwaysActive]=\"true\"\n    dir=\"ltr\"\n  >\n    {{ ((order$ | async)?.asc === 'asc' ? '@yap.search.composed.orderA' : '@yap.search.composed.orderD') | i18n }}\n  </yap-toggle>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassSelectors, ClassState, SearchState } from '@onepoint-yap/dashboard';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { SearchMonoClassActions } from '../../store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../store/search-mono-class.selectors';\n\n@Component({\n  selector: 'yap-search-mono-class',\n  templateUrl: './search-mono-class.component.html'\n})\nexport class YapSearchMonoClassComponent {\n  classes$?: Observable<Array<Class>>;\n  monoClass$?: Observable<Class>;\n  monoClassMasterId$?: Observable<string | null>;\n  monoClassId$: Observable<string | undefined>;\n\n  constructor(private store: Store<SearchState | ClassState>) {\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.monoClassMasterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);\n    this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);\n\n    this.monoClass$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(\n      filter((id): id is string => id !== null),\n      switchMap((id) => this.store.select(ClassSelectors.classById(id))),\n      filter((clazz): clazz is Class => clazz !== null)\n    );\n  }\n\n  onChangeClass(classId: any) {\n    this.store.dispatch(SearchMonoClassActions.addOrder({}));\n    this.monoClassId$\n      .pipe(\n        take(1),\n        filter((monoClassId) => monoClassId !== classId)\n      )\n      .subscribe(() => this.store.dispatch(SearchMonoClassActions.selectMonoClassSearch({ classId })));\n  }\n}\n","<div class=\"o-search-mono-class\">\n  <div class=\"o-search-mono-class__header search-mono__header\">\n    <div class=\"m-form-label-field\">\n      <label class=\"a-label\" for=\"composed_class\">{{ '@yap.search.composed.class' | i18n }}</label>\n      <yap-select\n        [items]=\"classes$ | async\"\n        [itemsAsOption]=\"true\"\n        bindValue=\"id\"\n        [ngModel]=\"monoClassId$ | async\"\n        (ngModelChange)=\"onChangeClass($event)\"\n        [templateLabel]=\"optionTpl\"\n        [templateOption]=\"optionTpl\"\n        class=\"a-yap-select\"\n        id=\"composed_class\"\n      >\n      </yap-select>\n    </div>\n\n    <ng-template #optionTpl let-item=\"item\">\n      <div class=\"o-search-mono-class__header__selected search-class-selected__content\">\n        <ng-container *ngIf=\"item.image; else noImg\">\n          <img\n            alt=\"\"\n            [height]=\"25\"\n            [width]=\"25\"\n            [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n          />\n        </ng-container>\n        <ng-template #noImg>\n          <img\n            alt=\"\"\n            [height]=\"25\"\n            [width]=\"25\"\n            [src]=\"item.id | translateId : { type: 'class', output: 'icon' } | async\"\n          />\n        </ng-template>\n        <span>{{ item.name }}</span>\n      </div>\n    </ng-template>\n  </div>\n\n  <div class=\"o-search-mono-class__content-wrapper search-mono__content\">\n    <div class=\"o-search-mono-class__content search-mono__content__wrapper\">\n      <ng-container *ngIf=\"monoClassMasterId$ | async as conditionId; else noCondition\">\n        <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n          {{ '@yap.search.composed.title' | i18n }}\n        </p>\n        <ng-container *ngIf=\"monoClass$ | async as clazz\">\n          <yap-search-composed [id]=\"conditionId\"></yap-search-composed>\n          <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n            {{ '@yap.search.composed.order' | i18n }}\n          </p>\n          <yap-search-order></yap-search-order>\n        </ng-container>\n      </ng-container>\n    </div>\n    <ng-template #noCondition>{{ '@yap.search.composed.shouldSelectClass' | i18n }}</ng-template>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n  Class,\n  Field,\n  FieldType,\n  MultiClassCondition,\n  MultiClassField,\n  MultiClassFieldSelection,\n  MultiClassSearchPayload,\n  NamedQueryTypes\n} from '@onepoint-yap/dashboard';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchMultiClassService {\n  generateCondition(field?: string, operator?: string): MultiClassCondition {\n    const id = uuidv4();\n    return {\n      id,\n      field,\n      operator: operator ? operator : field ? 'EQUALS' : null,\n      value: field ? '' : null,\n      isDate: false\n    } as MultiClassCondition;\n  }\n\n  getConditionsFromSearchPayload(payload: MultiClassSearchPayload, fields: Field[]): MultiClassCondition[] {\n    return payload.fields.map((item: any) => {\n      const generatedCondition = this.generateCondition(item.field, item.operator);\n      const field = fields.find((field) => field.id === item.field);\n      if (!field) {\n        return generatedCondition;\n      }\n      const pattern = this.getPatternForField(field);\n      return {\n        ...generatedCondition,\n        value: item.value,\n        pattern,\n        isDate: field?.type === FieldType.INSTANT\n      };\n    });\n  }\n\n  buildConditionsToSearchPayload(\n    conditions: MultiClassCondition[],\n    classes: Class[],\n    multiType: 'AND' | 'OR'\n  ): MultiClassSearchPayload {\n    const oClasses = this.getClassesIdsByConditions(conditions, classes);\n    const fields = conditions.map(\n      (c) =>\n        ({\n          field: c.field,\n          operator: c.operator,\n          value: c.value,\n          upperValue: c.upperValue\n        } as MultiClassField)\n    );\n    return {\n      fullSearch: null,\n      type: NamedQueryTypes.MULTI_CLASS,\n      multiType,\n      oClasses,\n      fields: fields.map((f) => {\n        if (f.operator === 'INSIDE' || f.operator === 'OUTSIDE') {\n          return f;\n        }\n        const { upperValue, ...rest } = f;\n        return rest;\n      })\n    };\n  }\n\n  getFieldsAvailable(\n    conditions: MultiClassCondition[],\n    classes: Class[],\n    fields: Field[],\n    excludedCondition?: string\n  ): MultiClassFieldSelection[] {\n    const selectedFields = this.getSelectedFields(conditions, excludedCondition);\n    const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n\n    const classesByFields: { [key: string]: string[] } = {};\n    const availableFields = [\n      ...new Set(\n        availableClasses.reduce((acc: Field[], c: Class) => {\n          const fieldsByClass = c.attributes\n            .map((a) => fields.find((f) => f.id === a.field))\n            .filter((f): f is Field => f !== undefined);\n          fieldsByClass.forEach((f) => {\n            classesByFields[f.id] = classesByFields[f.id] ? [...classesByFields[f.id], c.name] : [c.name];\n          });\n          return [...acc, ...fieldsByClass];\n        }, [])\n      )\n    ];\n\n    return availableFields.map((f) => ({\n      id: f.id,\n      name: f.name,\n      classes: classesByFields[f.id]\n    }));\n  }\n\n  getClassesForField(\n    conditions: MultiClassCondition[],\n    condition: MultiClassCondition | undefined,\n    classes: Class[]\n  ): Class[] {\n    const selectedFields = this.getSelectedFields(conditions);\n    const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n    return condition\n      ? availableClasses.filter((c) => c.attributes.find((a) => a.field === condition.field))\n      : availableClasses;\n  }\n\n  getPatternForField(field: Field): string {\n    const type = field.type;\n    switch (type) {\n      case FieldType.DECIMAL:\n        return '^[+-]?([0-9]*[.])?[0-9]+$';\n      case FieldType.INTEGER:\n      case FieldType.LONG:\n        return '^[+-]?[0-9]+$';\n      case FieldType.STRING:\n      case FieldType.KEYWORD:\n        return '^.+$';\n      case FieldType.INSTANT:\n        return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n      default:\n        return '^.+$';\n    }\n  }\n\n  private getClassesIdsByConditions(conditions: MultiClassCondition[], classes: Class[]): string[] {\n    const selectedFields = this.getSelectedFields(conditions);\n    const availableClasses = this.getClassesIntersectFields(selectedFields, classes);\n    return availableClasses.map((c) => c.id);\n  }\n\n  private getClassesIntersectFields(fields: string[], classes: Class[]): Class[] {\n    return fields?.length > 0\n      ? classes.filter((c) => {\n          const fieldsInClass = c.attributes.map((a) => a.field);\n          const intersect = fields.filter((field) => fieldsInClass.includes(field)).length;\n          return intersect === fields.length;\n        })\n      : classes;\n  }\n\n  private getSelectedFields(conditions: MultiClassCondition[], excludedCondition?: string): string[] {\n    return [\n      ...new Set(conditions.filter((c) => !(c.id === excludedCondition || c.field === undefined)).map((c) => c.field))\n    ];\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  Class,\n  ClassSelectors,\n  Field,\n  FieldSelectors,\n  FieldType,\n  MultiClassCondition,\n  MultiClassFieldSelection\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n  selector: 'yap-multi-class-field-selection',\n  templateUrl: './multi-class-field-selection.component.html'\n})\nexport class MultiClassFieldSelectionComponent {\n  fields$: Observable<Field[]>;\n  classes$: Observable<Class[]>;\n  conditions$: Observable<MultiClassCondition[]>;\n  availableFields$: Observable<MultiClassFieldSelection[]>;\n\n  fieldSearch = '';\n\n  @Input() set conditionId(val: string | undefined) {\n    this._conditionId = val;\n    this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n      map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n      map((fields) => {\n        const uniqueFields = fields.map((field) => ({\n          ...field,\n          classes: [...new Set(field.classes)]\n        }));\n        return uniqueFields;\n      })\n    );\n  }\n\n  get conditionId(): any {\n    return this._conditionId;\n  }\n\n  private _conditionId?: string;\n\n  @Output() closeModal = new EventEmitter();\n  @Output() selectFieldChange = new EventEmitter<string>();\n\n  constructor(private store: Store<any>, private searchMultiClassService: SearchMultiClassService) {\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.fields$ = this.store\n      .select(FieldSelectors.fields)\n      .pipe(map((fields) => fields.filter((field) => field.type !== FieldType.RAW)));\n    this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n    this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(\n      map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)),\n      map((fields) => {\n        const uniqueFields = fields.map((field) => ({\n          ...field,\n          classes: [...new Set(field.classes)]\n        }));\n        return uniqueFields;\n      })\n    );\n  }\n\n  private sortFields(conditions: MultiClassCondition[], classes: Class[], fields: Field[]): MultiClassFieldSelection[] {\n    const availableFields = this.searchMultiClassService.getFieldsAvailable(\n      conditions,\n      classes,\n      fields,\n      this._conditionId\n    );\n    return availableFields.sort((a, b) => a.name.localeCompare(b.name));\n  }\n}\n","<div class=\"o-multi-class-field-selection\" id=\"popin\">\n  <div class=\"o-multi-class-field-selection__header\" data-toggle=\"popin\">\n    <div class=\"o-multi-class-field-selection__header__top\">\n      <div class=\"o-multi-class-field-selection__header__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ '@yap.search.multi.selectField' | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-multi-class-field-selection__header__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.action.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <ng-container *ngIf=\"availableFields$ | async as list\">\n      <ng-container *ngIf=\"list.length > 7\">\n        <div class=\"o-multi-class-field-selection__header__search\">\n          <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"fieldSearch\" placeholder=\"Filtrer\" />\n        </div>\n      </ng-container>\n    </ng-container>\n  </div>\n  <div class=\"o-multi-class-field-selection__legend\">{{ '@yap.search.multi.legend' | i18n }}</div>\n  <ul class=\"o-multi-class-field-selection__fields\">\n    <ng-container *ngFor=\"let field of availableFields$ | async | yapFilter : 'name' : fieldSearch\">\n      <li class=\"o-multi-class-field-selection__fields__select\" (click)=\"selectFieldChange.emit(field.id)\">\n        <button class=\"a-btn -link-like\">\n          {{ field.name }}\n          <span class=\"o-multi-class-field-selection__fields__select__inside\"\n            >{{ '@yap.search.multi.in' | i18n }}\n            <ng-container> {{ field.classes.join(', ') }} </ng-container>\n          </span>\n        </button>\n      </li>\n    </ng-container>\n  </ul>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport {\n  Class,\n  ClassSelectors,\n  ConfigActions,\n  Field,\n  FieldSelectors,\n  FieldType,\n  MultiClassCondition,\n  OPERATOR_OPTIONS,\n  OperatorOption\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, filter, map, Observable, of, switchMap, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\nimport { SearchMultiClassService } from '../../store/search-multi-class.service';\n\n@Component({\n  selector: 'yap-multi-class-condition',\n  templateUrl: './multi-class-condition.component.html'\n})\nexport class MultiClassConditionComponent implements OnInit {\n  @ViewChild('fieldSelectionTpl', { read: TemplateRef }) fieldSelectionTpl!: TemplateRef<any>;\n  condition$: Observable<MultiClassCondition | undefined> = of(undefined);\n  classesLinked$: Observable<Class[]> = of([]);\n  field$: Observable<Field | undefined> = of(undefined);\n  classes$: Observable<Class[]>;\n  conditions$: Observable<MultiClassCondition[]>;\n  notLastCondition$: Observable<boolean>;\n  operators$: Observable<OperatorOption[]> = of([]);\n\n  @Input() set id(val: string) {\n    this._id = val;\n    this.condition$ = this.store.select(SearchMultiClassSelectors.getConditionById(this._id));\n    this.condition$\n      .pipe(\n        filter((c): c is MultiClassCondition => c?.field !== undefined),\n        take(1)\n      )\n      .subscribe((c) => {\n        if (c.isDate && typeof this.form.get('value')?.value !== 'string') {\n          this.form.patchValue({ operator: c.operator, value: { start: c.value, end: c.upperValue } });\n        } else {\n          this.form.patchValue(\n            { operator: c.operator, value: c.value, upperValue: c.upperValue },\n            { emitEvent: false }\n          );\n        }\n\n        this.formValue?.setValidators([Validators.required]);\n        this.formValue?.updateValueAndValidity();\n        if (c.value !== null) {\n          this.form.markAllAsTouched();\n        }\n        this.form.enable({ emitEvent: false });\n      });\n    this.field$ = this.condition$.pipe(\n      filter((c): c is MultiClassCondition => c !== undefined),\n      switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field)))\n    );\n    this.classesLinked$ = combineLatest([this.conditions$, this.condition$, this.classes$]).pipe(\n      map(([conditions, condition, classes]) => this.service.getClassesForField(conditions, condition, classes)),\n      filter((clazz) => (clazz?.length ?? 0) > 0)\n    );\n    this.operators$ = this.condition$.pipe(\n      filter((c): c is MultiClassCondition => c !== undefined),\n      switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field))),\n      filter((f): f is Field => f !== undefined),\n      map((f) => {\n        const type = f.type;\n        if ([FieldType.STRING, FieldType.KEYWORD].includes(type)) {\n          return OPERATOR_OPTIONS.filter((opt) => opt.type === 'string');\n        } else if ([FieldType.DECIMAL, FieldType.INTEGER, FieldType.LONG].includes(type)) {\n          return OPERATOR_OPTIONS.filter((opt) => opt.type === 'number');\n        } else {\n          return OPERATOR_OPTIONS.filter((opt) => opt.type === 'date');\n        }\n      })\n    );\n  }\n\n  private _id?: string;\n  opened = false;\n  private overlayRef?: OverlayRef;\n\n  form = new UntypedFormGroup({\n    operator: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n    value: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),\n    upperValue: new UntypedFormControl({ value: null, disabled: true }, [])\n  });\n\n  get formValue(): AbstractControl | null {\n    return this.form.get('value');\n  }\n\n  constructor(\n    private store: Store<any>,\n    private service: SearchMultiClassService,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef\n  ) {\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n    this.notLastCondition$ = this.conditions$.pipe(map((conditions) => (conditions?.length ?? 0) !== 1));\n  }\n\n  public ngOnInit(): void {\n    this.form.get('operator')?.valueChanges.subscribe((value) => {\n      if (this._id) {\n        this.store.dispatch(SearchMultiClassActions.updateCondition({ conditionId: this._id, key: 'operator', value }));\n      }\n    });\n  }\n\n  onRemoveCondition(condition: MultiClassCondition): void {\n    this.store.dispatch(SearchMultiClassActions.removeCondition({ conditionId: condition.id }));\n  }\n\n  toggleFieldSelection() {\n    this.opened = !this.opened;\n    if (this.opened) {\n      this.openWithTemplate();\n    } else {\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n      this.overlayRef?.dispose();\n    }\n  }\n\n  openWithTemplate() {\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        backdropClass: 'backdrop',\n        positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n        minHeight: '300px',\n        maxHeight: '600px',\n        width: '500px'\n      })\n    );\n    this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n    this.overlayRef.backdropClick().subscribe((_) => this.toggleFieldSelection());\n    this.overlayRef.attach(new TemplatePortal(this.fieldSelectionTpl, this.viewContainerRef));\n  }\n\n  onChangeField(condition: MultiClassCondition, field: string) {\n    if (condition.field !== field) {\n      this.store.dispatch(SearchMultiClassActions.updateConditionField({ conditionId: condition.id, field }));\n    }\n    this.toggleFieldSelection();\n  }\n\n  onCloseModal() {\n    this.toggleFieldSelection();\n  }\n\n  onUpdateValue(condition: MultiClassCondition) {\n    let formValue, formSecondValue;\n    if (condition.isDate && typeof this.form.get('value')?.value !== 'string') {\n      formValue = this.form.get('value')?.value.start;\n      formSecondValue = this.form.get('value')?.value.end;\n    } else {\n      formValue = this.form.get('value')?.value;\n      formSecondValue = this.form.get('upperValue')?.value;\n    }\n\n    if (formValue !== condition.value || formSecondValue !== condition.upperValue) {\n      this.store.dispatch(\n        SearchMultiClassActions.updateCondition({\n          conditionId: condition.id,\n          key: 'value',\n          value: formValue,\n          upperValue: formSecondValue\n        })\n      );\n    }\n  }\n\n  get hasTwoFields() {\n    return this.form.get('operator')?.value === 'INSIDE' || this.form.get('operator')?.value === 'OUTSIDE';\n  }\n}\n","<ng-container *ngIf=\"condition$ | async as condition\">\n  <div class=\"o-multi-class-condition\">\n    <div class=\"o-multi-class-condition__content\">\n      <div class=\"o-multi-class-condition__content__action\">\n        <button\n          type=\"button\"\n          class=\"a-btn a-btn--primary -size-sm -width-full\"\n          aria-label=\"selection button\"\n          (click)=\"toggleFieldSelection()\"\n        >\n          <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n            {{ field.name }}\n          </ng-container>\n          <ng-template #noFieldTpl>{{ '@yap.search.multi.selectField' | i18n }}</ng-template>\n        </button>\n\n        <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n          <yap-icon\n            iconSvg=\"links_line\"\n            [width]=\"15\"\n            [height]=\"15\"\n            style=\"color: black\"\n            [yapTooltip]=\"classesTooltip\"\n            yapTooltipPosition=\"after\"\n          ></yap-icon>\n          <ng-template #classesTooltip>\n            <span>\n              {{ '@yap.search.multi.in' | i18n }}\n              <span *ngFor=\"let clazz of classesLinked; let last = last\">\n                {{ clazz.name }}\n                <ng-container *ngIf=\"!last\">, </ng-container>\n              </span>\n            </span>\n          </ng-template>\n        </ng-container>\n      </div>\n\n      <ng-container [formGroup]=\"form\">\n        <div class=\"m-form-label-field\">\n          <yap-select\n            [items]=\"operators$ | async\"\n            placeholder=\"Opérateur\"\n            formControlName=\"operator\"\n            [itemsAsOption]=\"true\"\n            [labelTranslate]=\"true\"\n            bindValue=\"operator\"\n            bindLabel=\"translation\"\n            class=\"a-yap-select\"\n          ></yap-select>\n        </div>\n        <div class=\"m-form-label-field\">\n          <ng-container *ngIf=\"condition.isDate; else classicInput\">\n            <yap-date-picker\n              formControlName=\"value\"\n              (click)=\"onUpdateValue(condition)\"\n              [rangePicker]=\"hasTwoFields\"\n              [roundSelection]=\"true\"\n              [timePicker]=\"true\"\n            ></yap-date-picker>\n          </ng-container>\n          <ng-template #classicInput>\n            <input\n              type=\"text\"\n              class=\"a-form-field\"\n              [placeholder]=\"\n                (hasTwoFields ? '@yap.search.placeholder.minValue' : '@yap.search.placeholder.search') | i18n\n              \"\n              formControlName=\"value\"\n              (focusout)=\"onUpdateValue(condition)\"\n            />\n            <ng-container *ngIf=\"hasTwoFields\">\n              <input\n                type=\"text\"\n                class=\"a-form-field\"\n                [placeholder]=\"'@yap.search.placeholder.maxValue' | i18n\"\n                formControlName=\"upperValue\"\n                (focusout)=\"onUpdateValue(condition)\"\n              />\n            </ng-container>\n          </ng-template>\n\n          <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n            {{ '@yap.search.multi.requiredError' | i18n }}\n          </label>\n        </div>\n      </ng-container>\n    </div>\n\n    <div class=\"o-multi-class-condition__delete-content\">\n      <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n        <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n          <yap-icon\n            iconSvg=\"delete\"\n            [height]=\"20\"\n            [width]=\"20\"\n            [animation]=\"false\"\n            (click)=\"onRemoveCondition(condition)\"\n          ></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.action.delete' | i18n }}</span>\n        </button>\n      </ng-container>\n    </div>\n    <ng-template #cannotDelete>\n      <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n        <yap-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></yap-icon>\n        <span class=\"u-visually-hidden\">{{ '@yap.action.delete' | i18n }}</span>\n      </button>\n    </ng-template>\n  </div>\n\n  <ng-template #fieldSelectionTpl>\n    <yap-multi-class-field-selection\n      [conditionId]=\"condition.id\"\n      (closeModal)=\"onCloseModal()\"\n      (selectFieldChange)=\"onChangeField(condition, $event)\"\n    ></yap-multi-class-field-selection>\n  </ng-template>\n</ng-container>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MultiClassCondition } from '@onepoint-yap/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { SearchMultiClassActions } from '../../store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../store/search-multi-class.selectors';\n\n@Component({\n  selector: 'yap-search-multi-class',\n  templateUrl: './search-multi-class.component.html'\n})\nexport class YapSearchMultiClassComponent {\n  conditions$: Observable<MultiClassCondition[]>;\n  multiType$: Observable<'AND' | 'OR'>;\n\n  optionsOpen = false;\n\n  constructor(private store: Store<any>) {\n    this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);\n    this.multiType$ = this.store.select(SearchMultiClassSelectors.multiType);\n    this.conditions$.pipe(take(1)).subscribe((conditions) => {\n      if ((conditions?.length ?? 0) === 0) {\n        this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n      }\n    });\n  }\n\n  onAddCondition() {\n    this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());\n  }\n\n  onChangeMultiType(evt: any) {\n    const multiType = evt ? 'OR' : 'AND';\n    this.store.dispatch(SearchMultiClassActions.updateMultiType({ multiType }));\n  }\n}\n","<div class=\"o-search-multi-class\">\n  <div class=\"o-search-multi-class__header\">\n    <h3 class=\"a-h3\">{{ '@yap.search.multi.title' | i18n }}</h3>\n    <div class=\"\" [yapOverlay]=\"optionOverlay\" [(overlayOpen)]=\"optionsOpen\" (click)=\"optionsOpen = !optionsOpen\">\n      <button\n        class=\"a-btn a-btn--icon-text\"\n        [yapTooltip]=\"infoTooltip\"\n        yapTooltipPosition=\"bottom\"\n        aria-describedby=\"infoTooltip_searchMulticlass\"\n      >\n        {{ '@yap.search.multi.options' | i18n }}\n        <yap-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></yap-icon>\n      </button>\n    </div>\n    <ng-template #optionOverlay>\n      <div class=\"o-search-multi-class__options\">\n        <yap-toggle\n          [ngModel]=\"(multiType$ | async) === 'OR'\"\n          [leftword]=\"'@yap.search.type.or' | i18n\"\n          [rightword]=\"'@yap.search.type.and' | i18n\"\n          [alwaysActive]=\"true\"\n          (ngModelChange)=\"onChangeMultiType($event)\"\n          >{{ '@yap.search.multi.multiType' | i18n }}</yap-toggle\n        >\n      </div>\n    </ng-template>\n  </div>\n\n  <div class=\"o-search-multi-class__conditions-wrapper\">\n    <div class=\"o-search-multi-class__conditions\">\n      <ng-container *ngFor=\"let condition of conditions$ | async\">\n        <yap-multi-class-condition [id]=\"condition.id\"></yap-multi-class-condition>\n      </ng-container>\n    </div>\n    <div class=\"o-search-multi-class__add-condition\">\n      <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n        <yap-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></yap-icon>\n        {{ '@yap.search.multi.addCondition' | i18n }}\n      </button>\n    </div>\n  </div>\n</div>\n\n<ng-template #infoTooltip>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchMulticlass\">\n    <span class=\"m-tooltip__text\"> Options supplémentaires </span>\n  </div>\n</ng-template>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  Class,\n  ClassSelectors,\n  ClassState,\n  DashboardActions,\n  DEFAULT_NAMED_QUERY_ID,\n  FullTextSearchPayload,\n  NamedQuery\n} from '@onepoint-yap/dashboard';\nimport { Observable, take } from 'rxjs';\nimport { searchFulltextActions } from '../store/search-fulltext.actions';\n\nexport interface SearchFulltextChange {\n  classes: string[];\n  value: string;\n}\n\n@Component({\n  selector: 'yap-search-fulltext',\n  templateUrl: './search-fulltext.component.html'\n})\nexport class YapSearchFulltextComponent implements OnInit {\n  @ViewChild('searchButton', { read: ElementRef }) searchButton?: ElementRef;\n  @ViewChild('searchTrigger', { read: ElementRef }) searchTrigger!: ElementRef;\n  @ViewChild('searchInput', { read: ElementRef }) searchInputRef!: ElementRef;\n  @ViewChild('searchOverlay', { read: ElementRef }) searchOverlayRef!: ElementRef;\n  @ViewChild('searchClass') searchClass!: ElementRef<HTMLButtonElement>;\n  @ViewChild('chooseClasses') chooseClasses!: ElementRef;\n  selectedClassItem?: Element | null;\n  panelClassesOpen = false;\n  panelSearchOpen = false;\n  searchPanelWidth?: number;\n\n  @Input() mode: 'inline' | 'vertical' = 'inline';\n  @Input() launchButton: boolean = true;\n\n  @Input() set currentEdit(nq: NamedQuery | null | undefined) {\n    if (nq) {\n      const request = nq.request as FullTextSearchPayload;\n      this.search = request.fullSearch?.value;\n      this.classesSelected = request.oClasses ?? [];\n    } else {\n      this.search = '';\n      this.classesSelected = [];\n    }\n    this.searchDisabled = this.search === '';\n    this.emitChange(this.search, this.classesSelected);\n  }\n\n  search = '';\n  isFocused = false;\n  @Output() searchChange = new EventEmitter<SearchFulltextChange>();\n\n  private readonly BOTTOM_POSITION: ConnectedPosition = {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'top'\n  };\n  private readonly TOP_POSITION: ConnectedPosition = {\n    originX: 'start',\n    originY: 'top',\n    overlayX: 'start',\n    overlayY: 'bottom'\n  };\n  positions: ConnectedPosition[] = [this.BOTTOM_POSITION, this.TOP_POSITION];\n\n  widgetSelected?: string;\n\n  classesSelected: string[] = [];\n\n  classes$: Observable<Class[]>;\n  classesSelectedLabel = '@yap.search.fulltext.allClasses';\n  searchDisabled = true;\n  panelBottom: any;\n\n  constructor(private store: Store<ClassState>) {\n    this.classes$ = this.store.select(ClassSelectors.classes);\n  }\n\n  ngOnInit(): void {\n    this.emitChange(this.search, this.classesSelected);\n  }\n  onArrowUp() {\n    const lastElement = this.chooseClasses.nativeElement.lastElementChild;\n    if (this.selectedClassItem?.previousElementSibling) {\n      this.selectedClassItem = this.selectedClassItem?.previousElementSibling;\n    } else {\n      this.selectedClassItem = lastElement;\n    }\n    const focusElement = this.selectedClassItem as HTMLButtonElement;\n    focusElement.focus();\n  }\n\n  onArrowDown() {\n    const firstElement = this.chooseClasses.nativeElement.firstElementChild;\n    if (this.selectedClassItem?.nextElementSibling) {\n      this.selectedClassItem = this.selectedClassItem?.nextElementSibling;\n    } else {\n      this.selectedClassItem = firstElement;\n    }\n    const focusElement = this.selectedClassItem as HTMLButtonElement;\n    focusElement.focus();\n  }\n\n  @HostListener('document:click', ['$event'])\n  clickout(event: any) {\n    if (this.panelSearchOpen) {\n      setTimeout(() => {\n        this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n      }, 10);\n      const clickInput = this.searchInputRef?.nativeElement?.contains(event.target);\n      if (!clickInput) {\n        const clickPanel = this.searchOverlayRef?.nativeElement?.contains(event.target);\n        if (!clickPanel) {\n          this.panelSearchOpen = false;\n        }\n      }\n    }\n  }\n\n  @HostListener('window:keyup.enter', ['$event'])\n  keyEvent(event: KeyboardEvent) {\n    this.chooseClasses?.nativeElement?.firstElementChild.focus();\n    this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;\n    const search = this.search;\n    if ((search ?? '') !== '' && (this.panelSearchOpen || this.isFocused)) {\n      this.searchButton?.nativeElement.click();\n    }\n  }\n  closeFocus() {\n    if (this.panelClassesOpen) {\n      this.panelClassesOpen = false;\n      this.searchClass?.nativeElement?.focus();\n    }\n  }\n\n  onSearch() {\n    this.panelSearchOpen = false;\n    const search = this.search;\n    if ((search ?? '') !== '') {\n      const classes = this.classesSelected;\n      this.store.dispatch(searchFulltextActions.search({ classes, search }));\n      this.store.dispatch(\n        DashboardActions.updateWidgetInPresentation({\n          id: DEFAULT_NAMED_QUERY_ID,\n          widgetType: this.widgetSelected ?? 'table'\n        })\n      );\n    }\n  }\n\n  onChangeSearch(evt: any) {\n    const value = evt?.target?.value ?? '';\n    this.searchDisabled = value === '';\n    this.emitChange(value, this.classesSelected);\n  }\n\n  onClearSearch(evt: any) {\n    this.search = '';\n    this.searchDisabled = true;\n    this.emitChange(this.search, this.classesSelected);\n  }\n\n  onOpenSearchPanel() {\n    this.isFocused = true;\n    this.searchPanelWidth = this.searchInputRef.nativeElement.getBoundingClientRect().width;\n    this.panelSearchOpen = true;\n  }\n\n  onFocusOut() {\n    this.isFocused = false;\n  }\n\n  onSelectWidget(widget: string) {\n    this.widgetSelected = this.widgetSelected === widget ? undefined : widget;\n  }\n\n  onSelectAllClasses() {\n    this.classesSelected = [];\n    this.classesSelectedLabel = '@yap.search.fulltext.allClasses';\n  }\n\n  onSelectClass(clazz: Class) {\n    if (this.classesSelected.indexOf(clazz.id) !== -1) {\n      this.classesSelected = this.classesSelected.filter((c) => clazz.id !== c);\n    } else {\n      this.classesSelected = [...this.classesSelected, clazz.id];\n    }\n\n    this.emitChange(this.search, this.classesSelected);\n\n    if (this.classesSelected?.length === 1) {\n      this.classes$.pipe(take(1)).subscribe((classes) => {\n        this.classesSelectedLabel =\n          classes.find((c) => this.classesSelected[0] === c.id)?.name ?? '@yap.search.fulltext.oneClass';\n      });\n    } else if (this.classesSelected?.length > 1) {\n      this.classesSelectedLabel = '@yap.search.fulltext.manyClasses';\n    } else {\n      this.classesSelectedLabel = '@yap.search.fulltext.allClasses';\n    }\n  }\n\n  private emitChange(value: string, classes: string[]) {\n    const payload = { value, classes };\n    this.searchChange.emit(payload);\n  }\n}\n","<yap-search-css></yap-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n  <div class=\"o-search-fulltext__container\">\n    <button\n      #searchClass\n      type=\"button\"\n      class=\"o-search-fulltext__classes\"\n      [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n      [yapOverlay]=\"classesOverlay\"\n      [(overlayOpen)]=\"panelClassesOpen\"\n      yapOverlayPosition=\"start-top\"\n      [yapOverlaySticky]=\"true\"\n      [yapOverlayNoPadding]=\"true\"\n      (click)=\"panelClassesOpen = true\"\n    >\n      <span\n        class=\"o-search-fulltext__classes__content\"\n        [yapTooltip]=\"infoTooltip\"\n        yapTooltipPosition=\"bottom\"\n        aria-describedby=\"infoTooltip_searchfulltext\"\n      >\n        <yap-icon\n          [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n          [height]=\"20\"\n          [width]=\"20\"\n          [animation]=\"false\"\n        ></yap-icon>\n        <span class=\"o-search-fulltext__classes__content__label\" *ngIf=\"mode === 'inline'\">\n          {{ classesSelectedLabel | i18n : { nb: classesSelected.length } }}\n        </span>\n      </span>\n\n      <span class=\"o-search-fulltext__classes__arrow\">\n        <yap-icon\n          iconSvg=\"fleche_bas\"\n          [width]=\"17\"\n          [height]=\"17\"\n          [animation]=\"false\"\n          class=\"o-search-fulltext__classes__arrow__icon\"\n          [class.is-open]=\"panelClassesOpen\"\n        ></yap-icon>\n      </span>\n    </button>\n\n    <yap-choose-widget\n      [mode]=\"'input'\"\n      [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n      [panelOpen]=\"panelSearchOpen\"\n      [width]=\"searchPanelWidth ?? 200\"\n      (selected)=\"onSelectWidget($event)\"\n    >\n      <input\n        #searchInput\n        [(ngModel)]=\"search\"\n        (input)=\"onChangeSearch($event)\"\n        (focusin)=\"onOpenSearchPanel()\"\n        (focusout)=\"onFocusOut()\"\n      />\n      <div\n        *ngIf=\"!searchDisabled\"\n        class=\"o-search-fulltext__input__clear\"\n        [yapTooltip]=\"infoTooltipClose\"\n        yapTooltipPosition=\"bottom\"\n        aria-describedby=\"infoTooltipClose_searchfulltext\"\n      >\n        <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n          <yap-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></yap-icon>\n          <span class=\"u-visually-hidden\">Effacer la saisie</span>\n        </div>\n      </div>\n    </yap-choose-widget>\n  </div>\n\n  <button\n    #searchButton\n    class=\"a-btn a-btn--primary\"\n    (click)=\"onSearch()\"\n    [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n    [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n    [disabled]=\"searchDisabled\"\n    *ngIf=\"launchButton\"\n    [yapTooltip]=\"infoTooltipSearch\"\n    yapTooltipPosition=\"bottom\"\n    aria-describedby=\"infoTooltipSearch_searchfulltext\"\n  >\n    <yap-icon iconSvg=\"search-line\" [animation]=\"false\"></yap-icon>\n    <span *ngIf=\"mode === 'vertical'\">{{ '@yap.search.fulltext.search' | i18n }}</span>\n    <span class=\"u-visually-hidden\">Lancer la recherche</span>\n  </button>\n</div>\n\n<ng-template #classesOverlay>\n  <div\n    class=\"o-search-fulltext__classes-overlay\"\n    #chooseClasses\n    (keydown.escape)=\"closeFocus()\"\n    (keydown.arrowDown)=\"onArrowDown()\"\n    (keydown.arrowUp)=\"onArrowUp()\"\n  >\n    <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n      <yap-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></yap-icon>\n      <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n        '@yap.search.fulltext.allClasses' | i18n\n      }}</span>\n    </button>\n    <ng-container *ngFor=\"let clazz of classes$ | async; let last = last\">\n      <button\n        type=\"button\"\n        class=\"o-search-fulltext__classes-overlay__item\"\n        (click)=\"onSelectClass(clazz)\"\n        [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n        (keydown.tab)=\"last ? closeFocus() : null\"\n      >\n        <img\n          alt=\"class\"\n          [height]=\"20\"\n          [width]=\"20\"\n          [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n        />\n        <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n      </button>\n    </ng-container>\n  </div>\n</ng-template>\n\n<ng-template #infoTooltip>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchfulltext\">\n    <span class=\"m-tooltip__text\"> Sélectionner la classe </span>\n  </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipSearch_searchfulltext\">\n    <span class=\"m-tooltip__text\"> Lancer la recherche </span>\n  </div>\n</ng-template>\n\n<ng-template #infoTooltipClose>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipClose_searchfulltext\">\n    <span class=\"m-tooltip__text\"> Effacer la saisie </span>\n  </div>\n</ng-template>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { NamedQuery, NamedQueryTypes, NamedQueryUtils, YapDialogService } from '@onepoint-yap/dashboard';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { YapSaveQueryComponent } from '../save-query/save-query.component';\n\n@Component({\n  selector: 'yap-save-query-button',\n  templateUrl: './save-query-button.component.html'\n})\nexport class YapSaveQueryButtonComponent implements OnChanges {\n  @Input() editInProgress: boolean | null = false;\n  @Input() currentEdit?: NamedQuery | null;\n  @Input() currentEditType?: NamedQueryTypes | null;\n  @Input() fulltextValid: boolean | null = false;\n  @Input() multiValid: boolean | null = false;\n  @Input() monoValid: boolean | null = false;\n  @Input() isNotFulltext = false;\n  @Input() isMonoSearch = false;\n  @Input() fulltextSearch?: SearchFulltextChange;\n  @Input() saveDisabled = true;\n\n  constructor(private yapDialog: YapDialogService) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const isEditFulltextValid =\n      this.editInProgress && this.currentEditType === NamedQueryTypes.FULL_TEXT && this.fulltextValid;\n    const isEditMonoValid =\n      this.editInProgress && this.currentEditType === NamedQueryTypes.MONO_CLASS && this.monoValid;\n    const isEditMultiValid =\n      this.editInProgress && this.currentEditType === NamedQueryTypes.MULTI_CLASS && this.multiValid;\n    const isCreateFulltextValid = !this.editInProgress && !this.isNotFulltext && this.fulltextValid;\n    const isCreateMonoValid = !this.editInProgress && this.isNotFulltext && this.isMonoSearch && this.monoValid;\n    const isCreateMultiValid = !this.editInProgress && this.isNotFulltext && !this.isMonoSearch && this.multiValid;\n    this.saveDisabled =\n      //test pour rendre inactive la sauvegarde via l'edition\n      //!isEditFulltextValid &&\n      //!isEditMonoValid &&\n      //!isEditMultiValid &&\n      !isCreateFulltextValid && !isCreateMonoValid && !isCreateMultiValid;\n  }\n\n  openSaveQuery() {\n    if (!this.saveDisabled) {\n      const save = true;\n      const nq = this.currentEdit;\n      const type = nq\n        ? NamedQueryUtils.getTypeFromPayload(nq.request)\n        : this.getNQType(this.isNotFulltext, this.isMonoSearch);\n      const data = type === NamedQueryTypes.FULL_TEXT ? { save, type, payload: this.fulltextSearch } : { save, type };\n      this.yapDialog.open(YapSaveQueryComponent, { data });\n    }\n  }\n\n  private getNQType(isNotFulltext: boolean, isMono: boolean): NamedQueryTypes {\n    return isNotFulltext\n      ? isMono\n        ? NamedQueryTypes.MONO_CLASS\n        : NamedQueryTypes.MULTI_CLASS\n      : NamedQueryTypes.FULL_TEXT;\n  }\n}\n","<button class=\"a-btn a-btn--icon-text save-query-button\" (click)=\"openSaveQuery()\" [disabled]=\"saveDisabled\">\n  <yap-icon iconSvg=\"save-line\"></yap-icon>\n  <span>{{ '@yap.search.namedQuery.open' | i18n }}</span>\n</button>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  DashboardActions,\n  DataSourceActions,\n  DataSourceSelectors,\n  DEFAULT_NAMED_QUERY_ID,\n  NamedQuery,\n  NamedQueryTypes,\n  NamedQueryUtils,\n  SearchActions,\n  SubscriptionnerDirective\n} from '@onepoint-yap/dashboard';\nimport { Observable } from 'rxjs';\nimport { SearchFulltextChange } from '../../search-fulltext/search-fulltext/search-fulltext.component';\nimport { searchFulltextActions } from '../../search-fulltext/store/search-fulltext.actions';\nimport { SearchMonoClassActions } from '../../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassSelectors } from '../../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n  selector: 'yap-edit-named-query',\n  templateUrl: './edit-named-query.component.html'\n})\nexport class EditNamedQueryComponent extends SubscriptionnerDirective {\n  @HostBinding('class') class = 'o-edit-named-query-wrapper';\n  currentEditType$: Observable<NamedQueryTypes | undefined>;\n  currentEdit$: Observable<NamedQuery | undefined>;\n  searchMultiClassValid$: Observable<boolean>;\n  searchMonoClassValid$: Observable<boolean>;\n  readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n  readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n  readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n  isSearchCriteria = false;\n  isSearchParams = false;\n  @Input() fromWidget?: { windowsIndex: number; widgetIndex: number };\n  DEFAULT_NAMED_QUERY_ID = DEFAULT_NAMED_QUERY_ID;\n\n  @Output() searchFulltextChange = new EventEmitter<SearchFulltextChange>();\n  @Output() cancelled = new EventEmitter<void>();\n  @Output() searched = new EventEmitter<void>();\n  currentEdit?: NamedQuery;\n  private fullTextPayload: SearchFulltextChange = { value: '', classes: [] };\n  widgetType: string = 'table';\n\n  constructor(private store: Store) {\n    super();\n    this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n    this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n    this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid);\n    this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid);\n    this.subscriptions.add(this.currentEdit$.subscribe((currentEdit) => (this.currentEdit = currentEdit)));\n  }\n\n  cancel() {\n    this.isSearchCriteria = false;\n    this.isSearchParams = false;\n    this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    this.cancelled.emit();\n  }\n\n  search() {\n    // Save as current name\n    const descriptionQuery = {\n      name: this.currentEdit?.name ?? '',\n      description: this.currentEdit?.description,\n      visibility: this.currentEdit?.visibility ?? undefined\n    };\n    switch (NamedQueryUtils.getTypeFromPayload(this.currentEdit?.request)) {\n      case NamedQueryTypes.FULL_TEXT:\n        this.store.dispatch(\n          searchFulltextActions.save({\n            descriptionQuery,\n            id: this.currentEdit?.id,\n            classes: this.fullTextPayload.classes,\n            search: this.fullTextPayload.value\n          })\n        );\n        break;\n      case NamedQueryTypes.MONO_CLASS:\n        this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n        break;\n      case NamedQueryTypes.MULTI_CLASS:\n        this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));\n        break;\n    }\n    if (this.currentEdit?.id !== DEFAULT_NAMED_QUERY_ID) {\n      this.store.dispatch(SearchActions.getDatasourceItems({ id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID }));\n    }\n    this.store.dispatch(\n      DashboardActions.updateWidgetInPresentation({\n        id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,\n        widgetType: this.widgetType\n      })\n    );\n    this.searched.emit();\n  }\n\n  onSearchFulltextChange(evt: SearchFulltextChange) {\n    this.searchFulltextChange.emit(evt);\n    this.fullTextPayload = evt;\n  }\n\n  select($event: string) {\n    this.widgetType = $event;\n  }\n}\n","<div class=\"o-edit-named-query\">\n  <ng-container *ngIf=\"currentEditType$ | async as currentEditType\">\n    <div class=\"o-edit-named-query__content\">\n      <ng-container [ngSwitch]=\"currentEditType\">\n        <ng-container *ngSwitchCase=\"FULL_TEXT\">\n          <yap-search-fulltext\n            mode=\"vertical\"\n            [launchButton]=\"false\"\n            (searchChange)=\"onSearchFulltextChange($event)\"\n            [currentEdit]=\"currentEdit$ | async\"\n          ></yap-search-fulltext>\n        </ng-container>\n        <ng-container *ngSwitchCase=\"MONO_CLASS\">\n          <yap-search-mono-class></yap-search-mono-class>\n        </ng-container>\n        <ng-container *ngSwitchCase=\"MULTI_CLASS\">\n          <yap-search-multi-class></yap-search-multi-class>\n        </ng-container>\n      </ng-container>\n    </div>\n    <div class=\"o-edit-named-query__buttons\">\n      <ng-container *ngIf=\"currentEditType !== FULL_TEXT\">\n        <yap-choose-widget (selected)=\"select($event)\"></yap-choose-widget>\n      </ng-container>\n      <div class=\"m-btn-group\">\n        <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"cancel()\" *ngIf=\"currentEditType === FULL_TEXT\">\n          {{ '@yap.search.button.cancel' | i18n }}\n        </button>\n        <button\n          [disabled]=\"\n            (currentEditType === MULTI_CLASS && !(searchMultiClassValid$ | async)) ||\n            (currentEditType === MONO_CLASS && !(searchMonoClassValid$ | async)) ||\n            !(currentEdit$ | async)?.owner\n          \"\n          type=\"button\"\n          class=\"a-btn a-btn--primary a-btn--icon-text\"\n          (click)=\"search()\"\n        >\n          <yap-icon iconSvg=\"search-line\"></yap-icon>\n          {{\n            ((currentEdit$ | async)?.id === DEFAULT_NAMED_QUERY_ID\n              ? '@yap.search.button.search'\n              : '@yap.search.button.update'\n            ) | i18n\n          }}\n        </button>\n      </div>\n    </div>\n  </ng-container>\n</div>\n","import { Component, HostBinding, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  ClassActions,\n  ClassState,\n  DashboardActions,\n  DataSourceActions,\n  DataSourceSelectors,\n  DataSourceState,\n  DEFAULT_NAMED_QUERY_ID,\n  FieldActions,\n  FieldState,\n  NamedQuery,\n  NamedQueryTypes\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, map, Observable, of, Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { v4 } from 'uuid';\nimport { SearchFulltextChange } from '../search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchMonoClassActions } from '../search-mono-class/store/search-mono-class.actions';\nimport { SearchMonoClassSelectors } from '../search-mono-class/store/search-mono-class.selectors';\nimport { SearchMultiClassActions } from '../search-multi-class/store/search-multi-class.actions';\nimport { SearchMultiClassState } from '../search-multi-class/store/search-multi-class.reducer';\nimport { SearchMultiClassSelectors } from '../search-multi-class/store/search-multi-class.selectors';\n\n@Component({\n  selector: 'yap-search-tools',\n  templateUrl: './search-tools.component.html'\n})\nexport class YapSearchToolsComponent implements OnDestroy {\n  @HostBinding('class.o-yap-search-tools-wrapper') class = true;\n  @HostBinding('class.is-close') searchToolsClose = false;\n\n  searchMultiClassValid$: Observable<boolean>;\n  searchMonoClassValid$: Observable<boolean>;\n  loading$: Observable<boolean>;\n  isRename$: Observable<boolean>;\n\n  isSearchCriteria = false;\n  isSearchMono = false;\n  isSearchFullText = false;\n  isSearchFulltextValid = false;\n  isMoreList = false;\n  widgetType: string = 'table';\n\n  get isNewMono(): boolean {\n    return this.isSearchCriteria && this.isSearchMono;\n  }\n\n  get isEditMono$(): Observable<boolean> {\n    return combineLatest([this.currentEditType$, this.isRename$]).pipe(\n      map(([type, isRename]) => type === NamedQueryTypes.MONO_CLASS && !isRename)\n    );\n  }\n\n  getIcon = {\n    caracteristique: 'default',\n    lieu: 'default',\n    meteo: 'default',\n    usager: 'profil',\n    valeur_fonciere: 'default',\n    vehicule: 'car'\n  } as { [clazz: string]: string };\n\n  items: Observable<any[] | null> = of([\n    { id: 1, name: '1' },\n    { id: 2, name: '2' },\n    { id: 3, name: '3' },\n    { id: 4, name: '4' }\n  ]);\n  editInProgress$: Observable<boolean>;\n  currentEdit$: Observable<NamedQuery | undefined>;\n  currentEditType$: Observable<NamedQueryTypes | undefined>;\n  readonly FULL_TEXT = NamedQueryTypes.FULL_TEXT;\n  readonly MONO_CLASS = NamedQueryTypes.MONO_CLASS;\n  readonly MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;\n  searchFulltextTemp?: SearchFulltextChange;\n\n  private sub = new Subscription();\n\n  constructor(private store: Store<DataSourceState | SearchMultiClassState | FieldState | ClassState>) {\n    this.loading$ = this.store.select(DataSourceSelectors.selectFeature).pipe(map((state) => state.isLoading));\n    this.store.dispatch(DataSourceActions.load());\n    this.store.dispatch(FieldActions.load());\n    this.store.dispatch(ClassActions.load());\n    this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid).pipe(delay(100));\n    this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid).pipe(delay(100));\n    this.editInProgress$ = this.store.select(DataSourceSelectors.editInProgress);\n    this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);\n    this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);\n    this.isRename$ = this.store.select(DataSourceSelectors.isRename);\n    this.sub.add(\n      combineLatest([this.editInProgress$, this.isRename$]).subscribe(([editInProgress, isRename]) => {\n        if (editInProgress && this.searchToolsClose && !isRename) {\n          this.onChangePanel();\n        }\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.sub.unsubscribe();\n  }\n\n  onSearchCriteria() {\n    this.isSearchCriteria = true;\n    this.store.dispatch(\n      DataSourceActions.namedQuery.openEdit({\n        currentEdit: {\n          sourceType: 'namedQuery',\n          id: v4(),\n          request: { type: NamedQueryTypes.MULTI_CLASS, fullSearch: null, fields: [], multiType: 'AND' },\n          name: ''\n        }\n      })\n    );\n  }\n\n  onSearchTools() {\n    this.isSearchCriteria = false;\n    this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    this.resizeScreen();\n  }\n\n  back() {\n    this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    this.resizeScreen();\n  }\n\n  onMonoSearch() {\n    this.isSearchMono = !this.isSearchMono;\n    this.resizeScreen();\n  }\n\n  onChangeListView(isMoreList: boolean) {\n    this.isMoreList = !isMoreList;\n  }\n\n  onSearchFulltextChange(payload: SearchFulltextChange) {\n    setTimeout(() => {\n      this.isSearchFulltextValid = payload.value !== '';\n      this.searchFulltextTemp = payload;\n    }, 10);\n  }\n\n  onSearch() {\n    if (this.isSearchMono) {\n      this.store.dispatch(SearchMonoClassActions.search());\n    } else {\n      this.store.dispatch(SearchMultiClassActions.search());\n    }\n    this.store.dispatch(\n      DashboardActions.updateWidgetInPresentation({\n        id: DEFAULT_NAMED_QUERY_ID,\n        widgetType: this.widgetType\n      })\n    );\n  }\n\n  onChangePanel() {\n    this.searchToolsClose = !this.searchToolsClose;\n    this.resizeScreen();\n  }\n\n  private resizeScreen() {\n    setTimeout(() => window?.dispatchEvent(new Event('resize')), 400);\n  }\n\n  selectWidget($event: string) {\n    this.widgetType = $event;\n  }\n\n  reset() {\n    this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    this.isSearchCriteria = true;\n  }\n\n  updateVisibility($event: any) {\n    this.store.dispatch(DataSourceActions.namedQuery.updateCurrentEdit({ currentEdit: { visibility: $event } }));\n  }\n}\n","<div\n  class=\"o-yap-search-tools\"\n  [class.is-close]=\"searchToolsClose\"\n  [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n  <button\n    type=\"button\"\n    class=\"a-btn a-btn--icon-text -back\"\n    (click)=\"onSearchTools()\"\n    aria-pressed=\"false\"\n    *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n    [yapTooltip]=\"infoTooltipBack\"\n    yapTooltipPosition=\"bottom\"\n    aria-describedby=\"infoTooltipBack_searchTools\"\n  >\n    <yap-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></yap-icon>\n    <span>{{ '@yap.search.button.backSearch' | i18n }}</span>\n  </button>\n  <div class=\"o-yap-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n    <button\n      *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n      class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n      (click)=\"reset()\"\n      id=\"btn_reset\"\n    >\n      <yap-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></yap-icon>\n      {{ '@yap.search.button.reset' | i18n }}\n    </button>\n    <ng-container *ngIf=\"editInProgress$ | async\">\n      <yap-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></yap-share>\n    </ng-container>\n    <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n      <yap-edit-named-query\n        (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n        (cancelled)=\"onSearchTools()\"\n      ></yap-edit-named-query>\n    </ng-container>\n    <ng-template #noEdit>\n      <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n        <yap-toggle\n          class=\"o-yap-search-tools__content__toggle\"\n          [ngModel]=\"isSearchMono\"\n          (ngModelChange)=\"onMonoSearch()\"\n          [alwaysActive]=\"true\"\n          mode=\"action\"\n        >\n          {{ (isSearchMono ? '@yap.search.button.mono' : '@yap.search.button.multi') | i18n }}\n        </yap-toggle>\n        <div class=\"o-yap-search-tools__content__full\">\n          <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n            <yap-search-mono-class></yap-search-mono-class>\n          </ng-container>\n          <ng-template #isMultiSearch>\n            <yap-search-multi-class></yap-search-multi-class>\n          </ng-template>\n        </div>\n\n        <div class=\"o-yap-search-tools__content__button-search\">\n          <ng-container *ngIf=\"isSearchCriteria\">\n            <yap-choose-widget (selected)=\"selectWidget($event)\"></yap-choose-widget>\n          </ng-container>\n          <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n            {{ '@yap.search.button.cancel' | i18n }}\n          </button>\n          <button\n            [disabled]=\"\n              (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n            \"\n            class=\"a-btn a-btn--primary\"\n            (click)=\"onSearch()\"\n          >\n            <yap-icon iconSvg=\"search-line\"></yap-icon>\n            {{ '@yap.search.button.search' | i18n }}\n          </button>\n        </div>\n      </ng-container>\n    </ng-template>\n\n    <ng-template #noSearch>\n      <div class=\"o-yap-search-tools__content__full\">\n        <yap-search-home\n          class=\"o-yap-search-home\"\n          [isMoreList]=\"isMoreList\"\n          [searchFulltextTpl]=\"searchFulltextTpl\"\n          (changeListView)=\"onChangeListView($event)\"\n          (changeSearchCriteria)=\"onSearchCriteria()\"\n        ></yap-search-home>\n        <ng-template #searchFulltextTpl>\n          <yap-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></yap-search-fulltext>\n        </ng-template>\n      </div>\n    </ng-template>\n  </div>\n  <div class=\"o-yap-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n    <yap-save-query-button\n      [editInProgress]=\"editInProgress$ | async\"\n      [currentEdit]=\"currentEdit$ | async\"\n      [currentEditType]=\"currentEditType$ | async\"\n      [fulltextValid]=\"isSearchFulltextValid\"\n      [multiValid]=\"searchMultiClassValid$ | async\"\n      [monoValid]=\"searchMonoClassValid$ | async\"\n      [isNotFulltext]=\"isSearchCriteria\"\n      [isMonoSearch]=\"isSearchMono\"\n      [fulltextSearch]=\"searchFulltextTemp\"\n    ></yap-save-query-button>\n  </div>\n</div>\n\n<ng-template #infoTooltipBack>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipBack_searchTools\">\n    <span class=\"m-tooltip__text\"> Retour à la liste des recherches </span>\n  </div>\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  ConfigActions,\n  DataSourceActions,\n  DataSourceSelectors,\n  SubscriptionnerDirective\n} from '@onepoint-yap/dashboard';\n\n@Component({\n  selector: 'yap-edit-named-query-modal',\n  templateUrl: './edit-named-query-modal.component.html'\n})\nexport class EditNamedQueryModalComponent extends SubscriptionnerDirective {\n  private overlayRef?: OverlayRef;\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n  constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n    super();\n\n    this.subscriptions.add(\n      this.store.select(DataSourceSelectors.editInProgress).subscribe((inProgress) => {\n        if (inProgress && !this.overlayRef && !this.isPanelAlreadyPresent) {\n          // open modal\n          this.overlayRef = this.overlay.create(\n            new OverlayConfig({\n              hasBackdrop: true,\n              panelClass: ['o-edit-named-query-modal'],\n              backdropClass: 'backdrop'\n            })\n          );\n          this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n          this.overlayRef.backdropClick().subscribe((_) => {\n            this.close();\n          });\n          this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n        }\n        if (!inProgress) {\n          this.close();\n        }\n      })\n    );\n  }\n\n  close() {\n    this.overlayRef?.dispose();\n    this.overlayRef = undefined;\n    this.store.dispatch(DataSourceActions.namedQuery.stopEdit());\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n  }\n\n  get isPanelAlreadyPresent() {\n    return (\n      document.getElementsByTagName('yap-search-home').length +\n        document.getElementsByTagName('yap-search-tools').length >\n      0\n    );\n  }\n}\n","<ng-template #template>\n  <div>\n    <yap-search-tools></yap-search-tools>\n  </div>\n</ng-template>\n","export const enTranslations = {\n  '@yap': {\n    search: {\n      title: 'Search',\n      button: {\n        update: 'Save',\n        search: 'Search',\n        cancel: 'Cancel',\n        reset: 'Reset',\n        backSearch: 'Back to searches list',\n        mono: 'Class search',\n        multi: 'Business field search'\n      },\n      home: {\n        or: 'or',\n        title: 'My search',\n        ssTitle: 'New search',\n        searchByCriteria: 'search by criteria'\n      },\n      attribute: {\n        title: 'Attribute: ',\n        remove: 'Remove attribute filter'\n      },\n      type: {\n        and: 'AND',\n        or: 'OR'\n      },\n      composed: {\n        class: 'Class',\n        title: 'Include filters',\n        order: 'Add sort',\n        orderA: 'Ascending',\n        orderD: 'Descending',\n        orderNone: 'None',\n        shouldSelectClass: 'Select a class',\n        changeClassWarning: 'Change class will remove all conditions',\n        addCondition: 'Add condition',\n        addGroup: 'Add nested group',\n        removeGroup: 'Remove nested group'\n      },\n      operator: {\n        contains: 'Contain',\n        startWith: 'Start with',\n        endWith: 'End with',\n        notEqualsString: 'Different from',\n        equalsString: 'Match',\n        equalsNumber: 'Equal to',\n        greaterThanNumber: 'Greater than',\n        lowerThanNumber: 'Lower than',\n        innerBoundsNumber: 'Between',\n        outerBoundsNumber: 'Outside',\n        greaterThanDate: 'After',\n        lowerThanDate: 'Before',\n        innerBoundsDate: 'Between',\n        outerBoundsDate: 'Outside'\n      },\n      placeholder: {\n        search: 'Enter value...',\n        minValue: 'Min value...',\n        maxValue: 'Max value...'\n      },\n      namedQuery: {\n        emptyNamedQuery: 'No saved search',\n        open: 'Save search...',\n        title: 'Give a name to this search',\n        saveTitle: 'Save search',\n        renameTitle: 'Rename search',\n        rename: 'Rename',\n        name: 'Name',\n        description: 'Description',\n        favorite: 'Pin',\n        noFavorite: 'Detach',\n        display: 'Display',\n        refreshData: 'Refresh',\n        noSpot: 'Unused search',\n        color: 'Data color',\n        spot: 'Spot',\n        spotTitle: 'This query is used {{length}} times:',\n        use: 'View n°{{windowIndex}}',\n        delete: 'Delete',\n        edit: 'Edit',\n        seeLess: 'see less',\n        seeMore: 'see More',\n        explore: 'Exploring set',\n        type: {\n          map: 'Map',\n          table: 'Table',\n          chart: 'Chart',\n          graph: 'Network Relation'\n        },\n        alreadyEditing: 'A search is already being edited.',\n        refresh: {\n          title: 'Automatic refresh',\n          0: 'Inactive',\n          10: '10 seconds',\n          30: '30 seconds',\n          60: '1 minute'\n        }\n      },\n      mono: {\n        title: 'Search advanded criteria'\n      },\n      fulltext: {\n        allClasses: 'All classes',\n        oneClass: 'One selected class',\n        manyClasses: '{{nb}} selected classes',\n        search: 'Search'\n      },\n      multi: {\n        title: 'Add criterias',\n        addCondition: 'Add one criteria',\n        options: 'Options',\n        multiType: 'Kind of association',\n        search: 'Search',\n        requiredError: 'Value is missing',\n        patternError: 'Format is incorrect',\n        selectField: 'Select the criteria',\n        legend: 'Criteria / classes using it',\n        in: 'in'\n      },\n      params: {\n        title: 'Search parameters',\n        button: 'Save settings',\n        namedQuery: {\n          title: 'Searches',\n          description: 'This part presents default parameters when creating a new search, like color or refresh rate.'\n        }\n      }\n    }\n  }\n};\n","export const frTranslations = {\n  '@yap': {\n    search: {\n      title: 'Recherche',\n      button: {\n        update: 'Enregistrer',\n        search: 'Rechercher',\n        cancel: 'Annuler',\n        reset: 'Remise à zéro',\n        backSearch: 'Retour à la liste des recherches',\n        mono: 'Recherche par classe',\n        multi: 'Recherche par champs métier'\n      },\n      home: {\n        or: 'ou',\n        title: 'Mes recherches',\n        ssTitle: 'Nouvelle recherche',\n        searchByCriteria: 'Recherche par critères'\n      },\n      attribute: {\n        title: 'Attribut : ',\n        remove: 'Retirer le filtre'\n      },\n      type: {\n        and: 'ET',\n        or: 'OU'\n      },\n      composed: {\n        class: 'Classe',\n        title: 'Incluez des filtres',\n        order: 'Ajouter un tri',\n        orderA: 'Croissant',\n        orderD: 'Décroissant',\n        orderNone: 'Aucun tri',\n        shouldSelectClass: 'Choisissez une classe',\n        changeClassWarning: 'Changer de classe supprimera toutes les conditions',\n        addCondition: 'Ajouter une condition',\n        addGroup: 'Ajouter un sous-groupe',\n        removeGroup: 'Supprimer un sous-groupe'\n      },\n      operator: {\n        contains: 'Contient',\n        startWith: 'Commence par',\n        endWith: 'Fini par',\n        notEqualsString: 'Différent de',\n        equalsString: 'Exactement',\n        equalsNumber: 'Egal',\n        greaterThanNumber: 'Supérieur à',\n        lowerThanNumber: 'Inférieur à',\n        innerBoundsNumber: 'Compris entre',\n        outerBoundsNumber: \"A l'extérieur de\",\n        greaterThanDate: 'Après',\n        lowerThanDate: 'Avant',\n        innerBoundsDate: 'Entre deux dates',\n        outerBoundsDate: \"A l'extérieur d'une période\"\n      },\n      placeholder: {\n        search: 'Entrer la valeur ...',\n        minValue: 'Valeur min ...',\n        maxValue: 'Valeur max ...'\n      },\n      namedQuery: {\n        emptyNamedQuery: 'Aucune recherche enregistrée',\n        open: 'Enregistrer la recherche sous...',\n        title: 'Nommez cette recherche',\n        saveTitle: 'Sauvegarder cette recherche',\n        renameTitle: 'Renommer cette recherche',\n        rename: 'Renommer',\n        name: 'Nom',\n        description: 'Description',\n        favorite: 'Epingler',\n        noFavorite: 'Détacher',\n        display: 'Afficher',\n        refreshData: 'Actualiser',\n        noSpot: 'Recherche non utilisée',\n        color: 'Couleur jeu de données',\n        spot: 'Repérer',\n        spotTitle: 'La recherche est utilisée à {{length}} endroits:',\n        use: 'Vue n°{{windowIndex}}',\n        delete: 'Supprimer',\n        edit: 'Editer',\n        seeLess: 'voir moins',\n        seeMore: 'voir plus',\n        explore: 'Recherche exploratoire',\n        type: {\n          map: 'Carte',\n          table: 'Tableau',\n          chart: 'Graphique',\n          graph: 'Relations'\n        },\n        alreadyEditing: 'Vous avez déjà une édition de recherche en cours.',\n        refresh: {\n          title: 'Rafraichissement automatique',\n          0: 'Inactif',\n          10: '10 secondes',\n          30: '30 secondes',\n          60: '1 minute'\n        }\n      },\n      mono: {\n        title: 'Recherche critères avancés'\n      },\n      fulltext: {\n        allClasses: 'Toutes les classes',\n        oneClass: 'Une classe sélectionnée',\n        manyClasses: '{{nb}} classes sélectionnées',\n        search: 'Lancer la recherche'\n      },\n      multi: {\n        title: 'Ajouter des critères',\n        addCondition: 'Ajouter un critère',\n        options: 'Options',\n        multiType: 'Associer les critères',\n        search: 'Rechercher',\n        requiredError: 'La valeur est manquante',\n        patternError: 'Le format est incorrect',\n        selectField: 'Sélectionner un critère',\n        legend: 'Critère / classes utilisant ce critère',\n        in: 'dans'\n      },\n      params: {\n        title: 'Paramètres de recherche',\n        button: 'Enregistrer les paramètres',\n        namedQuery: {\n          title: 'Recherches',\n          description:\n            \"Cette partie regroupe les paramètres par défaut d'une nouvelle recherche(la couleur à utiliser, ...)\"\n        }\n      }\n    }\n  }\n};\n","import { Injectable } from '@angular/core';\nimport { FullTextSearchPayload, NamedQueryTypes } from '@onepoint-yap/dashboard';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchFulltextService {\n  buildPayload(value: string, oClasses: string[]): FullTextSearchPayload {\n    return {\n      type: NamedQueryTypes.MULTI_CLASS,\n      multiType: 'AND',\n      oClasses,\n      fullSearch: {\n        value\n      }\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { DataSourceActions, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, SearchActions } from '@onepoint-yap/dashboard';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { searchFulltextActions } from './search-fulltext.actions';\nimport { SearchFulltextService } from './search-fulltext.service';\n\n@Injectable()\nexport class SearchFulltextEffects {\n  search$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(searchFulltextActions.search, searchFulltextActions.save),\n      withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n      map(([action, currentEdit]) => {\n        const payload = this.searchFulltextService.buildPayload(action.search, action.classes);\n        if (action.type === searchFulltextActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n          return DataSourceActions.namedQuery.post({\n            id: action.id ?? currentEdit?.id,\n            name: action.descriptionQuery.name,\n            description: action.descriptionQuery?.description,\n            visibility: action.descriptionQuery?.visibility,\n            payload,\n            color: currentEdit?.color,\n            favorite: currentEdit?.favorite ?? false,\n            isEdit: !!currentEdit\n          });\n        }\n        return SearchActions.search({ payload });\n      })\n    )\n  );\n\n  constructor(\n    private actions$: Actions,\n    private store: Store<any>,\n    private searchFulltextService: SearchFulltextService\n  ) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n  Attribute,\n  Class,\n  Condition,\n  Field,\n  FieldType,\n  MonoClassConditions,\n  MonoClassSearchPayload,\n  NamedQueryTypes,\n  NormalizedCondition,\n  OrderValue,\n  ResultOrder\n} from '@onepoint-yap/dashboard';\nimport { v4 as uuidV4 } from 'uuid';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SearchMonoClassService {\n  initNormalizedConditionComposed(parentId: string | null): NormalizedCondition {\n    const id = uuidV4();\n    return {\n      id,\n      parentId,\n      type: 'AND'\n    } as NormalizedCondition;\n  }\n\n  initNormalizedConditionAttribute(parentId: string, attributeId: string): NormalizedCondition {\n    if (!attributeId.trim()) {\n      throw new Error('Invalid attribute ID');\n    }\n    const id = uuidV4();\n    return {\n      id,\n      parentId,\n      attribute: attributeId,\n      type: 'ATTRIBUTE',\n      operator: 'EQUALS'\n    } as NormalizedCondition;\n  }\n\n  buildMonoClassSearchPayloadForSearch(\n    oClass: string,\n    masterId: string,\n    monoClassConditions: MonoClassConditions,\n    order: ResultOrder | undefined\n  ): MonoClassSearchPayload {\n    if (!oClass.trim()) {\n      throw new Error('Invalid class ID');\n    }\n    const condition = this.buildConditionFromMonoClassSearchCondition(monoClassConditions, masterId);\n    let sort = undefined as { [key: string]: any } | undefined;\n    if (order) {\n      sort = {\n        attribute: order.attribute,\n        direction: order.asc\n      };\n    }\n    return { type: NamedQueryTypes.MONO_CLASS, ...{ condition }, ...{ sort }, oClass } as MonoClassSearchPayload;\n  }\n\n  private buildConditionFromMonoClassSearchCondition(\n    monoClassConditions: MonoClassConditions,\n    idCondition: string\n  ): Condition {\n    const cond: NormalizedCondition = monoClassConditions.entities[idCondition];\n    const subCond: Condition[] =\n      monoClassConditions.entities[idCondition].composed?.map((id: string) =>\n        this.buildConditionFromMonoClassSearchCondition(monoClassConditions, id)\n      ) ?? [];\n    const condition = {\n      type: cond.type,\n      attribute: cond.attribute,\n      composed: subCond.length > 0 ? subCond : undefined,\n      operator: cond.operator,\n      value: cond.value,\n      upperValue: cond.upperValue\n    };\n    if (condition.operator !== 'INSIDE' && condition.operator !== 'OUTSIDE') {\n      delete condition.upperValue;\n    }\n    return condition;\n  }\n\n  loadNormalizedConditions(\n    cond: Condition,\n    parentId: string,\n    classes: Class[],\n    fields: Field[],\n    masterId?: string,\n    sort?: { attribute: string; direction: string }\n  ): { id: string; conditions: NormalizedCondition[]; sort: ResultOrder | undefined } {\n    let resultSort = undefined as ResultOrder | undefined;\n    if (sort) {\n      resultSort = {\n        attribute: sort.attribute,\n        asc: sort.direction as OrderValue\n      };\n    }\n    if (cond?.type === 'AND' || cond?.type === 'OR') {\n      const id = masterId ?? uuidV4();\n      if (cond?.composed) {\n        const children = cond.composed.map((cond) => this.loadNormalizedConditions(cond, id, classes, fields));\n        const ids = children.map((child) => child.id);\n        const normalizedChildren = children.reduce(\n          (acc, res) => [...acc, ...res.conditions],\n          [] as NormalizedCondition[]\n        );\n        return {\n          id,\n          conditions: [\n            ...normalizedChildren,\n            {\n              id,\n              parentId: parentId ?? null,\n              type: cond.type,\n              composed: ids\n            }\n          ],\n          sort: resultSort\n        };\n      }\n      return {\n        id,\n        conditions: [\n          {\n            id,\n            parentId: parentId ?? null,\n            type: cond.type\n          }\n        ],\n        sort: resultSort\n      };\n    } else {\n      const id = masterId ?? uuidV4();\n      const field = this.getFieldFromAttribute(cond?.attribute, classes, fields);\n      const condition: NormalizedCondition = field\n        ? {\n            id,\n            parentId: parentId ?? null,\n            type: 'ATTRIBUTE',\n            attribute: cond.attribute,\n            operator: cond.operator,\n            value: cond.value,\n            pattern: this.getPatternForField(field),\n            isDate: field.type === FieldType.INSTANT\n          }\n        : {\n            id,\n            parentId: parentId ?? null,\n            type: 'ATTRIBUTE',\n            attribute: cond?.attribute,\n            operator: cond?.operator,\n            value: cond?.value\n          };\n      return {\n        id,\n        conditions: [condition],\n        sort: resultSort\n      };\n    }\n  }\n\n  getPatternForField(field: Field): string {\n    const type = field.type;\n    switch (type) {\n      case FieldType.DECIMAL:\n        return '^[+-]?([0-9]*[.])?[0-9]+$';\n      case FieldType.INTEGER:\n      case FieldType.LONG:\n        return '^[+-]?[0-9]+$';\n      case FieldType.STRING:\n      case FieldType.KEYWORD:\n        return '^.+$';\n      case FieldType.INSTANT:\n        return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';\n      default:\n        return '^.+$';\n    }\n  }\n\n  private getFieldFromAttribute(attributeId: string | undefined, classes: Class[], fields: Field[]): Field | undefined {\n    if (!attributeId) {\n      return undefined;\n    }\n    const attribute = classes\n      .reduce((acc, clazz) => [...acc, ...clazz.attributes], [] as Attribute[])\n      .find((a) => a.id === attributeId);\n    return fields.find((f) => f.id === attribute?.field);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Action, Store } from '@ngrx/store';\nimport {\n  ClassSelectors,\n  DataSourceActions,\n  DataSourceSelectors,\n  DEFAULT_NAMED_QUERY_ID,\n  FieldSelectors,\n  FieldType,\n  MonoClassSearchPayload,\n  MultiClassSearchPayload,\n  NamedQueryTypes,\n  NamedQueryUtils,\n  NormalizedCondition,\n  OrderValue,\n  SearchActions,\n  SearchService\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, of } from 'rxjs';\nimport { catchError, first, map, mergeMap, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SearchMultiClassActions } from '../../../search/search-multi-class/store/search-multi-class.actions';\nimport { SearchMonoClassActions } from './search-mono-class.actions';\nimport { SearchMonoClassSelectors } from './search-mono-class.selectors';\nimport { SearchMonoClassService } from './search-mono-class.service';\n\n@Injectable()\nexport class SearchMonoClassEffects {\n  constructor(\n    private actions$: Actions,\n    private searchService: SearchService,\n    private searchMonoClassService: SearchMonoClassService,\n    private store: Store<any>\n  ) {}\n\n  selectedMonoClass$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.selectMonoClassSearch),\n      map(() => {\n        const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(null);\n        return SearchMonoClassActions.addFirstNormalizedCondition({ condition });\n      })\n    )\n  );\n\n  addNormalizedConditionAttribute$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId),\n      mergeMap((action) =>\n        combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field))]).pipe(first())\n      ),\n      map(([action, field]) => {\n        const pattern = this.searchMonoClassService.getPatternForField(field);\n        const isDate = field.type === FieldType.INSTANT;\n        const condition: NormalizedCondition = {\n          ...this.searchMonoClassService.initNormalizedConditionAttribute(action.conditionId, action.attribute.id),\n          isDate,\n          pattern\n        };\n\n        return SearchMonoClassActions.addNormalizedConditionForConditionId({\n          conditionId: action.conditionId,\n          condition\n        });\n      })\n    )\n  );\n\n  addNormalizedConditionComposed$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.addNormalizedConditionComposedForConditionId),\n      map((action) => {\n        const condition: NormalizedCondition = this.searchMonoClassService.initNormalizedConditionComposed(\n          action.conditionId\n        );\n        return SearchMonoClassActions.addNormalizedConditionForConditionId({\n          conditionId: action.conditionId,\n          condition\n        });\n      })\n    )\n  );\n\n  deleteNormalizedCondition$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.deleteNormalizedConditionById),\n      mergeMap((action) =>\n        combineLatest([\n          of(action),\n          this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(action.conditionId))\n        ]).pipe(first())\n      ),\n      switchMap(([action, condition]) => {\n        const actionCondition$ = SearchMonoClassActions.deleteNormalizedCondition({ condition });\n        const actionParent$ = SearchMonoClassActions.removeConditionFromComposed({\n          parentId: condition.parentId ?? null,\n          childrenId: condition.id\n        });\n        const actionsComposed$ = condition.composed?.map((id: string) =>\n          SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: id })\n        );\n        return actionsComposed$\n          ? [actionCondition$, actionParent$, ...actionsComposed$]\n          : [actionCondition$, actionParent$];\n      })\n    )\n  );\n\n  actionMonoClassSearch$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.search, SearchMonoClassActions.save),\n      withLatestFrom(\n        this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch),\n        this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId),\n        this.store.select(SearchMonoClassSelectors.selectMonoClassConditions),\n        this.store.select(SearchMonoClassSelectors.order),\n        this.store.select(DataSourceSelectors.currentEdit)\n      ),\n      map(([action, oClass, masterId, conditions, order, currentEdit]) => {\n        const payload = this.searchMonoClassService.buildMonoClassSearchPayloadForSearch(\n          oClass ?? '',\n          masterId ?? '',\n          conditions,\n          order\n        );\n        if (action.type === SearchMonoClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {\n          return DataSourceActions.namedQuery.post({\n            id: action.id ?? currentEdit?.id,\n            name: action.descriptionQuery.name,\n            description: action.descriptionQuery?.description,\n            visibility: action.descriptionQuery?.visibility,\n            payload,\n            color: currentEdit?.color,\n            favorite: currentEdit?.favorite ?? false,\n            isEdit: !!currentEdit\n          });\n        }\n        return SearchActions.search({ payload });\n      })\n    )\n  );\n\n  loadExistingConditions$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMonoClassActions.loadExistingConditions),\n      withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(FieldSelectors.fields)),\n      mergeMap(([action, classes, fields]) => {\n        const { oClass, condition, sort } = action.payload;\n        const masterId = uuidv4();\n        const conditions = this.searchMonoClassService.loadNormalizedConditions(\n          condition,\n          masterId,\n          classes,\n          fields,\n          masterId,\n          sort\n        ).conditions;\n        const ids = conditions.map((cond) => cond.id);\n        const entities = conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {});\n        return [\n          SearchMonoClassActions.addIdMaster({ id: masterId }),\n          SearchMonoClassActions.addIdCondition({ ids }),\n          SearchMonoClassActions.addEntities({ entities }),\n          SearchMonoClassActions.addIdClass({ id: oClass }),\n          SearchMonoClassActions.addOrder({ attribute: sort?.attribute, asc: sort?.direction as OrderValue })\n        ];\n      })\n    )\n  );\n\n  addEdit$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.openEdit),\n      withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)),\n      mergeMap(([action, currentEdit]) => {\n        const actions = [] as Action[];\n        if (!!currentEdit) {\n          const type = NamedQueryUtils.getTypeFromPayload(currentEdit.request);\n          if (type === NamedQueryTypes.MULTI_CLASS) {\n            actions.push(\n              SearchMultiClassActions.loadExistingConditions({\n                payload: currentEdit.request as MultiClassSearchPayload\n              })\n            );\n          }\n          if (type === NamedQueryTypes.MONO_CLASS) {\n            actions.push(\n              SearchMonoClassActions.loadExistingConditions({ payload: currentEdit.request as MonoClassSearchPayload })\n            );\n          }\n        }\n        return actions;\n      }),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  stopEdit$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.stopEdit),\n      mergeMap(() => [SearchMultiClassActions.resetSearch(), SearchMonoClassActions.resetSearch()])\n    )\n  );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport {\n  ClassSelectors,\n  DataSourceActions,\n  DataSourceSelectors,\n  DEFAULT_NAMED_QUERY_ID,\n  FieldSelectors,\n  FieldType,\n  MultiClassCondition,\n  SearchActions\n} from '@onepoint-yap/dashboard';\nimport { combineLatest } from 'rxjs';\nimport { filter, first, map, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { SearchMultiClassActions } from './search-multi-class.actions';\nimport { SearchMultiClassSelectors } from './search-multi-class.selectors';\nimport { SearchMultiClassService } from './search-multi-class.service';\n\n@Injectable()\nexport class SearchMultiClassEffects {\n  constructor(\n    private actions$: Actions,\n    private store: Store<any>,\n    private multiClassService: SearchMultiClassService\n  ) {}\n\n  addCondition$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMultiClassActions.addNewEmptyCondition),\n      map(() => {\n        const condition = this.multiClassService.generateCondition();\n        return SearchMultiClassActions.addMultiClassCondition({ condition });\n      })\n    )\n  );\n  updateConditionField$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMultiClassActions.updateConditionField),\n      mergeMap((action) =>\n        combineLatest([\n          this.store\n            .select(SearchMultiClassSelectors.getConditionById(action.conditionId))\n            .pipe(filter((c): c is MultiClassCondition => c !== undefined)),\n          this.store.select(FieldSelectors.fieldById(action.field))\n        ]).pipe(first())\n      ),\n      map(([condition, field]) => {\n        const pattern = this.multiClassService.getPatternForField(field);\n        const isDate = field.type === FieldType.INSTANT;\n        return SearchMultiClassActions.updateConditionPattern({\n          conditionId: condition.id,\n          pattern,\n          isDate\n        });\n      })\n    )\n  );\n\n  actionMultiClassSearch$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMultiClassActions.search, SearchMultiClassActions.save),\n      withLatestFrom(\n        this.store.select(SearchMultiClassSelectors.conditions),\n        this.store.select(SearchMultiClassSelectors.multiType),\n        this.store.select(ClassSelectors.classes),\n        this.store.select(DataSourceSelectors.currentEdit)\n      ),\n      map(([action, conditions, multiType, classes, currentEdit]) => {\n        const payload = this.multiClassService.buildConditionsToSearchPayload(conditions, classes, multiType);\n        if (action.type === SearchMultiClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== currentEdit?.id) {\n          return DataSourceActions.namedQuery.post({\n            id: action.id ?? currentEdit?.id,\n            name: action.descriptionQuery.name,\n            description: action.descriptionQuery?.description,\n            visibility: action.descriptionQuery?.visibility,\n            payload,\n            color: currentEdit?.color,\n            favorite: currentEdit?.favorite ?? false,\n            isEdit: !!currentEdit\n          });\n        }\n        return SearchActions.search({ payload });\n      })\n    )\n  );\n\n  loadExistingConditions$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchMultiClassActions.loadExistingConditions),\n      withLatestFrom(this.store.select(FieldSelectors.fields)),\n      mergeMap(([action, fields]) => {\n        const conditions = this.multiClassService.getConditionsFromSearchPayload(action.payload, fields);\n        const multiType = action.payload.multiType;\n        return [\n          SearchMultiClassActions.updateConditions({ conditions }),\n          SearchMultiClassActions.updateMultiType({ multiType })\n        ];\n      })\n    )\n  );\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n  YapCoreModule,\n  YapDashboardModule,\n  YapDatePickerModule,\n  YapIconModule,\n  YapOverlayModule,\n  YapSelectModule,\n  YapShareModule,\n  YapToggleModule,\n  YapI18nModule,\n  YapI18nService\n} from '@onepoint-yap/dashboard';\nimport { YapCardModule } from '@onepoint-yap/dashboard/components/card';\nimport { YapCheckboxModule } from '@onepoint-yap/dashboard/components/checkbox';\nimport { YapExpandPanelModule } from '@onepoint-yap/dashboard/components/expand-panel';\nimport { YapFilterModule } from '@onepoint-yap/dashboard/components/filter';\nimport { ChooseWidgetComponent } from './components/choose-widget/choose-widget.component';\nimport { EditNamedQueryModalComponent } from './components/edit-named-query-modal/edit-named-query-modal.component';\nimport { EditNamedQueryComponent } from './components/edit-named-query/edit-named-query.component';\nimport { YapSaveQueryButtonComponent } from './components/save-query-button/save-query-button.component';\nimport { YapSaveQueryComponent } from './components/save-query/save-query.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { YapSearchFulltextComponent } from './search-fulltext/search-fulltext/search-fulltext.component';\nimport { SearchFulltextEffects } from './search-fulltext/store/search-fulltext.effects';\nimport { YapSearchHomeComponent } from './search-home/search-home.component';\nimport { YapSearchComposedComponent } from './search-mono-class/components/search-composed/search-composed.component';\nimport { YapSearchConditionComponent } from './search-mono-class/components/search-condition/search-condition.component';\nimport { YapSearchMonoClassComponent } from './search-mono-class/components/search-mono-class/search-mono-class.component';\nimport { YapSearchOrderComponent } from './search-mono-class/components/search-order/search-order.component';\nimport { YapSearchSelectAttributeComponent } from './search-mono-class/components/search-select-attribute/search-select-attribute.component';\nimport { SearchMonoClassEffects } from './search-mono-class/store/search-mono-class.effects';\nimport { searchMonoClassFeatureKey, searchMonoClassReducer } from './search-mono-class/store/search-mono-class.reducer';\nimport { MultiClassConditionComponent } from './search-multi-class/components/multi-class-condition/multi-class-condition.component';\nimport { MultiClassFieldSelectionComponent } from './search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component';\nimport { YapSearchMultiClassComponent } from './search-multi-class/components/search-multi-class/search-multi-class.component';\nimport { SearchMultiClassEffects } from './search-multi-class/store/search-multi-class.effects';\nimport {\n  searchMultiClassFeatureKey,\n  searchMultiClassReducer\n} from './search-multi-class/store/search-multi-class.reducer';\nimport { YapSearchToolsComponent } from './search-tools/search-tools.component';\nimport { YapSearchCssComponent } from './style/css.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    YapCoreModule,\n    StoreModule.forFeature(searchMultiClassFeatureKey, searchMultiClassReducer),\n    StoreModule.forFeature(searchMonoClassFeatureKey, searchMonoClassReducer),\n    EffectsModule.forFeature([SearchMultiClassEffects, SearchMonoClassEffects, SearchFulltextEffects]),\n    YapIconModule,\n    FormsModule,\n    ReactiveFormsModule,\n    OverlayModule,\n    PortalModule,\n    YapSelectModule,\n    YapToggleModule,\n    YapOverlayModule,\n    YapFilterModule,\n    YapToggleModule,\n    YapExpandPanelModule,\n    YapCardModule,\n    YapCheckboxModule,\n    YapDashboardModule,\n    YapShareModule,\n    YapDatePickerModule,\n    YapI18nModule\n  ],\n  declarations: [\n    YapSearchComposedComponent,\n    YapSearchSelectAttributeComponent,\n    YapSearchConditionComponent,\n    YapSaveQueryComponent,\n    YapSearchToolsComponent,\n    YapSearchHomeComponent,\n    YapSearchMonoClassComponent,\n    YapSaveQueryComponent,\n    MultiClassConditionComponent,\n    YapSearchMultiClassComponent,\n    MultiClassFieldSelectionComponent,\n    YapSearchFulltextComponent,\n    YapSaveQueryButtonComponent,\n    EditNamedQueryComponent,\n    EditNamedQueryModalComponent,\n    ChooseWidgetComponent,\n    YapSearchOrderComponent,\n    YapSearchCssComponent\n  ],\n  exports: [YapSearchToolsComponent, YapSearchFulltextComponent, EditNamedQueryModalComponent, ChooseWidgetComponent]\n})\nexport class YapSearchModule {\n  constructor(private yapTranslateService: YapI18nService) {\n    this.yapTranslateService.addLangObject('fr', 'search', frTranslations);\n    this.yapTranslateService.addLangObject('en', 'search', enTranslations);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","feature","fromSearchMonoClass.searchMonoClassFeatureKey","fromSearchMultiClass.searchMultiClassFeatureKey","uuidv4","i2","map","i4","i7.YapSearchCssComponent","i5.YapSearchSelectAttributeComponent","i6.YapSearchConditionComponent","i5","filter","switchMap","take","i5.YapSearchComposedComponent","i6.YapSearchOrderComponent","i2.SearchMultiClassService","i6","i7.MultiClassFieldSelectionComponent","i5.MultiClassConditionComponent","i5.ChooseWidgetComponent","i6.YapSearchCssComponent","i4.YapSearchMonoClassComponent","i5.YapSearchMultiClassComponent","i6.YapSearchFulltextComponent","i7.ChooseWidgetComponent","i5.YapSearchHomeComponent","i6.YapSearchMonoClassComponent","i7.YapSearchMultiClassComponent","i8.YapSearchFulltextComponent","i9.YapSaveQueryButtonComponent","i10.EditNamedQueryComponent","i11.ChooseWidgetComponent","i3.YapSearchToolsComponent","i3.SearchFulltextService","uuidV4","i3.SearchMonoClassService","i3.SearchMultiClassService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBM,MAAO,qBAAsB,SAAQ,wBAAwB,CAAA;IAuBjE,WAAoB,CAAA,kBAAsC,EAAU,sBAA8C,EAAA;AAChH,QAAA,KAAK,EAAE,CAAC;QADU,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAAU,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAnBzG,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAsB;AACzC,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;SACnB,CAAC;AACO,QAAA,IAAA,CAAA,eAAe,GAAsB;AAC5C,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC;QACO,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;QAChB,IAAK,CAAA,KAAA,GAAG,GAAG,CAAC;AAKnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,IAAI,KACP,IAAI;AACD,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACzF,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAClD,CACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnG,CACF,CAAC;KACH;IACD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC1C,EAAE,EAAE,CAAC,CAAC;AACR,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;AAED,IAAA,cAAc,CAAC,IAAmD,EAAA;AAChE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;8GArDU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0TCzBlC,m1DA8CA,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,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDrBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,aAAA,EAEd,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,m1DAAA,EAAA,CAAA;8IAGT,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBAGjB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAaE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEjCD,MAAM,sBAAsB,GAAG;AACpC,IAAA,IAAI,EAAE,YAAY,CAAC,wBAAwB,EAAE,KAAK,EAAuD,CAAC;AAC1G,IAAA,MAAM,EAAE,YAAY,CAAC,4CAA4C,CAAC;AAClE,IAAA,IAAI,EAAE,YAAY,CAAC,4CAA4C,CAAC;AAChE,IAAA,mBAAmB,EAAE,YAAY,CAAC,4CAA4C,CAAC;AAE/E,IAAA,qBAAqB,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAuB,CAAC;AACzG,IAAA,2BAA2B,EAAE,YAAY,CACvC,4CAA4C,EAC5C,KAAK,EAAsC,CAC5C;AACD,IAAA,6CAA6C,EAAE,YAAY,CACzD,gDAAgD,EAChD,KAAK,EAAiD,CACvD;AACD,IAAA,4CAA4C,EAAE,YAAY,CACxD,+CAA+C,EAC/C,KAAK,EAA2B,CACjC;AACD,IAAA,oCAAoC,EAAE,YAAY,CAChD,sDAAsD,EACtD,KAAK,EAA2D,CACjE;AACD,IAAA,+CAA+C,EAAE,YAAY,CAC3D,kEAAkE,EAClE,KAAK,EAAmD,CACzD;AACD,IAAA,4CAA4C,EAAE,YAAY,CACxD,+DAA+D,EAC/D,KAAK,EAA6E,CACnF;AACD,IAAA,2CAA2C,EAAE,YAAY,CACvD,8DAA8D,EAC9D,KAAK,EAAyD,CAC/D;AACD,IAAA,6BAA6B,EAAE,YAAY,CACzC,yDAAyD,EACzD,KAAK,EAA2B,CACjC;AACD,IAAA,yBAAyB,EAAE,YAAY,CACrC,wCAAwC,EACxC,KAAK,EAAsC,CAC5C;AACD,IAAA,2BAA2B,EAAE,YAAY,CACvC,gEAAgE,EAChE,KAAK,EAA4C,CAClD;AACD,IAAA,sBAAsB,EAAE,YAAY,CAClC,4CAA4C,EAC5C,KAAK,EAAuC,CAC7C;AACD,IAAA,cAAc,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAqB,CAAC;AAC9F,IAAA,WAAW,EAAE,YAAY,CAAC,iCAAiC,EAAE,KAAK,EAAkB,CAAC;AACrF,IAAA,WAAW,EAAE,YAAY,CACvB,gCAAgC,EAChC,KAAK,EAAwD,CAC9D;AACD,IAAA,UAAU,EAAE,YAAY,CAAC,gCAAgC,EAAE,KAAK,EAAkB,CAAC;AACnF,IAAA,WAAW,EAAE,YAAY,CAAC,gCAAgC,CAAC;AAC3D,IAAA,QAAQ,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAA4C,CAAC;CACzG;;ACpEM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAS3D,MAAM,2BAA2B,GAAyB;AAC/D,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;AACD,IAAA,KAAK,EAAE,SAAS;CACjB,CAAC;AAEK,MAAM,sBAAsB,GAAG,aAAa,CACjD,2BAA2B,EAC3B,EAAE,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACnE,IAAA,GAAG,KAAK;IACR,WAAW,EAAE,MAAM,CAAC,OAAO;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzE,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;AAC7B,QAAA,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,QAAA,QAAQ,EAAE;YACR,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS;AACxC,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;AAChF,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC3E,MAAM,CAAC,SAAS,CAAC,EAAE;KACpB,CAAC;IACF,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,mBAAmB,EAAE;YACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,YAAA,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5D,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ;AACrC,gBAAA,CAAC,MAAM,CAAC,WAAW,GAAG;oBACpB,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;AACzD,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;gBACD,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS;AACxC,aAAA;AACF,SAAA;KACF,CAAC;AACJ,CAAC,CAAC,EACF,EAAE,CAAC,sBAAsB,CAAC,+CAA+C,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC7F,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;QACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ;AACrC,YAAA,CAAC,MAAM,CAAC,WAAW,GAAG;gBACpB,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzD,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,4CAA4C,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC1F,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;QACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ;AACrC,YAAA,CAAC,MAAM,CAAC,WAAW,GAAG;gBACpB,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;AAC9B,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,2CAA2C,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzF,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;QACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ;AACrC,YAAA,CAAC,MAAM,CAAC,WAAW,GAAG;gBACpB,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzD,IAAI,EAAE,MAAM,CAAC,aAAa;AAC3B,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;IACrE,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAChG,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,mBAAmB,EAAE;YACnB,GAAG,KAAK,CAAC,mBAAmB;YAC5B,GAAG;YACH,QAAQ;AACT,SAAA;KACF,CAAC;AACJ,CAAC,CAAC,EACF,EAAE,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzE,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;QACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ;AACrC,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG;gBACjB,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CACvE,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,UAAU,CACjC,IAAI,EAAE,CAAC;AACT,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC5D,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE,EAAE,GAAG,KAAK,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5E,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE,EAAE,GAAG,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;AAC3E,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,mBAAmB,EAAE;QACnB,GAAG,KAAK,CAAC,mBAAmB;AAC5B,QAAA,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;AACjC,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;IACR,WAAW,EAAE,MAAM,CAAC,EAAE;AACvB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,KAAK,MAAM;AACjD,IAAA,GAAG,KAAK;AACR,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACtD,IAAA,GAAG,KAAK;IACR,KAAK,EAAE,MAAM,CAAC,GAAG;AACf,UAAE;YACE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;YAC3D,GAAG,EAAE,MAAM,CAAC,GAAG;AAChB,SAAA;AACH,UAAE,SAAS;CACd,CAAC,CAAC,CACJ;;ACjKD,MAAME,SAAO,GAAG,qBAAqB,CACnCC,yBAA6C,CAC9C,CAAC;AAEF,MAAM,uBAAuB,GAAG,cAAc,CAACD,SAAO,EAAE,CAAC,KAA2B,KAAK,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7G,MAAM,+BAA+B,GAAG,cAAc,CACpD,cAAc,CAAC,QAAQ,EACvB,uBAAuB,EACvB,CAAC,OAAO,EAAE,OAAgB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CACjG,CAAC;AAEF,MAAM,kCAAkC,GAAG,CAAC,WAAmB,KAC7D,cAAc,CAAC,+BAA+B,EAAE,CAAC,UAAuB,KACtE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,CACnD,CAAC;AACJ,MAAM,yBAAyB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAA2B,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACtH,MAAM,KAAK,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAA2B,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACpF,MAAM,iCAAiC,GAAG,cAAc,CACtD,yBAAyB,EACzB,CAAC,kBAAuC,KAAK,kBAAkB,EAAE,QAAQ,CAC1E,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,EAAU,KAC/C,cAAc,CACZ,yBAAyB,EACzB,CAAC,mBAAwC,KAAK,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC/E,CAAC;AAEJ,MAAM,oBAAoB,GAAG,cAAc,CACzC,yBAAyB,EACzB,uBAAuB,EACvB,CAAC,UAA+B,EAAE,aAAa,KAAI;IACjD,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IACD,MAAM,qBAAqB,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC;IAC3G,QACE,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAI;QAChC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC;AACzC,QAAA,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;AACrC,QAAA,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAC3C,KAAC,CAAC,KAAK,SAAS,EAChB;AACJ,CAAC,CACF,CAAC;AAEK,MAAM,wBAAwB,GAAG;aACtCA,SAAO;IACP,uBAAuB;IACvB,+BAA+B;IAC/B,kCAAkC;IAClC,yBAAyB;IACzB,6BAA6B;IAC7B,iCAAiC;IACjC,oBAAoB;IACpB,KAAK;CACN;;AC9DM,MAAM,uBAAuB,GAAG;AACrC,IAAA,eAAe,EAAE,YAAY,CAAC,8CAA8C,EAAE,KAAK,EAA+B,CAAC;AACnH,IAAA,oBAAoB,EAAE,YAAY,CAAC,wCAAwC,CAAC;AAC5E,IAAA,sBAAsB,EAAE,YAAY,CAClC,8CAA8C,EAC9C,KAAK,EAAsC,CAC5C;AACD,IAAA,oBAAoB,EAAE,YAAY,CAChC,2CAA2C,EAC3C,KAAK,EAA0C,CAChD;AACD,IAAA,eAAe,EAAE,YAAY,CAC3B,qCAAqC,EACrC,KAAK,EAAyF,CAC/F;AACD,IAAA,sBAAsB,EAAE,YAAY,CAClC,6CAA6C,EAC7C,KAAK,EAA6D,CACnE;AACD,IAAA,eAAe,EAAE,YAAY,CAAC,qCAAqC,EAAE,KAAK,EAA2B,CAAC;AACtG,IAAA,WAAW,EAAE,YAAY,CAAC,iCAAiC,CAAC;AAE5D,IAAA,sBAAsB,EAAE,YAAY,CAClC,6CAA6C,EAC7C,KAAK,EAAwC,CAC9C;AACD,IAAA,gBAAgB,EAAE,YAAY,CAC5B,sCAAsC,EACtC,KAAK,EAAyC,CAC/C;AAED,IAAA,MAAM,EAAE,YAAY,CAAC,kCAAkC,CAAC;AACxD,IAAA,IAAI,EAAE,YAAY,CAAC,gCAAgC,EAAE,KAAK,EAAuD,CAAC;CACnH;;AChCM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAO7D,MAAM,kBAAkB,GAA0B;AACvD,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,UAAU,EAAE,EAAE;CACf,CAAC;AAEK,MAAM,uBAAuB,GAAG,aAAa,CAClD,kBAAkB,EAClB,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;IACR,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACrE,IAAA,GAAG,KAAK;IACR,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;AACpD,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;IACR,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACnE,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE;AACV,QAAA,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KACxB,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW;AACzB,cAAG;AACC,gBAAA,GAAG,CAAC;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;AACI,aAAA;cACzB,CAAC,CACN;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACrE,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE;AACV,QAAA,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KACxB,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW;AACzB,cAAG;AACC,gBAAA,GAAG,CAAC;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG,QAAQ;AACnD,gBAAA,KAAK,EAAE,IAAI;AACY,aAAA;cACzB,CAAC,CACN;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE;AACV,QAAA,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KACxB,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW;AACzB,cAAE;AACE,gBAAA,GAAG,CAAC;AACJ,gBAAA,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;gBAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;AAC9B,aAAA;cACD,CAAC,CACN;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/D,IAAA,GAAG,KAAK;IACR,UAAU,EAAE,MAAM,CAAC,UAAU;AAC9B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC,KAAK,MAAM;AAClD,IAAA,GAAG,KAAK;AACR,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,UAAU,EAAE,EAAE;CACf,CAAC,CAAC,CACJ;;AC7ED,MAAM,OAAO,GAAG,qBAAqB,CACnCE,0BAA+C,CAChD,CAAC;AAEF,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAA4B,KAAK,KAAK,EAAE,SAAS,CAAC,CAAC;AAC9F,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAA4B,KAAK,KAAK,EAAE,UAAU,CAAC,CAAC;AAChG,MAAM,gBAAgB,GAAG,CAAC,EAAU,KAClC,cAAc,CAAC,UAAU,EAAE,CAAC,UAAiC,KAAK,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAE1G;AAEA,MAAM,qBAAqB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,UAAiC,KAAI;IAC7F,QACE,UAAU,CAAC,IAAI,CAAC,CAAC,SAA8B,KAAI;AACjD,QAAA,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,IAAI,SAAS,CAAC,OAAO,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AAClC,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAe,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,WAAW,CAAC;AACrB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC,KAAK,SAAS,EAChB;AACJ,CAAC,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAG;IACvC,OAAO;IACP,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,qBAAqB;CACtB;;ACvCM,MAAM,qBAAqB,GAAG;AACnC,IAAA,MAAM,EAAE,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAyC,CAAC;AAChG,IAAA,IAAI,EAAE,YAAY,CAChB,wBAAwB,EACxB,KAAK,EAA0F,CAChG;CACF;;MCiBY,qBAAqB,CAAA;AAehC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KACvB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,QACE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE;AACxB,aAAC,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;AACxE,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EAC7B;KACH;AAID,IAAA,WAAA,CACU,KAAY,EACZ,MAA2C,EAE3C,IAIP,EAAA;QAPO,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAqC;QAE3C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAIX;QArCH,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAEf,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAGf,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAClB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAkB;YAC1B,IAAI,EAAE,iBAAiB,CAAC,OAAO;AAC/B,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;AA4BA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;KACxE;IAED,QAAQ,GAAA;QACN,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAClC,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC/C,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAChB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;AACzC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,EAAE,GACN,IAAI,CAAC,EAAE,KAAK,sBAAsB,IAAI,IAAI,CAAC,EAAE,KAAK,sBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAGC,EAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC5G,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;AACpB,YAAA,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;gBAC1C,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;AACF,YAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,KAAK,eAAe,CAAC,SAAS;oBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC3F,MAAM;gBACR,KAAK,eAAe,CAAC,UAAU;AAC7B,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC3E,MAAM;gBACR,KAAK,eAAe,CAAC,WAAW;AAC9B,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5E,MAAM;AACT,aAAA;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;IACD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAClC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACjC;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACrB;AApGU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,mEAiCtB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAjCd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,qOC1BlC,s4DAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAK,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,s4DAAA,EAAA,CAAA;;0BAoCvB,MAAM;2BAAC,eAAe,CAAA;4CANL,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBACC,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;;;ME/BN,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sDAnBtB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ykDAAA,EAAA,uWAAA,EAAA,owEAAA,EAAA,41CAAA,EAAA,4JAAA,EAAA,8dAAA,EAAA,miCAAA,EAAA,uiBAAA,EAAA,0vBAAA,EAAA,0jFAAA,EAAA,iEAAA,EAAA,4mCAAA,EAAA,suBAAA,EAAA,o5CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAmBD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,EAAE,EAiBG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,ykDAAA,EAAA,uWAAA,EAAA,owEAAA,EAAA,41CAAA,EAAA,4JAAA,EAAA,8dAAA,EAAA,miCAAA,EAAA,uiBAAA,EAAA,0vBAAA,EAAA,0jFAAA,EAAA,iEAAA,EAAA,4mCAAA,EAAA,suBAAA,EAAA,o5CAAA,CAAA,EAAA,CAAA;;;MCoB1B,sBAAsB,CAAA;AA8CjC,IAAA,WAAA,CACU,KAAY,EACZ,OAAgB,EAChB,gBAAkC,EAClC,SAA2B,EAAA;QAH3B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QA7C5B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW,CAAC;AAGrD,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;AAGxD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QAE5C,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,KAAK,EAAE,OAAO;SACc,CAAC;AAMtB,QAAA,IAAA,CAAA,iBAAiB,GAAsB;AAC9C,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAS,CAAA,SAAA,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC/C,YAAA,GAAG,KAAK;YACR,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AACzE,SAAA,CAAC,CAAC,CAAC;QAGJ,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QAGvB,IAAmB,CAAA,mBAAA,GAAG,mBAAmB,CAAC;KAOtC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACjFC,KAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAC/CA,KAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CACjF,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3F;AAED,IAAA,kBAAkB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KAC/F;IAED,UAAU,CAAC,EAAU,EAAE,UAA+B,EAAA;QACpD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,SAAA;KACF;IAED,MAAM,CAAC,EAAU,EAAE,MAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,gBAAA,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,CAAC,SAAS,CAAC;AACxB,aAAA,CAAC,CACH,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACrF,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAmB,CAAC;YACzE,IAAI,CAAC,CAAC,WAAW,EAAE;AACjB,gBAAA,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,gBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,aAAA;AACF,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;AAED,IAAA,MAAM,CAAC,UAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;KACrF;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtC;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;KAClC;IAED,UAAU,CAAC,EAAU,EAAE,GAAkD,EAAA;QACvE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;AAED,IAAA,QAAQ,CAAC,EAAc,EAAA;AACrB,QAAA,MAAM,IAAI,GAAyB;AACjC,YAAA,KAAK,EAAE,+BAA+B;AACtC,YAAA,OAAO,EAAE;gBACP,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE;AAC/D,gBAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE;AAClD,aAAA;SACF,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC5D,IAAI;AACL,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;AACrF,YAAA,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,YAAY;AACf,sBAAE,IAAI,CACJ,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EACnE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EACrC,IAAI,CAAC,CAAC,CAAC,CACR;AACA,qBAAA,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAI;AACrB,oBAAA,IAAI,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;AACzB,wBAAA,MAAM,IAAI,GAAyB;AACjC,4BAAA,KAAK,EAAE,2BAA2B;4BAClC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;yBAClD,CAAC;wBACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE;4BACjE,IAAI;AACL,yBAAA,CAAC,CAAC;wBACH,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClD,4BAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;yBACtF,CAAC,CACH,CAAC;AACH,qBAAA;iBACF,CAAC,CACL,CAAC;AACH,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,EAAc,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC5D,QAAA,MAAM,IAAI,GACR,IAAI,KAAK,eAAe,CAAC,SAAS;AAChC,cAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,OAAgC,CAAC,EAAE;AACnF,cAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KACtD;AAEO,IAAA,cAAc,CAAC,OAA8B,EAAA;AACnD,QAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AACzC,QAAA,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;KAC7D;IAED,SAAS,CAAC,EAAU,EAAE,MAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,gBAAA,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,CAAC,YAAY,CAAC;AAC3B,aAAA,CAAC,CACH,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAmB,CAAC;YAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAmB,CAAC;YACvE,IAAI,CAAC,CAAC,cAAc,EAAE;AACpB,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC7C,gBAAA,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/D,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAClD,aAAA;AACF,SAAA;KACF;AAED,IAAA,aAAa,CAAC,MAAc,EAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAED,IAAA,OAAO,CAAC,EAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;8GAzNU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EACE,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EACR,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6BC3CnD,2wXA+PA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtNa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,2wXAAA,EAAA,CAAA;kLAIuB,YAAY,EAAA,CAAA;sBAA7D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBACK,eAAe,EAAA,CAAA;sBAAnE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAE1C,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;MErCI,iCAAiC,CAAA;IAC5C,IAAa,EAAE,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAC1F,MAAM,CAAC,CAAC,EAAE,KAAmB,EAAE,KAAK,IAAI,CAAC,EACzC,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAClE,MAAM,CAAC,CAAC,KAAK,KAAqB,KAAK,KAAK,SAAS,CAAC,EACtD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EACxD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAI;YACtB,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CACrD,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAClF,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAChE,CAAC,CACH,CAAC;KACH;AAID,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAID,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAR3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAa,CAAC;KAQvB;AAEzC,IAAA,iBAAiB,CAAC,SAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5C;8GA5BU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,sJCZ9C,4VASA,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,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDGa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,6BAA6B,EAAA,eAAA,EAEtB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4VAAA,EAAA,CAAA;4FAGlC,EAAE,EAAA,CAAA;sBAAd,KAAK;gBAeI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;;;MEJI,2BAA2B,CAAA;IAGtC,IAAa,WAAW,CAAC,GAAW,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAC5F,MAAM,CAAC,CAAC,EAAE,KAAmB,EAAE,KAAK,IAAI,CAAC,EACzC,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAClE,MAAM,CAAC,CAAC,KAAK,KAAqB,KAAK,KAAK,SAAS,CAAC,EACtD,GAAG,CAAC,CAAC,KAAY,KAAK,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAC9E,CAAC;KACH;IAED,IAAa,EAAE,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;KACxB;IAED,IAAa,iBAAiB,CAAC,GAAY,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;KAC3B;IAsBD,WAAoB,CAAA,KAAiB,EAAU,OAA0B,EAAA;QAArD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QAzCnD,IAAK,CAAA,KAAA,GAAG,gCAAgC,CAAC;AAqBvD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAU,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAU,CAAC;QAO7C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QACpB,IAAoB,CAAA,oBAAA,GAAG,EAAE,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAkB,CAAA,kBAAA,GAAuB,EAAE,CAAC;AAEpC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAG/B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EACpF,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,KAAI;AACjC,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;SACpC,CAAC,EACF,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACzE;aACA,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,KAAI;AAC1C,YAAA,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,gBAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpF,gBAAA,IAAI,QAAQ,EAAE;AACZ,oBAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC/C,oBAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;AACrC,iBAAA;AACD,gBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC;AACxC,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAA;SACF,CAAC,CACL,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;AAED,IAAA,kBAAkB,CAAC,YAA0B,EAAA;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,+CAA+C,CAAC;YACrE,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,QAAQ,EAAE,YAAY;AACvB,SAAA,CAAC,CACH,CAAC;KACH;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,4CAA4C,CAAC;YAClE,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,SAAA,CAAC,CACH,CAAC;KACH;IAED,eAAe,CAAC,GAAQ,EAAE,KAAc,EAAA;QACtC,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AACtC,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAA;KACF;IAED,0BAA0B,GAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAC9G;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,4CAA4C,CAAC;YAClE,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,oBAAoB;AACtC,SAAA,CAAC,CACH,CAAC;KACH;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,4CAA4C,CAAC;YAClE,KAAK,EAAE,OAAO,IAAI,CAAC,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB;YAC3G,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,UAAU,EAAE,OAAO,IAAI,CAAC,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,EAAE;AAC1F,SAAA,CAAC,CACH,CAAC;KACH;AAEO,IAAA,qBAAqB,CAAC,WAAmB,EAAA;AAC/C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK;AAC/B,aAAA,MAAM,CAAC,wBAAwB,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;aAChF,IAAI,CACH,MAAM,CAAC,CAAC,IAAI,KAAwB,IAAI,KAAK,SAAS,CAAC,EACvD,SAAS,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACvF,MAAM,CAAC,CAAC,KAAK,KAAqB,KAAK,KAAK,SAAS,CAAC,EACtD,GAAG,CAAC,CAAC,KAAY,KAAI;AACnB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE;AACrE,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC9D,aAAA;AAAM,iBAAA,IACL,SAAS,KAAK,SAAS,CAAC,OAAO;gBAC/B,SAAS,KAAK,SAAS,CAAC,OAAO;AAC/B,gBAAA,SAAS,KAAK,SAAS,CAAC,IAAI,EAC5B;AACA,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC9D,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAC5D,aAAA;SACF,CAAC,CACH,CAAC;KACL;AAEO,IAAA,gBAAgB,CAAC,WAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;AACzB,aAAA,MAAM,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;AAC3E,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAkC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;KACvE;8GA1JU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,uMCxBxC,m/EAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,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,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,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,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDzCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAEf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m/EAAA,EAAA,CAAA;4HAGzB,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;gBAEP,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAUO,EAAE,EAAA,CAAA;sBAAd,KAAK;gBAKO,iBAAiB,EAAA,CAAA;sBAA7B,KAAK;;;ME9BK,0BAA0B,CAAA;AAMrC,IAAA,WAAW,CAAC,GAAQ,EAAA;QAClB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAGD,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAED,IAAa,EAAE,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACvG;IAOD,WAAoB,CAAA,KAAiB,EAAU,OAA0B,EAAA;QAArD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QA1BnD,IAAK,CAAA,KAAA,GAAG,+BAA+B,CAAC;QAC/B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAqB7C,QAAA,IAAA,CAAA,UAAU,GAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;QAE9D,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAG5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,CAAC;KAChG;AAED,IAAA,oBAAoB,CAAC,WAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,4CAA4C,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;KAC3G;IAED,YAAY,CAAC,WAAmB,EAAE,aAA4B,EAAA;AAC5D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,2CAA2C,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CACnG,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAA;KACF;IAED,uBAAuB,CAAC,SAAoB,EAAE,WAAmB,EAAA;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,6CAA6C,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CACjG,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,uBAAuB,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;KAC5F;8GA9DU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZvC,2sGAmEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,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,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,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvDa,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,iCAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2sGAAA,EAAA,CAAA;4HAGzB,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;gBACW,KAAK,EAAA,CAAA;sBAAnC,WAAW;uBAAC,gBAAgB,CAAA;gBAI7B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOrC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAMvB,EAAE,EAAA,CAAA;sBAAd,KAAK;;;MELK,uBAAuB,CAAA;AAYlC,IAAA,WAAW,CAAC,GAAQ,EAAA;QAClB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAGD,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAED,WAAoB,CAAA,KAAiB,EAAU,gBAAgC,EAAA;QAA3D,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAtBzD,IAAK,CAAA,KAAA,GAAG,4BAA4B,CAAC;QAC5B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QAOrC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAexB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC/EJ,KAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC,EAC5F,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5BA,KAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,EACjHA,KAAG,CAAC,CAAC,KAAK,KACR,KAAK,CAAC,MAAM,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gCAAgC,CAAC;AACrE,YAAA,EAAE,EAAE,MAAM;AACa,SAAA,CAAC,CAC3B,EACD,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5C,CAAC;KACH;IAED,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB,EAAE,GAAG,CAAC,CAAC;KACT;IAED,cAAc,CAAC,UAAmB,EAAE,GAAgB,EAAA;QAClD,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,SAAS,GAAG,UAAU,KAAK,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CACvG,CAAC;AACH,SAAA;KACF;8GAzDU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8NCxBpC,8rBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,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,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,EAAAW,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8rBAAA,EAAA,CAAA;yHAGzB,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;gBACW,KAAK,EAAA,CAAA;sBAAnC,WAAW;uBAAC,gBAAgB,CAAA;gBAU7B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOrC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME7BzB,2BAA2B,CAAA;AAMtC,IAAA,WAAA,CAAoB,KAAsC,EAAA;QAAtC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiC;AACxD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CACxFO,QAAM,CAAC,CAAC,EAAE,KAAmB,EAAE,KAAK,IAAI,CAAC,EACzCC,WAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAClED,QAAM,CAAC,CAAC,KAAK,KAAqB,KAAK,KAAK,IAAI,CAAC,CAClD,CAAC;KACH;AAED,IAAA,aAAa,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY;AACd,aAAA,IAAI,CACHE,MAAI,CAAC,CAAC,CAAC,EACPF,QAAM,CAAC,CAAC,WAAW,KAAK,WAAW,KAAK,OAAO,CAAC,CACjD;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;KACpG;8GA1BU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,6DCZxC,4xEA2DA,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,EAAAZ,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAO,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ca,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,4xEAAA,EAAA,CAAA;;;MEKtB,uBAAuB,CAAA;IAClC,iBAAiB,CAAC,KAAc,EAAE,QAAiB,EAAA;AACjD,QAAA,MAAM,EAAE,GAAGH,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE;YACF,KAAK;AACL,YAAA,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI;YACvD,KAAK,EAAE,KAAK,GAAG,EAAE,GAAG,IAAI;AACxB,YAAA,MAAM,EAAE,KAAK;SACS,CAAC;KAC1B;IAED,8BAA8B,CAAC,OAAgC,EAAE,MAAe,EAAA;QAC9E,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACtC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7E,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,kBAAkB,CAAC;AAC3B,aAAA;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO;AACL,gBAAA,GAAG,kBAAkB;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO;AACP,gBAAA,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,OAAO;aAC1C,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,8BAA8B,CAC5B,UAAiC,EACjC,OAAgB,EAChB,SAAuB,EAAA;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,CAAC,CAAC,MACC;YACC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;AACL,SAAA,CAAA,CACxB,CAAC;QACF,OAAO;AACL,YAAA,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,eAAe,CAAC,WAAW;YACjC,SAAS;YACT,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;gBACvB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE;AACvD,oBAAA,OAAO,CAAC,CAAC;AACV,iBAAA;gBACD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AAClC,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC;SACH,CAAC;KACH;AAED,IAAA,kBAAkB,CAChB,UAAiC,EACjC,OAAgB,EAChB,MAAe,EACf,iBAA0B,EAAA;QAE1B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC7E,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEjF,MAAM,eAAe,GAAgC,EAAE,CAAC;AACxD,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,GAAG,IAAI,GAAG,CACR,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,CAAQ,KAAI;AACjD,gBAAA,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU;qBAC/B,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;qBAChD,MAAM,CAAC,CAAC,CAAC,KAAiB,CAAC,KAAK,SAAS,CAAC,CAAC;AAC9C,gBAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC1B,oBAAA,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChG,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC;aACnC,EAAE,EAAE,CAAC,CACP;SACF,CAAC;QAEF,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACjC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,SAAA,CAAC,CAAC,CAAC;KACL;AAED,IAAA,kBAAkB,CAChB,UAAiC,EACjC,SAA0C,EAC1C,OAAgB,EAAA;QAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACjF,QAAA,OAAO,SAAS;AACd,cAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;cACrF,gBAAgB,CAAC;KACtB;AAED,IAAA,kBAAkB,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,QAAA,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,2BAA2B,CAAC;YACrC,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,OAAO,eAAe,CAAC;YACzB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,sFAAsF,CAAC;AAChG,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;AACjB,SAAA;KACF;IAEO,yBAAyB,CAAC,UAAiC,EAAE,OAAgB,EAAA;QACnF,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACjF,QAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1C;IAEO,yBAAyB,CAAC,MAAgB,EAAE,OAAgB,EAAA;AAClE,QAAA,OAAO,MAAM,EAAE,MAAM,GAAG,CAAC;cACrB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACnB,gBAAA,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;gBACvD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACjF,gBAAA,OAAO,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC;AACrC,aAAC,CAAC;cACF,OAAO,CAAC;KACb;IAEO,iBAAiB,CAAC,UAAiC,EAAE,iBAA0B,EAAA;QACrF,OAAO;AACL,YAAA,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,iBAAiB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;SACjH,CAAC;KACH;8GA5IU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCMrB,iCAAiC,CAAA;IAQ5C,IAAa,WAAW,CAAC,GAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EACpF,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC1C,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,OAAO,YAAY,CAAC;SACrB,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAOD,WAAoB,CAAA,KAAiB,EAAU,uBAAgD,EAAA;QAA3E,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QAzB/F,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAsBP,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;AAGvD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK;AACtB,aAAA,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;aAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EACpF,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC1C,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,OAAO,YAAY,CAAC;SACrB,CAAC,CACH,CAAC;KACH;AAEO,IAAA,UAAU,CAAC,UAAiC,EAAE,OAAgB,EAAE,MAAe,EAAA;AACrF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CACrE,UAAU,EACV,OAAO,EACP,MAAM,EACN,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;8GAzDU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,8LCnB9C,21DAsCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,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,EAAAO,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,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,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDnBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,21DAAA,EAAA,CAAA;+HAW9B,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAoBI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MEvBI,4BAA4B,CAAA;IAUvC,IAAa,EAAE,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAA+B,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC,EAC/D,IAAI,CAAC,CAAC,CAAC,CACR;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE;AACjE,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC9F,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,EAClE,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;AACH,aAAA;YAED,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,aAAA;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAChC,MAAM,CAAC,CAAC,CAAC,KAA+B,CAAC,KAAK,SAAS,CAAC,EACxD,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACvE,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,EAC1G,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACpC,MAAM,CAAC,CAAC,CAAC,KAA+B,CAAC,KAAK,SAAS,CAAC,EACxD,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACtE,MAAM,CAAC,CAAC,CAAC,KAAiB,CAAC,KAAK,SAAS,CAAC,EAC1C,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAChE,aAAA;AAAM,iBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChF,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAChE,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAC9D,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAYD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC/B;AAED,IAAA,WAAA,CACU,KAAiB,EACjB,OAAgC,EAChC,OAAgB,EAChB,gBAAkC,EAAA;QAHlC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAChC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AA5E5C,QAAA,IAAA,CAAA,UAAU,GAAgD,EAAE,CAAC,SAAS,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,cAAc,GAAwB,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,MAAM,GAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;AAItD,QAAA,IAAA,CAAA,UAAU,GAAiC,EAAE,CAAC,EAAE,CAAC,CAAC;QAqDlD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAGf,IAAI,CAAA,IAAA,GAAG,IAAI,gBAAgB,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxF,YAAA,KAAK,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrF,YAAA,UAAU,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACxE,SAAA,CAAC,CAAC;AAYD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACtG;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjH,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,SAA8B,EAAA;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC7F;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC5B,SAAA;KACF;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,UAAU;AACzB,YAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE;AAC1F,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3F;IAED,aAAa,CAAC,SAA8B,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzG,SAAA;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;QACV,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,aAAa,CAAC,SAA8B,EAAA;QAC1C,IAAI,SAAS,EAAE,eAAe,CAAC;AAC/B,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE;AACzE,YAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AAChD,YAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACrD,SAAA;AAAM,aAAA;YACL,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;YAC1C,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;AACtD,SAAA;QAED,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,IAAI,eAAe,KAAK,SAAS,CAAC,UAAU,EAAE;YAC7E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,uBAAuB,CAAC,eAAe,CAAC;gBACtC,WAAW,EAAE,SAAS,CAAC,EAAE;AACzB,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,UAAU,EAAE,eAAe;AAC5B,aAAA,CAAC,CACH,CAAC;AACH,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC;KACxG;8GA9JU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjB,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACC,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BrD,47IAsHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,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,EAAAI,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,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,EAAAP,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,iCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Fa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,47IAAA,EAAA,CAAA;sLAIkB,iBAAiB,EAAA,CAAA;sBAAvE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBASxC,EAAE,EAAA,CAAA;sBAAd,KAAK;;;MExBK,4BAA4B,CAAA;AAMvC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAFrC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAGlB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;YACtD,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;gBACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACrE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACrE;AAED,IAAA,iBAAiB,CAAC,GAAQ,EAAA;QACxB,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KAC7E;8GAvBU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8DCXzC,48DAgDA,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,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,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,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDrCa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,48DAAA,EAAA,CAAA;;;MEgBvB,0BAA0B,CAAA;IAerC,IAAa,WAAW,CAAC,EAAiC,EAAA;AACxD,QAAA,IAAI,EAAE,EAAE;AACN,YAAA,MAAM,OAAO,GAAG,EAAE,CAAC,OAAgC,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;YACxC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KACpD;AA6BD,IAAA,WAAA,CAAoB,KAAwB,EAAA;QAAxB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QA/C5C,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAGf,IAAI,CAAA,IAAA,GAA0B,QAAQ,CAAC;QACvC,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;QAetC,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QACZ,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AACR,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAwB,CAAC;AAEjD,QAAA,IAAA,CAAA,eAAe,GAAsB;AACpD,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC;AACe,QAAA,IAAA,CAAA,YAAY,GAAsB;AACjD,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,IAAS,CAAA,SAAA,GAAwB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAI3E,IAAe,CAAA,eAAA,GAAa,EAAE,CAAC;QAG/B,IAAoB,CAAA,oBAAA,GAAG,iCAAiC,CAAC;QACzD,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAIpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KAC3D;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KACpD;IACD,SAAS,GAAA;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC;AACtE,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,EAAE;YAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACzE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;AACtC,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAsC,CAAC;QACjE,YAAY,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC;AACxE,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE;YAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AACrE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;AACvC,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAsC,CAAC;QACjE,YAAY,CAAC,KAAK,EAAE,CAAC;KACtB;AAGD,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,CAAC;aAC/E,EAAE,EAAE,CAAC,CAAC;AACP,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,EAAE;AACf,oBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAGD,IAAA,QAAQ,CAAC,KAAoB,EAAA;QAC3B,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,CAAC;AAC9E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAA;KACF;IACD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAC1C,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,EAAE;AACzB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,0BAA0B,CAAC;AAC1C,gBAAA,EAAE,EAAE,sBAAsB;AAC1B,gBAAA,UAAU,EAAE,IAAI,CAAC,cAAc,IAAI,OAAO;AAC3C,aAAA,CAAC,CACH,CAAC;AACH,SAAA;KACF;AAED,IAAA,cAAc,CAAC,GAAQ,EAAA;QACrB,MAAM,KAAK,GAAG,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KAC9C;AAED,IAAA,aAAa,CAAC,GAAQ,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KACpD;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AACxF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC7B;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;KAC3E;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,oBAAoB,GAAG,iCAAiC,CAAC;KAC/D;AAED,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;YACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5D,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAChD,gBAAA,IAAI,CAAC,oBAAoB;oBACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,+BAA+B,CAAC;AACnG,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,oBAAoB,GAAG,kCAAkC,CAAC;AAChE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,oBAAoB,GAAG,iCAAiC,CAAC;AAC/D,SAAA;KACF;IAEO,UAAU,CAAC,KAAa,EAAE,OAAiB,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjC;8GA1LU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,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,IAAA,EACF,UAAU,EACT,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,wGACZ,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACR,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BhD,8nKA8IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,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,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,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtHa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,8nKAAA,EAAA,CAAA;4FAIkB,YAAY,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACG,aAAa,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACA,cAAc,EAAA,CAAA;sBAA7D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACI,gBAAgB,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACtB,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;gBACI,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBAMjB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAeI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAuDP,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAiB1C,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEnHnC,2BAA2B,CAAA;AAYtC,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAXtC,IAAc,CAAA,cAAA,GAAmB,KAAK,CAAC;QAGvC,IAAa,CAAA,aAAA,GAAmB,KAAK,CAAC;QACtC,IAAU,CAAA,UAAA,GAAmB,KAAK,CAAC;QACnC,IAAS,CAAA,SAAA,GAAmB,KAAK,CAAC;QAClC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAErB,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;KAEsB;AAEnD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,mBAAmB,GACvB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC;AAClG,QAAA,MAAM,eAAe,GACnB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAC/F,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;AACjG,QAAA,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;AAChG,QAAA,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC;AAC5G,QAAA,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC;AAC/G,QAAA,IAAI,CAAC,YAAY;;;;;AAKf,YAAA,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,IAAI,CAAC,kBAAkB,CAAC;KACvE;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5B,MAAM,IAAI,GAAG,EAAE;kBACX,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC;AAChD,kBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,YAAA,MAAM,IAAI,GAAG,IAAI,KAAK,eAAe,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAChH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,SAAA;KACF;IAEO,SAAS,CAAC,aAAsB,EAAE,MAAe,EAAA;AACvD,QAAA,OAAO,aAAa;AAClB,cAAE,MAAM;kBACJ,eAAe,CAAC,UAAU;kBAC1B,eAAe,CAAC,WAAW;AAC/B,cAAE,eAAe,CAAC,SAAS,CAAC;KAC/B;8GAlDU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gZCTxC,4OAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDKa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,4OAAA,EAAA,CAAA;uGAIxB,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;AEMF,MAAO,uBAAwB,SAAQ,wBAAwB,CAAA;AAqBnE,IAAA,WAAA,CAAoB,KAAY,EAAA;AAC9B,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QApBV,IAAK,CAAA,KAAA,GAAG,4BAA4B,CAAC;AAKlD,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;QACnD,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEvB,IAAsB,CAAA,sBAAA,GAAG,sBAAsB,CAAC;AAEtC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAwB,CAAC;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEtC,IAAe,CAAA,eAAA,GAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC3E,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;AAI3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;AACjG,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;QAC9F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KACxG;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;IAED,MAAM,GAAA;;AAEJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;AAClC,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW;AAC1C,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,IAAI,SAAS;SACtD,CAAC;QACF,QAAQ,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;YACnE,KAAK,eAAe,CAAC,SAAS;gBAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,gBAAgB;AAChB,oBAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE;AACxB,oBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;AACrC,oBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACnC,iBAAA,CAAC,CACH,CAAC;gBACF,MAAM;YACR,KAAK,eAAe,CAAC,UAAU;gBAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjG,MAAM;YACR,KAAK,eAAe,CAAC,WAAW;gBAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClG,MAAM;AACT,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,sBAAsB,EAAE;YACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAC/G,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,0BAA0B,CAAC;AAC1C,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,sBAAsB;YAClD,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;AAED,IAAA,sBAAsB,CAAC,GAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC5B;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC1B;8GAjFU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mRCzBpC,m/DAkDA,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,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,m/DAAA,EAAA,CAAA;4FAIV,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;gBAUX,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;MEZI,uBAAuB,CAAA;AAgBlC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,CAAC;KACnD;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAChE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK,eAAe,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,CAC5E,CAAC;KACH;AA2BD,IAAA,WAAA,CAAoB,KAA+E,EAAA;QAA/E,IAAK,CAAA,KAAA,GAAL,KAAK,CAA0E;QAlDlD,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAOxD,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC9B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;AAY7B,QAAA,IAAA,CAAA,OAAO,GAAG;AACR,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,QAAQ,EAAE,KAAK;SACe,CAAC;QAEjC,IAAK,CAAA,KAAA,GAA6B,EAAE,CAAC;AACnC,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AACpB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AACpB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AACpB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AACrB,SAAA,CAAC,CAAC;AAIM,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;AAG3C,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAG/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/G,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAI;YAC7F,IAAI,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;gBACxD,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpC,YAAA,WAAW,EAAE;AACX,gBAAA,UAAU,EAAE,YAAY;gBACxB,EAAE,EAAE,EAAE,EAAE;AACR,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;AAC9F,gBAAA,IAAI,EAAE,EAAE;AACT,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC;KAC/B;AAED,IAAA,sBAAsB,CAAC,OAA6B,EAAA;QAClD,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;SACnC,EAAE,EAAE,CAAC,CAAC;KACR;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,0BAA0B,CAAC;AAC1C,YAAA,EAAE,EAAE,sBAAsB;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,YAAY,GAAA;AAClB,QAAA,UAAU,CAAC,MAAM,MAAM,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACnE;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC1B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;AAED,IAAA,gBAAgB,CAAC,MAAW,EAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KAC9G;8GAtJU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+KC7BpC,4rJAiHA,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,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,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,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,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpFa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,4rJAAA,EAAA,CAAA;4FAIqB,KAAK,EAAA,CAAA;sBAArD,WAAW;uBAAC,kCAAkC,CAAA;gBAChB,gBAAgB,EAAA,CAAA;sBAA9C,WAAW;uBAAC,gBAAgB,CAAA;;;AEhBzB,MAAO,4BAA6B,SAAQ,wBAAwB,CAAA;AAIxE,IAAA,WAAA,CAAoB,KAAY,EAAU,OAAgB,EAAU,gBAAkC,EAAA;AACpG,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAGpG,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;YAC7E,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;;gBAEjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,oBAAA,WAAW,EAAE,IAAI;oBACjB,UAAU,EAAE,CAAC,0BAA0B,CAAC;AACxC,oBAAA,aAAa,EAAE,UAAU;AAC1B,iBAAA,CAAC,CACH,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;oBAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAClF,aAAA;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAChF;AAED,IAAA,IAAI,qBAAqB,GAAA;QACvB,QACE,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,MAAM;AACrD,YAAA,QAAQ,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,MAAM;AAC1D,YAAA,CAAC,EACD;KACH;8GA5CU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA5B,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAER,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB5C,yGAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDUa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,yGAAA,EAAA,CAAA;mJAKQ,QAAQ,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;AEjBvC,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,uBAAuB;AACnC,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,uBAAuB;AAC/B,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,gBAAgB,EAAE,oBAAoB;AACvC,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,MAAM,EAAE,yBAAyB;AAClC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,EAAE,EAAE,IAAI;AACT,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,iBAAiB,EAAE,gBAAgB;AACnC,gBAAA,kBAAkB,EAAE,yCAAyC;AAC7D,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,WAAW,EAAE,qBAAqB;AACnC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,eAAe,EAAE,gBAAgB;AACjC,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,iBAAiB,EAAE,cAAc;AACjC,gBAAA,eAAe,EAAE,YAAY;AAC7B,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,eAAe,EAAE,OAAO;AACxB,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,eAAe,EAAE,SAAS;AAC3B,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,QAAQ,EAAE,cAAc;AACzB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,eAAe,EAAE,iBAAiB;AAClC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,KAAK,EAAE,4BAA4B;AACnC,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,sCAAsC;AACjD,gBAAA,GAAG,EAAE,wBAAwB;AAC7B,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,kBAAkB;AAC1B,iBAAA;AACD,gBAAA,cAAc,EAAE,mCAAmC;AACnD,gBAAA,OAAO,EAAE;AACP,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,CAAC,EAAE,UAAU;AACb,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,UAAU;AACf,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,0BAA0B;AAClC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,SAAS,EAAE,qBAAqB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE,kBAAkB;AACjC,gBAAA,YAAY,EAAE,qBAAqB;AACnC,gBAAA,WAAW,EAAE,qBAAqB;AAClC,gBAAA,MAAM,EAAE,6BAA6B;AACrC,gBAAA,EAAE,EAAE,IAAI;AACT,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,WAAW,EAAE,+FAA+F;AAC7G,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;AClIM,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,UAAU,EAAE,kCAAkC;AAC9C,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,KAAK,EAAE,6BAA6B;AACrC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,gBAAgB,EAAE,wBAAwB;AAC3C,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,MAAM,EAAE,mBAAmB;AAC5B,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,EAAE,EAAE,IAAI;AACT,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,gBAAA,kBAAkB,EAAE,oDAAoD;AACxE,gBAAA,YAAY,EAAE,uBAAuB;AACrC,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,WAAW,EAAE,0BAA0B;AACxC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,eAAe,EAAE,cAAc;AAC/B,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,iBAAiB,EAAE,aAAa;AAChC,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,iBAAiB,EAAE,eAAe;AAClC,gBAAA,iBAAiB,EAAE,kBAAkB;AACrC,gBAAA,eAAe,EAAE,OAAO;AACxB,gBAAA,aAAa,EAAE,OAAO;AACtB,gBAAA,eAAe,EAAE,kBAAkB;AACnC,gBAAA,eAAe,EAAE,6BAA6B;AAC/C,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,sBAAsB;AAC9B,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,QAAQ,EAAE,gBAAgB;AAC3B,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,eAAe,EAAE,8BAA8B;AAC/C,gBAAA,IAAI,EAAE,kCAAkC;AACxC,gBAAA,KAAK,EAAE,wBAAwB;AAC/B,gBAAA,SAAS,EAAE,6BAA6B;AACxC,gBAAA,WAAW,EAAE,0BAA0B;AACvC,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,MAAM,EAAE,wBAAwB;AAChC,gBAAA,KAAK,EAAE,wBAAwB;AAC/B,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,SAAS,EAAE,kDAAkD;AAC7D,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,EAAE,OAAO;AACZ,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,KAAK,EAAE,WAAW;AACnB,iBAAA;AACD,gBAAA,cAAc,EAAE,mDAAmD;AACnE,gBAAA,OAAO,EAAE;AACP,oBAAA,KAAK,EAAE,8BAA8B;AACrC,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,EAAE,EAAE,aAAa;AACjB,oBAAA,EAAE,EAAE,aAAa;AACjB,oBAAA,EAAE,EAAE,UAAU;AACf,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,UAAU,EAAE,oBAAoB;AAChC,gBAAA,QAAQ,EAAE,yBAAyB;AACnC,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,MAAM,EAAE,qBAAqB;AAC9B,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,YAAY,EAAE,oBAAoB;AAClC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,aAAa,EAAE,yBAAyB;AACxC,gBAAA,YAAY,EAAE,yBAAyB;AACvC,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,MAAM,EAAE,wCAAwC;AAChD,gBAAA,EAAE,EAAE,MAAM;AACX,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,MAAM,EAAE,4BAA4B;AACpC,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,WAAW,EACT,sGAAsG;AACzG,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;MC/HY,qBAAqB,CAAA;IAChC,YAAY,CAAC,KAAa,EAAE,QAAkB,EAAA;QAC5C,OAAO;YACL,IAAI,EAAE,eAAe,CAAC,WAAW;AACjC,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ;AACR,YAAA,UAAU,EAAE;gBACV,KAAK;AACN,aAAA;SACF,CAAC;KACH;8GAVU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCMrB,qBAAqB,CAAA;AAwBhC,IAAA,WAAA,CACU,QAAiB,EACjB,KAAiB,EACjB,qBAA4C,EAAA;QAF5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QA1BtD,IAAO,CAAA,OAAA,GAAG,YAAY,CAAC,MACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAChE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAClE5B,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KAAI;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACvF,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,sBAAsB,KAAK,MAAM,EAAE,EAAE,EAAE;AAC5F,gBAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,oBAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,WAAW,EAAE,EAAE;AAChC,oBAAA,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI;AAClC,oBAAA,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,WAAW;AACjD,oBAAA,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU;oBAC/C,OAAO;oBACP,KAAK,EAAE,WAAW,EAAE,KAAK;AACzB,oBAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,KAAK;oBACxC,MAAM,EAAE,CAAC,CAAC,WAAW;AACtB,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SAC1C,CAAC,CACH,CACF,CAAC;KAME;8GA5BO,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MCWE,sBAAsB,CAAA;AACjC,IAAA,+BAA+B,CAAC,QAAuB,EAAA;AACrD,QAAA,MAAM,EAAE,GAAGC,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE;YACF,QAAQ;AACR,YAAA,IAAI,EAAE,KAAK;SACW,CAAC;KAC1B;IAED,gCAAgC,CAAC,QAAgB,EAAE,WAAmB,EAAA;AACpE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,MAAM,EAAE,GAAGA,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE;YACF,QAAQ;AACR,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,QAAQ;SACI,CAAC;KAC1B;AAED,IAAA,oCAAoC,CAClC,MAAc,EACd,QAAgB,EAChB,mBAAwC,EACxC,KAA8B,EAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrC,SAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,0CAA0C,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QACjG,IAAI,IAAI,GAAG,SAA+C,CAAC;AAC3D,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,GAAG;gBACL,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,GAAG;aACrB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAA4B,CAAC;KAC9G;IAEO,0CAA0C,CAChD,mBAAwC,EACxC,WAAmB,EAAA;QAEnB,MAAM,IAAI,GAAwB,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5E,QAAA,MAAM,OAAO,GACX,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAU,KACjE,IAAI,CAAC,0CAA0C,CAAC,mBAAmB,EAAE,EAAE,CAAC,CACzE,IAAI,EAAE,CAAC;AACV,QAAA,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS;YAClD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;YACvE,OAAO,SAAS,CAAC,UAAU,CAAC;AAC7B,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,wBAAwB,CACtB,IAAe,EACf,QAAgB,EAChB,OAAgB,EAChB,MAAe,EACf,QAAiB,EACjB,IAA+C,EAAA;QAE/C,IAAI,UAAU,GAAG,SAAoC,CAAC;AACtD,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,UAAU,GAAG;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,IAAI,CAAC,SAAuB;aAClC,CAAC;AACH,SAAA;QACD,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAC/C,YAAA,MAAM,EAAE,GAAG,QAAQ,IAAIA,EAAM,EAAE,CAAC;YAChC,IAAI,IAAI,EAAE,QAAQ,EAAE;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACvG,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,EACzC,EAA2B,CAC5B,CAAC;gBACF,OAAO;oBACL,EAAE;AACF,oBAAA,UAAU,EAAE;AACV,wBAAA,GAAG,kBAAkB;AACrB,wBAAA;4BACE,EAAE;4BACF,QAAQ,EAAE,QAAQ,IAAI,IAAI;4BAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,QAAQ,EAAE,GAAG;AACd,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE,UAAU;iBACjB,CAAC;AACH,aAAA;YACD,OAAO;gBACL,EAAE;AACF,gBAAA,UAAU,EAAE;AACV,oBAAA;wBACE,EAAE;wBACF,QAAQ,EAAE,QAAQ,IAAI,IAAI;wBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,EAAE,UAAU;aACjB,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,EAAE,GAAG,QAAQ,IAAIA,EAAM,EAAE,CAAC;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAwB,KAAK;AAC1C,kBAAE;oBACE,EAAE;oBACF,QAAQ,EAAE,QAAQ,IAAI,IAAI;AAC1B,oBAAA,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACvC,oBAAA,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;AACzC,iBAAA;AACH,kBAAE;oBACE,EAAE;oBACF,QAAQ,EAAE,QAAQ,IAAI,IAAI;AAC1B,oBAAA,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,EAAE,SAAS;oBAC1B,QAAQ,EAAE,IAAI,EAAE,QAAQ;oBACxB,KAAK,EAAE,IAAI,EAAE,KAAK;iBACnB,CAAC;YACN,OAAO;gBACL,EAAE;gBACF,UAAU,EAAE,CAAC,SAAS,CAAC;AACvB,gBAAA,IAAI,EAAE,UAAU;aACjB,CAAC;AACH,SAAA;KACF;AAED,IAAA,kBAAkB,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,QAAA,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,2BAA2B,CAAC;YACrC,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,OAAO,eAAe,CAAC;YACzB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,sFAAsF,CAAC;AAChG,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;AACjB,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,WAA+B,EAAE,OAAgB,EAAE,MAAe,EAAA;QAC9F,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QACD,MAAM,SAAS,GAAG,OAAO;AACtB,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,EAAiB,CAAC;AACxE,aAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,CAAC,CAAC;KACtD;8GA5KU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,sBAAsB,CAAA;AACjC,IAAA,WAAA,CACU,QAAiB,EACjB,aAA4B,EAC5B,sBAA8C,EAC9C,KAAiB,EAAA;QAHjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAG3B,IAAkB,CAAA,kBAAA,GAAG,YAAY,CAAC,MAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,EACpD9B,KAAG,CAAC,MAAK;YACP,MAAM,SAAS,GAAwB,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;YACzG,OAAO,sBAAsB,CAAC,2BAA2B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;SAC1E,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,gCAAgC,GAAG,YAAY,CAAC,MAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,6CAA6C,CAAC,EAC5E,QAAQ,CAAC,CAAC,MAAM,KACd,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAC/G,EACDA,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAI;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC;AAChD,YAAA,MAAM,SAAS,GAAwB;AACrC,gBAAA,GAAG,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxG,MAAM;gBACN,OAAO;aACR,CAAC;YAEF,OAAO,sBAAsB,CAAC,oCAAoC,CAAC;gBACjE,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS;AACV,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CACF,CAAC;QAEF,IAA+B,CAAA,+BAAA,GAAG,YAAY,CAAC,MAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,4CAA4C,CAAC,EAC3EA,KAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,SAAS,GAAwB,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAChG,MAAM,CAAC,WAAW,CACnB,CAAC;YACF,OAAO,sBAAsB,CAAC,oCAAoC,CAAC;gBACjE,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS;AACV,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CACF,CAAC;QAEF,IAA0B,CAAA,0BAAA,GAAG,YAAY,CAAC,MACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,EAC5D,QAAQ,CAAC,CAAC,MAAM,KACd,aAAa,CAAC;YACZ,EAAE,CAAC,MAAM,CAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9F,SAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CACjB,EACDO,WAAS,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAI;YAChC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACzF,YAAA,MAAM,aAAa,GAAG,sBAAsB,CAAC,2BAA2B,CAAC;AACvE,gBAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI;gBACpC,UAAU,EAAE,SAAS,CAAC,EAAE;AACzB,aAAA,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAU,KAC1D,sBAAsB,CAAC,6BAA6B,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAC1E,CAAC;AACF,YAAA,OAAO,gBAAgB;kBACnB,CAAC,gBAAgB,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC;AACxD,kBAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;SACvC,CAAC,CACH,CACF,CAAC;QAEF,IAAsB,CAAA,sBAAA,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,EAClE,cAAc,CACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EACnE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,EAC7E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,EACrE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,EACjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CACnD,EACDP,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAI;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,oCAAoC,CAC9E,MAAM,IAAI,EAAE,EACZ,QAAQ,IAAI,EAAE,EACd,UAAU,EACV,KAAK,CACN,CAAC;AACF,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,sBAAsB,KAAK,MAAM,EAAE,EAAE,EAAE;AAC7F,gBAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,oBAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,WAAW,EAAE,EAAE;AAChC,oBAAA,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI;AAClC,oBAAA,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,WAAW;AACjD,oBAAA,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU;oBAC/C,OAAO;oBACP,KAAK,EAAE,WAAW,EAAE,KAAK;AACzB,oBAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,KAAK;oBACxC,MAAM,EAAE,CAAC,CAAC,WAAW;AACtB,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SAC1C,CAAC,CACH,CACF,CAAC;QAEF,IAAuB,CAAA,uBAAA,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,EACrD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EACnG,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAI;YACrC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACnD,YAAA,MAAM,QAAQ,GAAGF,EAAM,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CACrE,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR,IAAI,CACL,CAAC,UAAU,CAAC;AACb,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,OAAO;gBACL,sBAAsB,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACpD,gBAAA,sBAAsB,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC;AAC9C,gBAAA,sBAAsB,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;gBAChD,sBAAsB,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACjD,gBAAA,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAuB,EAAE,CAAC;aACpG,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAQ,CAAA,QAAA,GAAG,YAAY,CAAC,MACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC7C,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAClE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KAAI;YACjC,MAAM,OAAO,GAAG,EAAc,CAAC;YAC/B,IAAI,CAAC,CAAC,WAAW,EAAE;gBACjB,MAAM,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrE,gBAAA,IAAI,IAAI,KAAK,eAAe,CAAC,WAAW,EAAE;AACxC,oBAAA,OAAO,CAAC,IAAI,CACV,uBAAuB,CAAC,sBAAsB,CAAC;wBAC7C,OAAO,EAAE,WAAW,CAAC,OAAkC;AACxD,qBAAA,CAAC,CACH,CAAC;AACH,iBAAA;AACD,gBAAA,IAAI,IAAI,KAAK,eAAe,CAAC,UAAU,EAAE;AACvC,oBAAA,OAAO,CAAC,IAAI,CACV,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAiC,EAAE,CAAC,CAC1G,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;SAChB,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACzE,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC7C,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,WAAW,EAAE,EAAE,sBAAsB,CAAC,WAAW,EAAE,CAAC,CAAC,CAC9F,CACF,CAAC;KAzKE;8GANO,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAgC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA9B,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;MCPE,uBAAuB,CAAA;AAClC,IAAA,WAAA,CACU,QAAiB,EACjB,KAAiB,EACjB,iBAA0C,EAAA;QAF1C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAyB;QAGpD,IAAa,CAAA,aAAA,GAAG,YAAY,CAAC,MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EACpDD,KAAG,CAAC,MAAK;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;YAC7D,OAAO,uBAAuB,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;SACtE,CAAC,CACH,CACF,CAAC;QACF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EACpD,QAAQ,CAAC,CAAC,MAAM,KACd,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,KAAK;iBACP,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACtE,iBAAA,IAAI,CAACM,QAAM,CAAC,CAAC,CAAC,KAA+B,CAAC,KAAK,SAAS,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CACjB,EACDN,KAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,KAAI;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC;YAChD,OAAO,uBAAuB,CAAC,sBAAsB,CAAC;gBACpD,WAAW,EAAE,SAAS,CAAC,EAAE;gBACzB,OAAO;gBACP,MAAM;AACP,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,CAAC,IAAI,CAAC,EACpE,cAAc,CACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,EACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CACnD,EACDA,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,KAAI;AAC5D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtG,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,uBAAuB,CAAC,IAAI,CAAC,IAAI,IAAI,sBAAsB,KAAK,WAAW,EAAE,EAAE,EAAE;AACnG,gBAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,oBAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,WAAW,EAAE,EAAE;AAChC,oBAAA,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI;AAClC,oBAAA,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,WAAW;AACjD,oBAAA,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU;oBAC/C,OAAO;oBACP,KAAK,EAAE,WAAW,EAAE,KAAK;AACzB,oBAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,KAAK;oBACxC,MAAM,EAAE,CAAC,CAAC,WAAW;AACtB,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SAC1C,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,EACtD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EACxD,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjG,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,OAAO;AACL,gBAAA,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;AACxD,gBAAA,uBAAuB,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;aACvD,CAAC;SACH,CAAC,CACH,CACF,CAAC;KA3EE;8GALO,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MC+EE,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,mBAAmC,EAAA;QAAnC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;QACrD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;KACxE;8GAJU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBArBxB,0BAA0B;YAC1B,iCAAiC;YACjC,2BAA2B;YAC3B,qBAAqB;YACrB,uBAAuB;YACvB,sBAAsB;YACtB,2BAA2B;YAC3B,qBAAqB;YACrB,4BAA4B;YAC5B,4BAA4B;YAC5B,iCAAiC;YACjC,0BAA0B;YAC1B,2BAA2B;YAC3B,uBAAuB;YACvB,4BAA4B;YAC5B,qBAAqB;YACrB,uBAAuB;AACvB,YAAA,qBAAqB,aAzCrB,YAAY;AACZ,YAAA,aAAa,2EAIb,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,mBAAmB;AACnB,YAAA,aAAa,aAsBL,uBAAuB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YA7CxB,YAAY;YACZ,aAAa;AACb,YAAA,WAAW,CAAC,UAAU,CAAC,0BAA0B,EAAE,uBAAuB,CAAC;AAC3E,YAAA,WAAW,CAAC,UAAU,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;YACzE,aAAa,CAAC,UAAU,CAAC,CAAC,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;YAClG,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAwBJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBA/C3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;AACb,wBAAA,WAAW,CAAC,UAAU,CAAC,0BAA0B,EAAE,uBAAuB,CAAC;AAC3E,wBAAA,WAAW,CAAC,UAAU,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;wBACzE,aAAa,CAAC,UAAU,CAAC,CAAC,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;wBAClG,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,oBAAoB;wBACpB,aAAa;wBACb,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,aAAa;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,iCAAiC;wBACjC,2BAA2B;wBAC3B,qBAAqB;wBACrB,uBAAuB;wBACvB,sBAAsB;wBACtB,2BAA2B;wBAC3B,qBAAqB;wBACrB,4BAA4B;wBAC5B,4BAA4B;wBAC5B,iCAAiC;wBACjC,0BAA0B;wBAC1B,2BAA2B;wBAC3B,uBAAuB;wBACvB,4BAA4B;wBAC5B,qBAAqB;wBACrB,uBAAuB;wBACvB,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,qBAAqB,CAAC;AACpH,iBAAA,CAAA;;;ACjGD;;AAEG;;;;"}