@firestitch/filter 18.2.76 → 18.2.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/services/saved-filter-controller.service.ts","../../src/app/enums/action-mode.enum.ts","../../src/app/enums/action-type.enum.ts","../../src/app/enums/button-style.ts","../../src/app/enums/item-date-mode.enum.ts","../../src/app/enums/item-type.enum.ts","../../src/app/enums/menu-action-mode.enum.ts","../../src/app/enums/picker-view-type.enum.ts","../../src/app/models/action-menu-item.model.ts","../../src/app/models/action.model.ts","../../src/app/classes/actions-controller.ts","../../src/app/directives/focus-to-item.directive.ts","../../src/app/directives/heading.directive.ts","../../src/app/directives/status-bar.directive.ts","../../src/app/models/filter-config.ts","../../src/app/helpers/compare.ts","../../src/app/helpers/encode-query-parm.ts","../../src/app/helpers/find-value.ts","../../src/app/helpers/get-range-name.ts","../../src/app/helpers/parse-date.ts","../../src/app/helpers/query-param-transformers.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/models/items/base-item.ts","../../src/app/models/items/base-date-range-item.ts","../../src/app/models/items/date-range-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/models/items/week-item.ts","../../src/app/helpers/restore-items.ts","../../src/app/models/items/base-autocomplete-item.ts","../../src/app/models/items/autocomplete-chips-item.ts","../../src/app/models/items/autocomplete-item.ts","../../src/app/models/items/checkbox-item.ts","../../src/app/models/items/chips-item.ts","../../src/app/models/items/base-date-item.ts","../../src/app/models/items/date-item.ts","../../src/app/models/items/date-time-item.ts","../../src/app/models/items/text-item.ts","../../src/app/models/items/keyword-item.ts","../../src/app/models/items/select-item.ts","../../src/app/helpers/create-filter-item.ts","../../src/app/services/keyword-controller.service.ts","../../src/app/services/persistance-controller.service.ts","../../src/app/services/sort-controller.service.ts","../../src/app/services/query-param-controller.service.ts","../../src/app/services/filter-controller.service.ts","../../src/app/services/focus-controller.service.ts","../../src/app/services/root-filter-overlay.service.ts","../../src/app/components/action-button/action-button.component.ts","../../src/app/components/action-button/action-button.component.html","../../src/app/components/action-kebab-actions/action-kebab-actions.component.ts","../../src/app/components/action-kebab-actions/action-kebab-actions.component.html","../../src/app/components/actions/actions.component.ts","../../src/app/components/actions/actions.component.html","../../src/app/injectors/filter-config.ts","../../src/app/injectors/filter-drawer-data.ts","../../src/app/injectors/filter-drawer-overlay.ts","../../src/app/components/filters-item/base-item/base-item.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.html","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.ts","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.html","../../src/app/components/filters-item/checkbox/checkbox.component.ts","../../src/app/components/filters-item/checkbox/checkbox.component.html","../../src/app/components/filters-item/chips/chips.component.ts","../../src/app/components/filters-item/chips/chips.component.html","../../src/app/components/filters-item/date-range/date-range.component.ts","../../src/app/components/filters-item/date-range/date-range.component.html","../../src/app/components/filters-item/date/date.component.ts","../../src/app/components/filters-item/date/date.component.html","../../src/app/components/filters-item/range/range.component.ts","../../src/app/components/filters-item/range/range.component.html","../../src/app/components/filters-item/select/select.component.ts","../../src/app/components/filters-item/select/select.component.html","../../src/app/components/filters-item/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/components/filters-item/week/week.component.ts","../../src/app/components/filters-item/week/week.component.html","../../src/app/components/filters-item/filter-item.component.ts","../../src/app/components/filters-item/filter-item.component.html","../../src/app/components/filter-item-dialog/filter-item-dialog.component.ts","../../src/app/components/filter-item-dialog/filter-item-dialog.component.html","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.html","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.ts","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.html","../../src/app/components/filter-chips/filter-chips.component.ts","../../src/app/components/filter-chips/filter-chips.component.html","../../src/app/components/keyword-input/keyword-input.component.ts","../../src/app/components/keyword-input/keyword-input.component.html","../../src/app/components/filter/filter.component.ts","../../src/app/components/filter/filter.component.html","../../src/app/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["import { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n} from '../interfaces/saved-filters.interface';\n\nimport type { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class SavedFilterController implements OnDestroy {\n\n private _filterController: FilterController;\n private _savedFilters$ = new BehaviorSubject<IFilterSavedFilter[]>([]);\n private _activeFilter$ = new BehaviorSubject<IFilterSavedFilter>(null);\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _destroy$ = new Subject<void>();\n private _prompt = inject(FsPrompt);\n\n public get singularLabel(): string {\n return this._filterController.config.savedFilters?.label?.singular || 'Saved filter';\n }\n\n public get singularLabelLower(): string {\n return this.singularLabel.toLowerCase();\n }\n\n public get labelIcon(): string {\n return this._filterController.config.savedFilters?.label?.icon || 'save';\n }\n\n public get pluralLabel(): string {\n return this._filterController.config.savedFilters?.label?.plural || 'Saved filters';\n }\n\n public get pluralLabelLower(): string {\n return this.pluralLabel.toLowerCase();\n }\n\n public get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilters$.getValue();\n }\n\n public set savedFilters(filters: IFilterSavedFilter[]) {\n this._savedFilters$.next(filters);\n }\n\n public get savedFilters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilter(): IFilterSavedFilter {\n return this._activeFilter$.getValue();\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._activeFilter$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilterData(): KeyValue {\n return this._activeFilter$.getValue()?.filters;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(\n filterController: FilterController,\n ): Observable<any> {\n this._filterController = filterController;\n \n if (!filterController.config.savedFilters) {\n this._setEnabledStatus(false);\n\n return of(null);\n }\n\n this._setEnabledStatus(true);\n\n return this.load();\n }\n\n public saveAs(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: 'Save as new',\n label: 'Name',\n required: true,\n commitLabel: 'Save',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n id: null,\n name,\n };\n\n return this.save(data);\n }),\n );\n }\n\n public initSavedFilters(savedFilters: IFilterSavedFilter[]): void {\n this.savedFilters = savedFilters;\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this._activeFilter$.next(acitveFilter);\n }\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n if (!this.enabled) {\n return of([]);\n }\n\n return this._filterController.config.savedFilters.load()\n .pipe(\n tap((savedFilters) => {\n this.initSavedFilters(savedFilters);\n }),\n );\n }\n\n public create(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: `Create ${this.singularLabelLower}`,\n label: 'Name',\n required: true,\n commitLabel: 'Create',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n };\n\n return this.save(data);\n }),\n tap((savedFilter) => {\n this.setActiveFilter(savedFilter);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n savedFilter = {\n ...(this.activeFilter || {}),\n ...savedFilter,\n filters: this._filterController.items\n .filter((item) => item.hasValue)\n .reduce((accum, item) => {\n return {\n ...accum,\n [item.name]: item.value,\n };\n }, {}),\n }; \n\n return this._filterController.config.savedFilters\n .save(savedFilter)\n .pipe(\n tap((_savedFilter) => {\n const exists = this.savedFilters.find((f) => f.id === _savedFilter.id);\n\n this.savedFilters = exists ? \n this.savedFilters\n .map((item) => item.id === _savedFilter.id ? _savedFilter : item) : \n [...this.savedFilters, _savedFilter];\n \n this.setActiveFilter(_savedFilter);\n }),\n );\n }\n\n public get orderable(): boolean {\n return !!this._filterController.config.savedFilters.order;\n }\n\n public order(savedFilters: IFilterSavedFilter[]): Observable<IFilterSavedFilter[]> {\n return this._filterController.config.savedFilters\n .order(savedFilters)\n .pipe(\n tap(() => {\n this.savedFilters = [\n ...savedFilters,\n ];\n }),\n );\n }\n\n public delete(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._filterController.config.savedFilters\n .delete(savedFilter)\n .pipe(\n tap(() => {\n this.savedFilters = this.savedFilters\n .filter((f) => f.id !== savedFilter.id);\n \n if (this.activeFilter?.id === savedFilter.id) {\n this.setActiveFilter(null);\n }\n }),\n );\n }\n\n public setActiveFilter(savedFilter: IFilterSavedFilter): void {\n if (savedFilter) {\n const existingFilter = this.savedFilters\n .find((f) => f.id === savedFilter.id);\n\n if (!existingFilter) {\n throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);\n }\n\n this._filterController.values = existingFilter.filters; \n this._activeFilter$.next(existingFilter);\n } else {\n this._activeFilter$.next(null);\n }\n }\n\n private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\n }\n}\n","export enum ActionMode {\n Button = 'button',\n SelectButton = 'selectButton',\n Menu = 'menu',\n File = 'file',\n}\n","import { ButtonStyle } from './button-style';\n\nexport enum ActionType {\n Basic = ButtonStyle.Basic,\n Raised = ButtonStyle.Raised,\n Icon = ButtonStyle.Icon,\n Fab = ButtonStyle.Fab,\n MiniFab = ButtonStyle.MiniFab,\n Flat = ButtonStyle.Flat,\n Stroked = ButtonStyle.Stroked, \n}\n","export enum ButtonStyle {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab',\n Flat = 'flat',\n Stroked = 'stroked',\n}\n","export enum ItemDateMode {\n Calendar = 'calendar',\n ScrollMonthYear = 'monthyear',\n ScrollMonthDayYear = 'monthdayyear'\n}\n","export enum ItemType {\n Text = 'text',\n Select = 'select',\n Range = 'range',\n Date = 'date',\n DateTime = 'datetime',\n DateRange = 'daterange',\n Week = 'week',\n DateTimeRange = 'datetimerange',\n AutoComplete = 'autocomplete',\n AutoCompleteChips = 'autocompletechips',\n Checkbox = 'checkbox',\n Chips = 'chips',\n Keyword = 'keyword',\n}\n","export enum MenuActionMode {\n Menu = 'menu',\n File = 'file',\n Group = 'group',\n}\n","export enum PickerViewType {\n Date = \"date\",\n DateTime = \"datetime\",\n Time = \"time\",\n Week = \"week\",\n MonthRange = \"monthrange\"\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { MenuActionMode } from '../enums';\nimport {\n FsFilterActionClickFn, FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterMenuActionFileItem,\n IFsFilterMenuActionGroupItem,\n IFsFilterMenuActionItem, IFsFilterMenuActionLink,\n} from '../interfaces/action.interface';\n\n\nexport class ActionMenuItem {\n\n public icon: string;\n public label: string;\n public mode: MenuActionMode;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public click: FsFilterActionClickFn;\n public routerLink: IFsFilterMenuActionLink;\n public items: ActionMenuItem[] = [];\n\n private _isGroup = false;\n private _showFn: FsFilterActionShowFn;\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem = {},\n private _parent?: ActionMenuItem,\n ) {\n this._init(config);\n }\n\n public get isGroup(): boolean {\n return this._isGroup;\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || !this.isGroup) {\n this._visible$.next(visible);\n\n return;\n }\n\n const numberOfVisibleChildren = this.items\n .reduce((acc, item) => {\n item.updateVisibility();\n\n if (item.visible) {\n acc++;\n }\n\n return acc;\n }, 0);\n\n this._visible$.next(!!numberOfVisibleChildren);\n }\n\n private _initFile(config: IFsFilterMenuActionFileItem): void {\n this.multiple = config.multiple;\n this.accept = config.accept;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.imageQuality = config.imageQuality;\n this.fileSelected = config.fileSelected;\n }\n\n private _init(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem | IFsFilterMenuActionFileItem,\n ) {\n this.label = config.label;\n this.icon = config.icon;\n this.mode = config.mode || MenuActionMode.Menu;\n this._showFn = config.show;\n\n if (this.mode === MenuActionMode.File) {\n this._initFile(config as IFsFilterMenuActionFileItem);\n }\n\n if ('items' in config) {\n this._isGroup = true;\n\n if (Array.isArray(config.items)) {\n this.items = config\n .items\n .map((item) => new ActionMenuItem(item, this));\n }\n\n this.updateVisibility();\n } else {\n this.click = config.click;\n this.routerLink = config.link;\n\n if (!this._parent) {\n this.updateVisibility();\n }\n }\n }\n}\n","import { ThemePalette } from '@angular/material/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ButtonStyle } from '../enums';\nimport { ActionMode } from '../enums/action-mode.enum';\nimport {\n FsFilterAction,\n FsFilterActionClickFn,\n FsFilterActionDisabledFn,\n FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterFileAction,\n IFsFilterSelectButtonAction,\n} from '../interfaces/action.interface';\n\nimport { ActionMenuItem } from './action-menu-item.model';\nimport { FsFilterConfig } from './filter-config';\n\n\nexport class Action {\n\n public primary = true;\n public icon: string;\n public iconPlacement: 'left' | 'right';\n public label: string;\n public value: any;\n public menu: boolean;\n public color: ThemePalette;\n public customize: boolean;\n public className: string;\n public click: FsFilterActionClickFn;\n public style: ButtonStyle;\n public tabIndex: number;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public tooltip: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public change: (value: any) => void;\n public values: any[];\n public mode: ActionMode;\n public isReorderAction = false;\n public deselect = false;\n public classArray: string[] = [];\n public items: ActionMenuItem[] = [];\n\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n private _showFn: FsFilterActionShowFn;\n private _disabledFn: FsFilterActionDisabledFn;\n\n constructor(filterConfig: FsFilterConfig, actionConfig: FsFilterAction = {}) {\n this._init(filterConfig, actionConfig);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || this.mode !== ActionMode.Menu) {\n this._visible$.next(visible);\n\n return;\n }\n\n const hasVisibleChildren = this.items.some((item) => item.visible);\n this._visible$.next(hasVisibleChildren);\n }\n\n public updateDisabledState(): void {\n if (this._disabledFn) {\n this.disabled = this._disabledFn();\n }\n }\n\n private _init(filterConfig: FsFilterConfig, config: FsFilterAction = {}): void {\n config.mode = config.mode ?? ActionMode.Button;\n this._initCore(filterConfig, config);\n\n switch (config.mode) {\n case ActionMode.Button: {\n this.customize = config.customize;\n this.click = config.click ?? (() => {\n // do nothing\n });\n this._disabledFn = config.disabled;\n\n this.updateDisabledState();\n } break;\n\n case ActionMode.Menu: {\n if (config.items && Array.isArray(config.items)) {\n this.items = config.items.map((item) => new ActionMenuItem(item));\n }\n } break;\n\n case ActionMode.SelectButton: {\n this._initSelectButton(config);\n } break;\n\n case ActionMode.File: {\n this._initFile(config);\n } break;\n }\n\n this.updateVisibility();\n }\n\n private _initCore(filterConfig: FsFilterConfig, config: FsFilterAction): void {\n this.primary = config.primary ?? true;\n this.color = config.color;\n this.tooltip = config.tooltip;\n this.label = config.label;\n this.mode = config.mode;\n this.icon = config.icon;\n this.iconPlacement = config.iconPlacement;\n this._showFn = config.show;\n this.tabIndex = config.tabIndex ?? 0;\n this.menu = config.menu;\n\n if (!this.style) {\n this.style = config.icon && !config.label ?\n ButtonStyle.Icon :\n (config.style || filterConfig.buttonStyle || ButtonStyle.Flat);\n\n if(!this.primary && this.style === ButtonStyle.Flat) {\n this.style = ButtonStyle.Stroked;\n }\n }\n\n if (config.className) {\n this.className = config.className;\n this.classArray = this.className\n .split(' ');\n }\n\n if (!this.primary && this.mode === ActionMode.SelectButton) {\n this.color = null; // should be null because of styles logic in select-button\n }\n\n if (this.primary) {\n this.color = 'primary';\n }\n\n }\n\n private _initSelectButton(config: IFsFilterSelectButtonAction): void {\n this.values = config.values;\n this.value = config.default;\n this.change = config.change;\n this.deselect = config.deselect ?? false;\n }\n\n private _initFile(config: IFsFilterFileAction): void {\n this.fileSelected = config.select;\n this.fileError = config.error;\n this.accept = config.accept;\n this.imageQuality = config.imageQuality;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.click = config.click ?? (() => {\n //\n });\n this._disabledFn = config.disabled;\n\n if ((config).multiple !== undefined) {\n this.multiple = (config).multiple;\n }\n\n this.updateDisabledState();\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { Action } from '../models/action.model';\nimport { FsFilterConfig } from '../models/filter-config';\n\n\n@Injectable()\nexport class ActionsController implements OnDestroy {\n private _breakpointObserver = inject(BreakpointObserver);\n\n\n private _visible$ = new BehaviorSubject(false);\n private _actions$ = new BehaviorSubject<Action[]>([]);\n private _menuActions$ = new BehaviorSubject<Action[]>([]);\n private _destroy$ = new Subject<void>();\n private _config: FsFilterConfig;\n\n private readonly _mobileMedia = '(max-width: 799px)';\n private _allActions: Action[] = [];\n private _reorderAction: Action;\n\n constructor() {\n this._listenMobileMedia();\n }\n\n public get menuActions(): Action[] {\n return this._menuActions$.value;\n }\n\n public get actions(): Action[] {\n return this._actions$.value;\n }\n\n public get actions$(): Observable<Action[]> {\n return this._actions$.asObservable();\n }\n\n public get menuActions$(): Observable<Action[]> {\n return this._menuActions$.asObservable();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public get mobileMode(): boolean {\n return this._breakpointObserver.isMatched(this._mobileMedia);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config: FsFilterConfig) {\n this._config = config;\n this.initActions(config.actions);\n }\n\n public initActions(rawActions: FsFilterAction[]) {\n if (!rawActions || !Array.isArray(rawActions)) {\n return;\n }\n\n this.show();\n\n this._allActions = rawActions\n .map((action) => new Action(this._config, action));\n\n if (this._reorderAction) {\n this._allActions.unshift(this._reorderAction);\n }\n\n this._classifyActions();\n }\n\n public show() {\n this._visible$.next(true);\n }\n\n public hide() {\n this._visible$.next(false);\n }\n\n public addReorderAction(action: Action) {\n this._allActions.unshift(action);\n\n action.isReorderAction = true;\n\n this._classifyAction(action);\n this._reorderAction = action;\n }\n\n public clearActions() {\n this._allActions = [];\n this._setActions([]);\n this._setKebabActions([]);\n }\n\n public updateActionsVisibility() {\n this._allActions.forEach((action) => action.updateVisibility());\n this._classifyActions();\n }\n\n public updateDisabledState() {\n this.actions.forEach((action) => action.updateDisabledState());\n }\n\n private _setKebabActions(actions: Action[]) {\n this._menuActions$.next(actions);\n }\n\n private _setActions(actions: Action[]) {\n this._actions$.next(actions);\n }\n\n private _classifyActions() {\n const kebabActions = [];\n const actions = [];\n const mobileMode = this.mobileMode;\n\n this._allActions\n .filter((action) => {\n return action.visible;\n })\n .forEach((action) => {\n if (action.menu !== false && (action.menu || mobileMode)) {\n kebabActions.push(action);\n } else {\n actions.push(action);\n }\n });\n\n this._setKebabActions(kebabActions);\n this._setActions(actions);\n }\n\n private _classifyAction(action: Action) {\n if (action.menu) {\n this._setKebabActions([...this.menuActions, action]);\n } else {\n this._setActions([...this.actions, action]);\n }\n }\n\n private _listenMobileMedia() {\n this._breakpointObserver.observe(this._mobileMedia)\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._classifyActions();\n });\n }\n}\n","import { AfterViewInit, Directive, Input, inject } from '@angular/core';\n\nimport { MatInput } from '@angular/material/input';\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsAutocompleteComponent } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsComponent } from '@firestitch/autocomplete-chips';\nimport {\n DateRangePickerFromComponent, DateRangePickerToComponent,\n FsDatePickerComponent,\n FsDateScrollPickerComponent,\n} from '@firestitch/datepicker';\n\n\n@Directive({\n selector: '[fsFilterFocusTrigger]',\n standalone: true,\n})\nexport class FocusToItemDirective implements AfterViewInit {\n\n @Input('fsFilterFocusTrigger')\n public focusEnabled = true;\n\n private _targetSelect = inject(MatSelect, { optional: true, self: true });\n private _targetText = inject(MatInput, { optional: true, self: true });\n private _targetDate = inject(FsDatePickerComponent, { optional: true, self: true });\n private _targetDateScroll = inject(FsDateScrollPickerComponent, { optional: true, self: true });\n private _targetDateRangeFrom = inject(DateRangePickerFromComponent, { optional: true, self: true });\n private _targetDateRangeTo = inject(DateRangePickerToComponent, { optional: true, self: true });\n private _targetAutocomplete = inject(FsAutocompleteComponent, { optional: true, self: true });\n private _targetAutocompleteChips = inject(FsAutocompleteChipsComponent, { optional: true, self: true });\n\n\n public ngAfterViewInit(): void {\n if(this.focusEnabled) {\n this._focus();\n }\n }\n\n private _focus() {\n if(this._targetSelect) {\n this._targetSelect.open();\n }\n\n if(this._targetText) {\n this._targetText.focus();\n }\n\n if(this._targetDate) {\n this._targetDate.open();\n }\n\n if(this._targetDateScroll) {\n this._targetDateScroll.open();\n }\n\n if(this._targetDateRangeFrom) {\n this._targetDateRangeFrom.open();\n }\n\n if(this._targetDateRangeTo) {\n this._targetDateRangeTo.open();\n }\n\n if(this._targetAutocomplete) {\n this._targetAutocomplete.focus();\n }\n\n if(this._targetAutocompleteChips) {\n this._targetAutocompleteChips.focus();\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterHeading]',\n standalone: true,\n})\nexport class FilterHeadingDirective {\n templateRef = inject<TemplateRef<any>>(TemplateRef);\n\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n standalone: true,\n})\nexport class FilterStatusBarDirective {\n templateRef = inject<TemplateRef<any>>(TemplateRef);\n\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ButtonStyle } from '../enums';\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { ChangeFn, FilterSort, FsFilterAutoReload, Sort } from '../interfaces/config.interface';\nimport { IFilterSavedFiltersConfig } from '../interfaces/saved-filters.interface';\n\nimport {\n FilterButton,\n FilterConfig,\n FsFilterPersistance,\n IFilterConfigItem,\n} from './../interfaces/config.interface';\n\nexport const SortByField = 'sortName';\nexport const SortDirectionField = 'sortDirection';\n\n\nexport class FsFilterConfig {\n\n public load = true;\n public persist: FsFilterPersistance = false;\n public savedFilters: IFilterSavedFiltersConfig;\n public inline = false;\n public autofocus = false;\n public chips = false;\n public buttonStyle: ButtonStyle;\n public sortValues: any[] = null;\n public sort: Sort = null;\n public queryParam = false;\n public init: (query?: any, sort?: FilterSort | null, filter?: FilterComponent) => void;\n public change: ChangeFn;\n public reload: boolean = true;\n public autoReload: FsFilterAutoReload;\n public clear: ChangeFn;\n public sortChange: ChangeFn;\n public button: FilterButton;\n public items: IFilterConfigItem[];\n public actions: FsFilterAction[];\n public namespace: string; // for persistance\n public heading: string;\n public subheading: string;\n public maxEnabled: number;\n public minSecondaryItems: number;\n\n constructor(data: FilterConfig = {}) {\n this._init(data);\n }\n\n private _init(data: FilterConfig = {}) {\n Object.assign(this, {\n load: data.load ?? true,\n persist: data.persist,\n savedFilters: data.savedFilters,\n autofocus: data.autofocus ?? false,\n chips: data.chips ?? false,\n maxEnabled: data.maxEnabled ?? 0,\n sort: data.sort,\n queryParam: data.queryParam ?? false,\n init: data.init,\n change: data.change,\n reload: data.reload,\n autoReload: data.autoReload ? {\n ...data.autoReload,\n enabled: data.autoReload ? data.autoReload.enabled ?? true : false,\n } : null,\n clear: data.clear,\n minSecondaryItems: data.minSecondaryItems ?? 2,\n sortChange: data.sortChange,\n case: data.case ?? 'camel',\n reloadWhenConfigChanged: data.reloadWhenConfigChanged,\n items: data.items,\n actions: data.actions,\n buttonStyle: data.buttonStyle || ButtonStyle.Flat,\n heading: data.heading,\n subheading: data.subheading,\n });\n\n if (this.persist) {\n if (typeof this.persist === 'object') {\n if (this.persist.name) {\n this.namespace = this.persist.name;\n }\n }\n }\n\n if (this.clear === undefined) {\n this.clear = () => { \n //\n };\n }\n\n this._initButton(data);\n }\n\n private _initButton(data: FilterConfig): void {\n this.button = data.button;\n if (!this.button) {\n this.button = {};\n }\n\n if (this.button.label === undefined) {\n this.button.label = 'Filters';\n }\n\n if (this.button.icon === undefined) {\n this.button.icon = 'filterOutline';\n }\n\n if (this.button.style === undefined) {\n this.button.style = ButtonStyle.Raised;\n }\n\n if (this.button.color === undefined) {\n this.button.color = 'default';\n }\n }\n}\n","import { isObject } from 'lodash-es';\n\n\nexport function objectsAreEquals(obj1, obj2) {\n const oldKeys = Object.keys(obj1);\n const currKeys = Object.keys(obj2);\n\n if (oldKeys.length !== currKeys.length) {\n return false;\n }\n\n for (const key in obj1) {\n if (obj1.hasOwnProperty(key)) {\n const oldItem = obj1[key];\n const currItem = obj2[key];\n const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);\n const isObjects = isObject(oldItem) && isObject(currItem);\n\n if (isArrays && !arraysAreEquals(oldItem, currItem)) {\n return false;\n } else if (isObjects && !objectsAreEquals(oldItem, currItem)) {\n return false;\n } else if (!isArrays && !isObjects && oldItem !== currItem) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function arraysAreEquals(arr1, arr2) {\n if (arr1?.length !== arr2.length) {\n return false;\n }\n\n for (const el of arr1) {\n if (arr2.indexOf(el) === -1) {\n return false;\n }\n }\n\n return true;\n}\n","export function encodeQueryParam(value) {\n return value\n .replace(/,/g, '\\\\,')\n .replace(/:/g, '\\\\:');\n}\n","export function findValue(values, value, children) {\n for (let i = 0; i < values.length; i++) {\n const val = values[i];\n\n if (val[children]) {\n return findValue(val[children], value, children);\n }\n\n if (val.value === value) {\n return val;\n }\n }\n\n return undefined;\n}\n","export function getRangeName(name: string, range: string) {\n return name.concat(range.charAt(0).toUpperCase()).concat(range.slice(1));\n}\n","import { isDate, isValid, parseISO } from 'date-fns';\n\nexport function parseDate(value: string) {\n if (value && (!isDate(value) || !isValid(value))) {\n return parseISO(value);\n }\n\n return value;\n}\n","export function filterToQueryParam(value, name): string {\n return `${encodeURIComponent(value)}:${encodeURIComponent(name)}`;\n}\n\nexport function filterFromQueryParam(param: string): string[] {\n const parts = param.split(/(?<!\\\\):/);\n\n return [decodeURIComponent(parts[0]), decodeURIComponent(parts[1])];\n}\n\n","import { ItemType } from '../enums/item-type.enum';\nimport { SelectItem } from '../models/items';\n\nimport { getRangeName } from './get-range-name';\nimport { filterFromQueryParam } from './query-param-transformers';\n\nexport function parseItemValueFromStored(item, params) {\n const param = params[item.name];\n\n switch (item.type) {\n case ItemType.Range: {\n const min = params[getRangeName(item.name, 'min')];\n const max = params[getRangeName(item.name, 'max')];\n\n return { min: min, max: max };\n }\n\n case ItemType.DateRange: case ItemType.DateTimeRange: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n\n return { from: from, to: to };\n }\n\n case ItemType.Week: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n const period = params[`${item.name}Period`];\n\n return { from, to, period };\n }\n\n case ItemType.Select: {\n return itemTypeSelect(item, param); \n }\n\n case ItemType.Checkbox: {\n return param === 'true' || param === true;\n }\n\n case ItemType.AutoComplete: {\n const filterParts = filterFromQueryParam(param);\n\n return {\n name: filterParts[1],\n value: filterParts[0],\n };\n }\n\n case ItemType.AutoCompleteChips: \n case ItemType.Chips: {\n const filterParts = param.split(/(?<!\\\\),/);\n\n return filterParts.reduce((arry, value) => {\n const chipParts = filterFromQueryParam(value);\n\n arry.push({\n name: chipParts[1]\n .replace(/\\\\,/g, ',')\n .replace(/\\\\:/g, ':'),\n value: chipParts[0],\n });\n\n return arry;\n }, []);\n }\n\n default: {\n return param;\n }\n }\n}\n\nfunction itemTypeSelect(item: SelectItem, param) {\n if (!param) {\n return [];\n }\n\n const values = param.split(',');\n\n return values;\n}\n","\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from 'rxjs';\nimport {\n map,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { isFunction } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { IFilterDefaultFn } from '../../interfaces/items/base.interface';\n\n\nexport abstract class BaseItem<T extends IFilterConfigItem> {\n\n public name: string;\n public label: any;\n public chipLabel: string | string[];\n public defaultValueFn: IFilterDefaultFn;\n public defaultValue: any;\n public clearable: boolean;\n public placeholder: string;\n public persistanceDisabled: boolean;\n public queryParamsDisabled: boolean;\n public primary: boolean;\n public secondary: boolean;\n public changeCallback: (item: BaseItem<T>, filter: FilterComponent) => void;\n public initCallback: (item: BaseItem<T>, filter?) => void;\n\n protected readonly _type: T['type'];\n protected _valuesFn: (keyword?: string, filter?: FilterComponent) => Observable<any> | any[];\n\n private _hidden$ = new BehaviorSubject(false);\n private _value$ = new BehaviorSubject<{ value: any, emitChange: boolean }>({ value: undefined, emitChange: true });\n private _values$ = new BehaviorSubject<{ name: string, value: string|null }[]>(null);\n private _secondaryVisible$ = new BehaviorSubject(false);\n private _destroy$ = new Subject<void>();\n\n constructor(\n itemConfig: T,\n protected _filter: FilterComponent,\n ) {\n this._type = itemConfig.type;\n this._initConfig(itemConfig);\n }\n\n public secondaryShow() {\n this._secondaryVisible$.next(true);\n }\n\n public secondaryHide() {\n this._secondaryVisible$.next(false);\n }\n\n public get secondaryVisible$(): Observable<boolean> {\n return this._secondaryVisible$.asObservable();\n }\n\n public get secondaryVisible(): boolean {\n return this._secondaryVisible$.getValue();\n }\n\n public get filter(): FilterComponent {\n return this._filter;\n }\n\n public get hidden$(): Observable<boolean> {\n return this._hidden$.asObservable();\n }\n\n public get mergedLabel(): string {\n return Array.isArray(this.label) ? this.label.join(' / ') : this.label;\n }\n\n public get visible$(): Observable<boolean> {\n return this._hidden$\n .pipe(\n map((hidden) => !hidden),\n );\n }\n\n public get visible(): boolean {\n return !this._hidden$.getValue();\n }\n\n public get hidden(): boolean {\n return this._hidden$.getValue();\n }\n\n public get isTypeAutocomplete() {\n return this.type === ItemType.AutoComplete;\n }\n\n public get isTypeAutocompleteChips() {\n return this.type === ItemType.AutoCompleteChips;\n }\n\n public get isTypeChips() {\n return this.type === ItemType.Chips;\n }\n\n public get isTypeCheckbox() {\n return this.type === ItemType.Checkbox;\n }\n\n public get isTypeSelect() {\n return this.type === ItemType.Select;\n }\n\n public get isTypeDate() {\n return this.type === ItemType.Date;\n }\n\n public get isTypeDateRange() {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeRange() {\n return this.type === ItemType.Range;\n }\n\n public get isTypeDateTimeRange() {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isTypeDateTime() {\n return this.type === ItemType.DateTime;\n }\n\n public get isTypeKeyword(): boolean {\n return this.type === ItemType.Keyword;\n }\n\n public get isChipVisible(): boolean {\n return this.hasValue;\n }\n\n public get destroy$() {\n return this._destroy$.asObservable();\n }\n\n public get type(): T['type'] {\n return this._type;\n }\n\n public get hasValue() {\n return this.value !== null && this.value !== undefined;\n }\n\n public get notValue$() {\n return this.value$\n .pipe(\n map(() => !this.hasValue),\n );\n }\n\n public get hasValue$() {\n return this.value$\n .pipe(\n map(() => this.hasValue),\n );\n }\n\n public get chips$() {\n return this.value$\n .pipe(\n map(() => this.chips || []),\n );\n }\n\n public set values(values) {\n this._values$.next(values);\n }\n\n public get values() {\n return this._values$.getValue();\n }\n\n public get values$(): Observable<any> {\n return this._values$.asObservable();\n }\n\n public get valueEvent$() {\n return this._value$.asObservable();\n }\n\n public get value$() {\n return this._value$.asObservable()\n .pipe(\n map((event) => event.value),\n );\n }\n\n public get value() {\n return this._value$.getValue().value;\n }\n\n public set value(value) {\n this.setValue(value);\n }\n\n /**\n * @deprecated Use value instead\n */\n public set model(value) {\n this.value = value;\n }\n\n public setValue(value: unknown, emitChange: boolean = true) {\n this._value$.next({ value, emitChange });\n }\n\n public get queryParam(): Record<string, unknown> {\n return this.query;\n }\n\n public hide() {\n if(!this.primary) {\n this.secondaryHide();\n }\n\n this._hidden$.next(true);\n }\n\n public show() {\n if(!this.primary) {\n this.secondaryShow();\n }\n\n this._hidden$.next(false);\n }\n\n public get query(): Record<string, any> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value,\n };\n }\n\n public init(value: unknown): Observable<any> {\n return forkJoin([\n this.loadDefault(),\n this.loadValues(),\n ])\n .pipe(\n tap(() => this.initValue(value)), \n );\n }\n\n public loadDefault(): Observable<any> {\n return this.defaultValueFn()\n .pipe(\n tap((value) => {\n this.defaultValue = value;\n }),\n );\n }\n\n public loadValues() {\n return of(null)\n .pipe(\n switchMap(() => {\n if((this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips)) {\n return of([]);\n } \n\n if (typeof this._valuesFn === 'function') {\n const values = this._valuesFn();\n\n return values instanceof Observable ? values : of(values);\n }\n \n return of(this.values);\n }),\n tap((values) => {\n this.values = (values || [])\n .map((item) => ({\n ...item,\n value: (item.value ?? null) === null ? null : `${item.value}`,\n }));\n }),\n );\n }\n\n public initValue(value: unknown) {\n this.setValue(value === undefined ? this.defaultValue : value);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(undefined, emitChange);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public clearByName(name: string, emitChange: boolean = true) {\n //\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public clone(): BaseItem<T> {\n return Object.assign(\n Object.create(Object.getPrototypeOf(this)), \n this,\n );\n }\n\n public emitChange() {\n if (this.changeCallback) {\n this.changeCallback(this, this.filter);\n }\n }\n\n private _initConfig(item: T) {\n this.name = item.name;\n this.label = item.label;\n this.primary = this.isTypeKeyword || (item.primary ?? false);\n this.secondary = item.secondary ?? false;\n this.chipLabel = item.chipLabel;\n this._hidden$.next(item.hide ?? !(item.show ?? true));\n this._secondaryVisible$.next(item.secondary ?? false);\n this.clearable = item.clear ?? true;\n this.persistanceDisabled = item.disablePersist ?? false;\n this.queryParamsDisabled = item.disableQueryParams ?? false;\n this.defaultValueFn = typeof item.default === 'function' ?\n item.default as IFilterDefaultFn : () => of(item.default);\n\n if ('placeholder' in item) {\n this.placeholder = item.placeholder;\n }\n\n this.initCallback = item.init || (() => {\n //\n });\n\n this.changeCallback = item.change || (() => {\n //\n });\n\n if (isFunction(item.values)) {\n this._valuesFn = item.values;\n } else {\n this.values = item.values;\n }\n }\n \n public abstract get chips(): { name?: string, value: string, label: string }[];\n\n}\n","import { format, iso8601 } from '@firestitch/date';\n\n\nimport { isDate, isValid, parseISO } from 'date-fns';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigDateRangeItem,\n} from '../../interfaces/items/date-range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport abstract class BaseDateRangeItem extends BaseItem<IFilterConfigDateRangeItem> {\n\n public get isTypeDateRange(): boolean {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeDateTimeRange(): boolean {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get hasValue(): boolean {\n return this.value?.from instanceof Date || this.value?.to instanceof Date;\n }\n\n public setValue(value, emitChange = true) {\n let from = value?.from;\n let to = value?.to;\n\n if (value) {\n if (from && (!isDate(from) || !isValid(from))) {\n from = parseISO(from);\n }\n if (to && (!isDate(to) || !isValid(to))) {\n to = parseISO(to);\n }\n }\n\n super.setValue({ from, to }, emitChange);\n }\n\n public get queryParam(): Record<string, unknown> {\n const value: { from?: Date, to?: Date } = {};\n const paramFromName = getRangeName(this.name, 'from');\n const paramToName = getRangeName(this.name, 'to');\n\n value[paramFromName] = this.value.from ? iso8601(this.value.from) : undefined;\n value[paramToName] = this.value.to ? iso8601(this.value.to) : undefined;\n\n return value;\n }\n\n public get query(): Record<string, Date> {\n if(!this.hasValue) {\n return {};\n }\n\n const value: { from?: Date, to?: Date } = {};\n const paramFromName = getRangeName(this.name, 'from');\n const paramToName = getRangeName(this.name, 'to');\n\n if(this.value.from) {\n value[paramFromName] = this.value.from;\n }\n\n if(this.value.to) {\n value[paramToName] = this.value.to;\n }\n\n return value;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n const dateFormat = this.type === ItemType.DateRange ? 'date' : 'date-time';\n const chips = [];\n\n if (this.value?.from) {\n chips.push({\n name: 'from',\n value: format(this.value.from, dateFormat),\n label: this.label[0],\n });\n }\n\n if (this.value?.to) {\n chips.push({\n name: 'to',\n value: format(this.value.to, dateFormat),\n label: this.label[1],\n });\n }\n\n return chips;\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue({}, emitChange);\n }\n \n public clearByName(name: string, emitChange: boolean = true) {\n if (name === 'from') {\n this.setValue({ \n ...this.value,\n from: null,\n }, emitChange);\n } else if (name === 'to') {\n this.setValue({ \n ...this.value,\n to: null,\n }, emitChange);\n }\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './base-date-range-item';\n\n\nexport class DateRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateRangeItem(config, filter);\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './base-date-range-item';\n\n\nexport class DateTimeRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateTimeRangeItem(config, filter);\n }\n\n}\n","\nimport { Observable, tap } from 'rxjs';\n\nimport { isObject } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigRangeItem,\n} from '../../interfaces/items/range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class RangeItem extends BaseItem<IFilterConfigRangeItem> {\n\n public declare options: { scale?: number };\n public declare prefix: string;\n public declare suffix: string;\n \n constructor(\n itemConfig: IFilterConfigRangeItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.options = itemConfig.options;\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigRangeItem, filter: FilterComponent) {\n return new RangeItem(config, filter);\n }\n\n public get query(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n const paramMinName = getRangeName(name, 'min');\n const paramMaxName = getRangeName(name, 'max');\n\n if (isObject(value)) {\n params[paramMinName] = value.min || undefined;\n params[paramMaxName] = value.max || undefined;\n } else {\n params[paramMinName] = undefined;\n params[paramMaxName] = undefined;\n }\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n const chips = [];\n\n if (this.value.min) {\n chips.push({\n name: 'min',\n label: this.label[0],\n value: this.value.min,\n });\n }\n\n if (this.value.max) {\n chips.push({\n name: 'max',\n label: this.label[1],\n value: this.value.max,\n });\n }\n\n return chips;\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue({}, emitChange);\n }\n\n public clearByName(name: string, emitChange: boolean = true) {\n if (name === 'min') {\n this.setValue({ ...this.value, min: undefined }, emitChange);\n } else if (name === 'max') {\n this.setValue({ ...this.value, max: undefined }, emitChange);\n }\n }\n\n public get hasValue() {\n return this.value?.min !== undefined || super.value?.max !== undefined;\n }\n\n public setValue(value: { min?: string, max?: string }, emitChange: boolean = true) {\n super.setValue({\n min: value?.min,\n max: value?.max,\n }, emitChange);\n }\n\n public init(value: unknown): Observable<unknown> {\n return super.init(value)\n .pipe(\n tap(() => {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n\n if (!this.value) {\n this.value = this.defaultValue || {};\n }\n }),\n );\n }\n}\n","import { formatPeriodObject } from '@firestitch/datepicker';\n\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport { parseDate } from '../../helpers/parse-date';\nimport { IFilterConfigWeekItem } from '../../interfaces/items/week.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class WeekItem extends BaseItem<IFilterConfigWeekItem> {\n\n public declare seedDate: Date;\n \n constructor(\n itemConfig: IFilterConfigWeekItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.seedDate = itemConfig.seedDate;\n }\n\n public static create(config: IFilterConfigWeekItem, filter: FilterComponent) {\n return new WeekItem(config, filter);\n }\n\n public setValue(value, emitChange = true) {\n if (value) {\n value.from = parseDate(value.from);\n value.to = parseDate(value.to);\n value.period = parseInt(value.period, 10) || undefined;\n }\n\n super.setValue(value, emitChange);\n }\n\n public get query() {\n const value = this.value;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: value?.from || undefined,\n [paramToName]: value?.to || undefined,\n [paramPeriodName]: value?.period || undefined,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n return [\n {\n value: formatPeriodObject(this.value),\n label: this.label,\n },\n ];\n }\n}\n","import { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { WeekItem } from '../models/items/week-item';\n\nimport { getRangeName } from './get-range-name';\nimport { parseItemValueFromStored } from './parse-item-value-from-stored';\n\n\n/**\n * We need this function because when we store persisted/query/remote filter values\n * it stores with different format, ex.: Range will be stored as RangeFrom && RangeTo\n * and in this case we don't know how to restroe those values.\n *\n * This function do convertation for those kinds of stored values\n *\n * @param params\n * @param items\n * @param paramsCase\n */\nexport function restoreItems(params, items) {\n const result = {};\n\n Object.keys(params)\n .forEach((name) => {\n const item = findItemWidthName(items, name);\n\n if (item) {\n result[item.name] = parseItemValueFromStored(item, params);\n }\n });\n\n return result;\n}\n\nfunction findItemWidthName(items, name) {\n return items\n .find((filterItem) => {\n if (filterItem instanceof RangeItem) {\n return name === getRangeName(filterItem.name, 'min') ||\n name === getRangeName(filterItem.name, 'max') ||\n name === filterItem.name;\n } else if (filterItem instanceof DateRangeItem || filterItem instanceof DateTimeRangeItem) {\n return name === getRangeName(filterItem.name, 'from') ||\n name === getRangeName(filterItem.name, 'to');\n } else if (filterItem instanceof WeekItem) {\n return name === getRangeName(filterItem.name, 'from')\n || name === getRangeName(filterItem.name, 'to')\n || name === `${filterItem.name}Period`;\n }\n\n return filterItem.name === name;\n });\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseItem } from './base-item';\n\ntype AutoCompleteItem = IFilterConfigAutocompleteItem | IFilterConfigAutocompleteChipsItem;\n\nexport abstract class BaseAutocompleteItem<T extends AutoCompleteItem> extends BaseItem<T> {\n\n public search: string;\n\n public declare fetchOnFocus: boolean;\n\n public get valuesFn() {\n return this._valuesFn;\n }\n \n constructor(\n itemConfig: T,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.fetchOnFocus = itemConfig.fetchOnFocus ?? true;\n }\n\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\n\nimport { BaseAutocompleteItem } from './base-autocomplete-item';\n\n\nexport class AutocompleteChipsItem\n extends BaseAutocompleteItem<IFilterConfigAutocompleteChipsItem> {\n\n public declare chipImage: string;\n public declare chipIcon: string;\n public declare chipColor: string;\n public declare chipIconColor: string;\n public declare chipBackground: string;\n public declare chipClass: string;\n public declare panelActions: {\n label: string;\n click: (filter: FilterComponent) => void;\n }[];\n\n constructor(\n itemConfig: IFilterConfigAutocompleteChipsItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.chipImage = itemConfig.chipImage ?? 'image';\n this.chipIcon = itemConfig.chipIcon;\n this.chipIconColor = itemConfig.chipIconColor;\n this.chipColor = itemConfig.chipColor;\n this.chipBackground = itemConfig.chipBackground;\n this.chipClass = itemConfig.chipClass;\n this.panelActions = itemConfig.panelActions || [];\n }\n\n public static create(config: IFilterConfigAutocompleteChipsItem, filter: FilterComponent) {\n return new AutocompleteChipsItem(config, filter);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value\n .filter((item) => !!item.value)\n .map((item) =>{\n return `${item.value}:${encodeQueryParam(item.name)}`;\n })\n .join(','),\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value\n .filter((item) => !!item.value)\n .map((item) => item.value)\n .join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n return this.hasValue ? [\n {\n value: super.value\n .reduce((acc, i) => {\n acc.push((`${i.name}`).trim());\n\n return acc;\n }, [])\n .join(', '),\n label: this.label,\n },\n ] : [];\n }\n\n public get hasValue() {\n return Array.isArray(super.value) && super.value.length > 0;\n }\n\n public setValue(value, emitChange = true) {\n super.setValue(Array.isArray(value) ? value : [], emitChange);\n }\n\n}\n","\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseAutocompleteItem } from './base-autocomplete-item';\n\n\nexport class AutocompleteItem extends BaseAutocompleteItem<IFilterConfigAutocompleteItem> {\n\n public static create(config: IFilterConfigAutocompleteItem, filter: FilterComponent) {\n return new AutocompleteItem(config, filter);\n }\n\n public get value() {\n let value = clone(super.value);\n\n if (!super.value || super.value.value === undefined) {\n return undefined;\n }\n\n value = super.value.value;\n\n return value;\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: `${this.value.value}:${encodeQueryParam(this.value.name)}`,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n return [\n {\n value: this.value ? this.value.name : '', \n label: this.value.label,\n },\n ];\n }\n}\n","\nimport { toString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigCheckboxItem } from '../../interfaces/items/checkbox.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class CheckboxItem extends BaseItem<IFilterConfigCheckboxItem> {\n\n private declare _checked;\n private declare _unchecked;\n\n constructor(\n itemConfig: IFilterConfigCheckboxItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this._checked = itemConfig.checked ? toString(itemConfig.checked) : 'true';\n this._unchecked = itemConfig.unchecked ? toString(itemConfig.unchecked) : undefined;\n this.defaultValue = itemConfig.default;\n }\n\n public get checked(): boolean {\n return this._checked;\n }\n\n public get unchecked(): boolean {\n return this._unchecked;\n }\n \n public get hasValue(): boolean {\n return !!this.value;\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue && this._unchecked === undefined) {\n return {};\n }\n\n return {\n [this.name]: this.value ? this.checked : this.unchecked,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.value) {\n return [];\n }\n\n return [\n {\n value: 'Yes',\n label: this.label,\n },\n ];\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: 'true',\n };\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(false, emitChange);\n }\n\n}\n","\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigChipsItem } from '../../interfaces/items/chips.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class ChipsItem extends BaseItem<IFilterConfigChipsItem> {\n\n public declare multiple: boolean;\n\n constructor(\n itemConfig: IFilterConfigChipsItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.multiple = itemConfig.multiple ?? true;\n }\n \n public static create(config: IFilterConfigChipsItem, filter: FilterComponent) {\n return new ChipsItem(config, filter);\n }\n\n public get hasValue() {\n return this.value.length > 0;\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n \n return {\n [this.name]: this.value\n .map((item) => `${item.value}:${encodeQueryParam(item.name)}`)\n .join(','),\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value\n .map((item) => item.value)\n .join(','),\n };\n }\n \n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n const chips = this.value\n .reduce((acc, i) => {\n acc.push((`${i.name}`).trim());\n\n return acc;\n }, [])\n .join(', ');\n\n return [{\n value: chips,\n label: this.label,\n }];\n }\n\n\n public setValue(value, emitChange = true) {\n super.setValue(Array.isArray(value) ? value : [], emitChange);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue([], emitChange);\n }\n\n}\n","\nimport { isDate, isValid, parseISO } from 'date-fns';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport abstract class BaseDateItem extends BaseItem<IFilterConfigDateItem> {\n\n public maxYear: number;\n public mode: ItemDateMode;\n \n constructor(\n itemConfig: any,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.maxYear = itemConfig.maxYear;\n this.mode = itemConfig.mode || ItemDateMode.Calendar;\n }\n\n public setValue(value, emitChange = true) {\n if (value) {\n if (!isDate(value) || !isValid(value)) {\n value = parseISO(value);\n }\n }\n\n super.setValue(value, emitChange);\n }\n\n}\n","\nimport { format, iso8601 } from '@firestitch/date';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './base-date-item';\n\n\nexport class DateItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateItem(config, filter);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: iso8601(super.value),\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if (!this.hasValue) {\n return [];\n }\n\n let dateFormat = 'date';\n\n if (this.mode === ItemDateMode.ScrollMonthYear) {\n dateFormat = 'full-date-dayless';\n }\n\n return [\n {\n value: format(super.value, dateFormat),\n label: this.label,\n },\n ];\n }\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigDateItem,\n} from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './base-date-item';\n\n\nexport class DateTimeItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateTimeItem(config, filter);\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n return [];\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigTextItem,\n} from '../../interfaces/items/text.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class TextItem extends BaseItem<IFilterConfigTextItem> {\n\n public declare prefix: string;\n public declare suffix: string;\n\n constructor(\n itemConfig: IFilterConfigTextItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigTextItem, filter: FilterComponent) {\n return new TextItem(config, filter);\n }\n\n public get hasValue() {\n return this.value !== undefined && this.value !== null && this.value !== '';\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue || this.isTypeKeyword) {\n return [];\n }\n\n let value = this.value;\n\n if(this.prefix) {\n value = `${this.prefix.length > 1 ? `${this.prefix} ` : this.prefix}${value}`;\n }\n\n if(this.suffix) {\n value = `${value}${this.suffix.length > 1 ? ` ${this.suffix}` : this.suffix}`;\n }\n\n return [\n {\n value,\n label: this.label,\n },\n ];\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigKeywordItem } from '../../interfaces/items/keyword.interface';\n\nimport { TextItem } from './text-item';\n\n\nexport class KeywordItem extends TextItem {\n\n public declare fullWidth: boolean;\n\n constructor(\n itemConfig: IFilterConfigKeywordItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.fullWidth = itemConfig.fullWidth;\n }\n\n public static create(config: IFilterConfigKeywordItem, filter: FilterComponent) {\n return new KeywordItem(config, filter);\n }\n\n public get hasValue() {\n return typeof this.value === 'string' && this.value.length > 0;\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue || this.isTypeKeyword) {\n return [];\n }\n\n return [\n {\n value: this.value,\n label: this.label,\n },\n ];\n }\n}\n","\nimport { map, Observable, tap } from 'rxjs';\n\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigSelectItem } from '../../interfaces/items/select.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class SelectItem extends BaseItem<IFilterConfigSelectItem> {\n\n public declare children: string;\n public declare multiple: boolean;\n public declare isolate: boolean;\n public declare isolated: boolean;\n public declare isolateLabel: string;\n public declare isolateValues: number[] | string[] | boolean[];\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.multiple = itemConfig.multiple || false;\n this.children = itemConfig.children || null;\n\n if (itemConfig.isolate) {\n this.isolate = true;\n this.isolateLabel = itemConfig.isolate.label;\n this.isolateValues = Array.isArray(itemConfig.isolate.value) ? \n itemConfig.isolate.value as any : [itemConfig.isolate.value];\n }\n }\n\n public static create(itemConfig: IFilterConfigSelectItem, filter: FilterComponent) {\n return new SelectItem(itemConfig, filter);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(this.multiple ? [] : undefined, emitChange);\n }\n \n public init(value: unknown): Observable<unknown> {\n return super.init(value)\n .pipe(\n tap(() => {\n if(this.isolate) {\n const v = Array.isArray(value) ? value : [value];\n this.isolated = v.some((_v) => {\n return this.isolateValues.includes(_v as never);\n });\n }\n }),\n );\n }\n\n public get values$(): Observable<any> {\n return super.values$\n .pipe(\n map((values) => { \n if(!this.isolate) {\n return values;\n }\n\n return values\n .filter((value) => {\n return !this.isolateValues.includes(value.value as never);\n });\n }),\n );\n }\n\n public setValue(value, emitChange = true) {\n if(this.multiple) {\n value = Array.isArray(value) ? value : [];\n } else {\n value = Array.isArray(value) ? value[0] : value;\n }\n\n super.setValue(value, emitChange);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.multiple ? this.value.join(',') : this.value,\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: Array.isArray(this.value) ? this.value.join(',') : this.value,\n };\n }\n\n public get hasValue() {\n if(this.multiple) {\n return Array.isArray(super.value) && super.value.length > 0;\n }\n\n return super.hasValue;\n }\n\n public get flattenedValues(): { name: string, value: any }[] {\n if(this.children) {\n return this.values.reduce((acc, item) => {\n return acc.concat(item[this.children] || []);\n }, []);\n }\n\n return this.values;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if (!this.hasValue) {\n return [];\n }\n\n const options = this.flattenedValues\n .filter((item) => {\n return this.multiple ? this.value\n .includes(item.value) : `${this.value}` === `${item.value}`;\n })\n .map((item) => {\n return item.name;\n });\n\n\n return [\n {\n value: options.join(', '),\n label: this.label,\n },\n ];\n }\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { IFilterConfigKeywordItem } from '../interfaces/items';\nimport { IFilterConfigDateRangeItem } from '../interfaces/items/date-range.interface';\nimport { IFilterConfigDateItem } from '../interfaces/items/date.interface';\nimport { IFilterConfigWeekItem } from '../interfaces/items/week.interface';\nimport { AutocompleteChipsItem } from '../models/items/autocomplete-chips-item';\nimport { AutocompleteItem } from '../models/items/autocomplete-item';\nimport { CheckboxItem } from '../models/items/checkbox-item';\nimport { ChipsItem } from '../models/items/chips-item';\nimport { DateItem } from '../models/items/date-item';\nimport { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeItem } from '../models/items/date-time-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { KeywordItem } from '../models/items/keyword-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { SelectItem } from '../models/items/select-item';\nimport { TextItem } from '../models/items/text-item';\nimport { WeekItem } from '../models/items/week-item';\n\n\nexport function createFilterItem(item: IFilterConfigItem, filter: FilterComponent) {\n switch (item.type) {\n case ItemType.Select: {\n return SelectItem.create(item, filter);\n }\n\n case ItemType.Chips: {\n return ChipsItem.create(item, filter);\n }\n\n case ItemType.Range: {\n return RangeItem.create(item, filter);\n }\n\n case ItemType.DateRange: {\n return DateRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.DateTimeRange: {\n return DateTimeRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.Date: {\n return DateItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.Week: {\n return WeekItem.create(item as IFilterConfigWeekItem, filter);\n }\n\n case ItemType.DateTime: {\n return DateTimeItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.AutoComplete: {\n return AutocompleteItem.create(item, filter);\n }\n\n case ItemType.AutoCompleteChips: {\n return AutocompleteChipsItem.create(item, filter);\n }\n\n case ItemType.Checkbox: {\n return new CheckboxItem(item, filter);\n }\n\n case ItemType.Keyword: {\n return KeywordItem.create(item as IFilterConfigKeywordItem, filter);\n }\n \n case ItemType.Text: {\n return TextItem.create(item, filter);\n }\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\n\nimport { BehaviorSubject, distinctUntilChanged, map, Observable, of, switchMap, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { KeywordItem } from '../models/items';\n\n\n@Injectable()\nexport class KeywordController {\n\n private _keywordItem$ = new BehaviorSubject<KeywordItem>(null);\n private _keywordVisible$ = new BehaviorSubject(null);\n private _keywordFullWidth$ = new BehaviorSubject(null);\n private _destroyRef = inject(DestroyRef);\n\n public init() {\n this._keywordItem$\n .pipe(\n // when item changes, unsubscribe from the previous visible$\n switchMap((item) => item ? item.visible$ : of(false)),\n // avoid redundant writes\n distinctUntilChanged(),\n tap((visible) => this._keywordVisible$.next(visible)),\n // clean up on destroy,\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n \n this._keywordItem$\n .pipe(\n map((item) => !!item?.fullWidth),\n // avoid redundant writes\n distinctUntilChanged(),\n tap((fullWidth) => this._keywordFullWidth$.next(fullWidth)),\n // clean up on destroy,\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n public get keywordItem$(): Observable<KeywordItem> {\n return this._keywordItem$.asObservable();\n }\n\n public get keywordItem(): KeywordItem {\n return this._keywordItem$.value;\n }\n\n public set keywordItem(item: KeywordItem) {\n this._keywordItem$.next(item);\n }\n\n public clear(emitChange: boolean = true) {\n this.keywordItem?.setValue('', emitChange);\n }\n\n public show() {\n this.keywordItem?.show();\n }\n\n public hide() {\n this.keywordItem?.hide();\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordVisible$.asObservable();\n }\n\n public get keywordFullWidth$(): Observable<boolean> {\n return this._keywordFullWidth$.asObservable();\n }\n\n}\n\n","import { Location } from '@angular/common';\nimport { DestroyRef, inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsStore } from '@firestitch/store';\n\nimport { Observable, of } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FsFilterPersistance, FsFilterPersistanceConfig } from '../interfaces';\n\nimport { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class PersistanceController {\n\n private _store = inject(FsStore);\n private _filterController: FilterController;\n private _name: string;\n private _data: any = {};\n private readonly _location = inject(Location);\n private readonly _storeKey = 'fs-filter-persist';\n private readonly _dialogRef = inject(MatDialogRef, { optional: true });\n private readonly _drawerRef = inject(DrawerRef, { optional: true }); \n private readonly _destroyRef = inject(DestroyRef);\n private readonly _route = inject(ActivatedRoute);\n \n public get enabled() {\n return !this._dialogRef && \n !this._drawerRef && \n this._route.snapshot.queryParams.persist !== 'disable' &&\n this._filterController.config.persist;\n }\n\n public init(filterController: FilterController): Observable<any> {\n this._filterController = filterController;\n\n if (this.enabled) { \n const persistanceConfig = this._initConfig(filterController.config.persist);\n this._name = persistanceConfig.name;\n\n if(this._route.snapshot.queryParams.persist === 'clear') {\n this._set({});\n }\n\n this._data = this._get() || {};\n \n this._filterController.change$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n this._set(this._filterController.values);\n });\n }\n\n return of(null);\n }\n\n public getQuery() {\n return this._data.query || {};\n }\n\n private _set(value: any) {\n this._data['query'] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this._name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this._name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ISortingChangeEvent } from '../interfaces';\nimport {\n FilterSort,\n} from '../interfaces/config.interface';\nimport { KeyValue } from '../interfaces/external-params.interface';\n\nimport type { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class SortController { \n\n private _name = null;\n private _direction = null;\n private _change$ = new Subject<{ name: string, direction: string }>();\n private _filterController: FilterController;\n private _route = inject(ActivatedRoute);\n\n public init(filterController: FilterController) {\n this._filterController = filterController;\n\n if(this._filterController.config.queryParam) { \n this._name = this._route.snapshot.queryParams.sortName; \n this._direction = this._route.snapshot.queryParams.sortDirection;\n }\n }\n\n public clear() {\n this._name = null;\n this._direction = null;\n }\n\n public get queryParam(): KeyValue {\n if(!this.name) {\n return {};\n }\n\n return {\n sortName: this.name,\n sortDirection: this.direction,\n };\n }\n\n public query(): KeyValue {\n if(!this.name) {\n return {};\n }\n\n return {\n order: `${this.name},${this.direction}`,\n };\n }\n\n public getSort(): FilterSort {\n return {\n value: this.name,\n direction: this.direction,\n };\n }\n\n public get direction() {\n return this._direction || 'asc';\n }\n\n public get name() {\n return this._name;\n }\n\n public get change$(): Observable<{ name: string, direction: string }> {\n return this._change$.asObservable();\n }\n\n public updateSort(sort: ISortingChangeEvent, emitChange: boolean = true) {\n this._name = sort.sortBy;\n this._direction = sort.sortDirection;\n this._change$.next({ name: this._name, direction: this._direction });\n \n if(emitChange) {\n if(this._filterController.config.sortChange) {\n this._filterController.config.sortChange(this._filterController.query, this.getSort());\n }\n \n this._filterController.change();\n }\n }\n\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { DrawerRef } from '@firestitch/drawer';\n\nimport { filter, merge, Observable, of, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { restoreItems } from '../helpers/restore-items';\nimport { KeyValue } from '../interfaces';\n\nimport { FilterController } from './filter-controller.service';\nimport { SortController } from './sort-controller.service';\n\n\n@Injectable()\nexport class QueryParamController {\n \n private _filterController: FilterController;\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _sortController = inject(SortController);\n private readonly _route = inject(ActivatedRoute);\n private readonly _dialogRef = inject(MatDialogRef, { optional: true });\n private readonly _drawerRef = inject(DrawerRef, { optional: true }); \n\n public get enabled() {\n return !this._dialogRef && \n !this._drawerRef && \n this._filterController.config.queryParam;\n }\n\n public get params(): Record<string, any> {\n if(!this.enabled) {\n return {};\n }\n\n const items = [\n ...this._filterController.items,\n ]\n .filter((item) => !!item);\n \n return restoreItems(\n this._route.snapshot.queryParams,\n items,\n );\n }\n\n public init(filterController: FilterController): Observable<any> {\n this._filterController = filterController;\n\n if (this.enabled) {\n merge(\n this._filterController.change$, \n this._filterController.init$,\n )\n .pipe(\n filter(() => this.enabled),\n tap(() => this.updateQueryParams()),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n return of(null);\n }\n\n public queryParams(): KeyValue {\n if(!this.enabled) {\n return {};\n }\n\n return {\n ...this._filterController.queryParam,\n ...this._sortController.queryParam,\n };\n }\n\n public updateQueryParams() {\n const queryParams = {\n ...this._filterController.items\n .reduce((acc, item) => {\n return {\n ...acc,\n [item.name]: undefined,\n };\n }, {}),\n ...this.queryParams(),\n };\n\n this._replaceState(queryParams);\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .forEach((name) => {\n const value = data[name];\n if(value === undefined || value === null) {\n url.searchParams.delete(name);\n } else {\n url.searchParams.set(name, value);\n }\n });\n\n history.replaceState({}, null, url.pathname + decodeURIComponent(url.search));\n }\n}\n","import { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, forkJoin, merge, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, filter, finalize, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n\nimport type { FilterComponent } from '../components/filter/filter.component';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n IFilterConfigItem,\n} from '../interfaces/config.interface';\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport { FsFilterConfig } from '../models/filter-config';\nimport { KeywordItem } from '../models/items';\nimport { BaseItem } from '../models/items/base-item';\n\nimport { KeywordController } from './keyword-controller.service';\nimport { PersistanceController } from './persistance-controller.service';\nimport { QueryParamController } from './query-param-controller.service';\nimport { SavedFilterController } from './saved-filter-controller.service';\nimport { SortController } from './sort-controller.service';\n\n\n@Injectable()\nexport class FilterController implements OnDestroy {\n\n public filter: FilterComponent;\n\n private _ready$ = new BehaviorSubject(false);\n private _items = new Map<string, BaseItem<IFilterConfigItem>>();\n private _config: FsFilterConfig;\n private _init$ = new Subject<void>();\n private _change$ = new Subject<BaseItem<IFilterConfigItem>[]>();\n private _destroy$ = new Subject<void>();\n private _persistanceController = inject(PersistanceController);\n private _savedFilterController = inject(SavedFilterController);\n private _queryParamController = inject(QueryParamController);\n private _keywordController = inject(KeywordController);\n private _sortController = inject(SortController);\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return Array.from(this._items.values());\n }\n\n public get itemNames(): string[] {\n return this.items.map((item) => item.name);\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get init$() {\n return this._init$.asObservable();\n }\n\n public get change$() {\n return this._change$\n .pipe(\n debounceTime(30),\n );\n }\n\n public change() {\n this._change$.next(null);\n }\n\n public get ready$() {\n return this._ready$.asObservable();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(config: FsFilterConfig) {\n this._config = config;\n of(null)\n .pipe(\n tap(() => this._addItems(this._config.items || [])),\n tap(() => this._keywordController.init()),\n tap(() => this._sortController.init(this)),\n switchMap(() => forkJoin({\n savedFilters: this._savedFilterController.init(this),\n persistance: this._persistanceController.init(this),\n queryParams: this._queryParamController.init(this),\n })),\n switchMap(() => this._initItems()), \n tap(() => this._initChanges()),\n tap(() => {\n this._init$.next();\n if (this._config.init) {\n this._config.init(this.query, this._sortController.getSort(), this.filter);\n }\n }),\n finalize(() => this._ready$.next(true)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n public getItem(name: string): BaseItem<IFilterConfigItem> {\n return this._items.get(name);\n }\n\n public filtersClear() {\n this.items\n .filter((item) => item.clearable)\n .forEach((item) => {\n item.clear(false);\n });\n\n this._keywordController.clear(false);\n this._sortController.clear();\n\n this.change();\n }\n\n public get queryParam(): Record<string, unknown> {\n return this.items\n .reduce((accum, item) => {\n return {\n ...accum,\n ...item.queryParam,\n };\n }, {});\n }\n\n public get query(): KeyValue {\n return {\n ...this.items\n .filter((item) => item.visible)\n .reduce((accum, item) => {\n return {\n ...accum,\n ...item.query,\n };\n }, {}),\n ...this._sortController.query(),\n };\n }\n\n public set values(values: Record<string, unknown>) {\n this.items.forEach((item) => {\n item.setValue(values[item.name], false);\n item.emitChange();\n });\n\n this.change();\n }\n\n public get values(): Record<string, unknown> {\n return this.items\n .reduce((acc, item) => {\n const value = item.value;\n\n if (value !== null) {\n acc[item.name] = value;\n }\n\n return acc;\n }, {});\n }\n \n private _getInitValues(): KeyValue {\n let result: KeyValue = {};\n\n if (this._savedFilterController.enabled && this._savedFilterController.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilterController.activeFilterData,\n };\n\n } else {\n result = {\n ...result, \n ...this._persistanceController.getQuery(),\n };\n \n if (this._config.queryParam) {\n result = {\n ...result, \n ...this._queryParamController.params,\n };\n }\n }\n\n return result;\n }\n\n private _initItems(): Observable<any> {\n if(!this.items.length) {\n return of(null);\n }\n \n const values = this._getInitValues();\n\n return forkJoin(\n this.items\n .map((item) => {\n return item.init(values[item.name]);\n }),\n )\n .pipe(\n tap(() => {\n this._initEnabledItems();\n }),\n tap(() => this.items\n .forEach((item) => {\n item.initCallback(item, this.filter);\n })),\n );\n }\n\n private _initEnabledItems() {\n let enabled = 0;\n\n this.items\n .forEach((item) => {\n if(!item.primary) {\n if(item.hasValue) {\n item.secondaryShow();\n }\n }\n });\n\n this.items\n .forEach((item) => {\n if(!item.primary) {\n if(item.secondaryVisible) {\n enabled++;\n } else if(enabled < this._config.maxEnabled) {\n item.secondaryShow();\n enabled++;\n }\n }\n });\n }\n\n private _addItems(itemsConfig: IFilterConfigItem[]) {\n let secondaryItemCount = itemsConfig\n .filter((item) => item.secondary)\n .length;\n\n const itemMap = itemsConfig \n .filter((itemConfig) => {\n if (this._items.has(itemConfig.name)) {\n throw Error('Filter init error. Items name must be unique.');\n }\n\n return true;\n })\n .map((itemConfig): [string, BaseItem<IFilterConfigItem>] => { \n if(!itemConfig.primary && !itemConfig.secondary && secondaryItemCount <= this._config.minSecondaryItems) {\n itemConfig.secondary = true;\n secondaryItemCount++;\n } \n\n const filterItem = createFilterItem(itemConfig, this.filter);\n\n if (filterItem instanceof KeywordItem) {\n this._keywordController.keywordItem = filterItem;\n }\n\n return [itemConfig.name, filterItem];\n });\n\n\n this._items = new Map(itemMap);\n }\n\n private _initChanges() {\n merge(\n ...this.items\n .map((item) => item.valueEvent$\n .pipe(\n filter((event) => event.emitChange),\n map(() => item),\n )),\n )\n .pipe(\n tap((item) => this._change$.next([item])),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._change$\n .pipe(\n tap((items: BaseItem<IFilterConfigItem>[]) => {\n if (this._config.change) {\n this._config.change(this.query, this._sortController.getSort());\n }\n\n items?.forEach((item) => {\n if (item.changeCallback) {\n item.changeCallback(item, this.filter);\n }\n });\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Injectable() \nexport class FocusControllerService {\n\n private _focusOn = new BehaviorSubject<{ item: BaseItem<any>, type: string}>(null);\n\n public get focusOn$() {\n return this._focusOn.asObservable();\n }\n\n public click(item: BaseItem<any>, type: string) {\n this._focusOn.next({ item, type });\n }\n\n public listenFocusFor$(targetItem: BaseItem<any>, targetType: string) {\n return this._focusOn\n .pipe(\n filter((event) => !!event),\n filter(({ item, type }) => {\n return targetItem === item && targetType === type;\n }),\n tap(() => this.clearFocus()),\n );\n }\n\n public clearFocus() {\n this._focusOn.next(null);\n }\n}\n","import { Injectable } from '@angular/core';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsRootFilterOverlayService {\n \n public openedFilters = 0;\n \n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\nimport { NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';\nimport { MatIconButton, MatFabButton, MatMiniFabButton, MatButton } from '@angular/material/button';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatIcon } from '@angular/material/icon';\n\n\n@Component({\n selector: 'fs-filter-action-button',\n templateUrl: './action-button.component.html',\n styleUrl: './action-button.component.scss',\n host: { class: 'action-button' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgSwitch,\n NgSwitchCase,\n MatIconButton,\n NgClass,\n NgTemplateOutlet,\n MatFabButton,\n MatMiniFabButton,\n NgSwitchDefault,\n MatButton,\n FsFormModule,\n NgIf,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionButtonComponent {\n\n public ButtonStyle = ButtonStyle;\n\n @Input()\n public action: Action;\n\n}\n","<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { Action } from '../../models/action.model';\nimport { MatIconButton } from '@angular/material/button';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n selector: 'fs-filter-action-kebab-actions',\n styleUrls: ['./action-kebab-actions.component.scss'],\n templateUrl: './action-kebab-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIconButton,\n FsMenuModule,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionKebabActionsComponent {\n\n @Input()\n public kebabActions: Action[];\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n}\n","<button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n @for (subAction of childAction.items; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\n </fs-menu>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { ActionMode, ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\nimport { FsFilterActionButtonComponent } from '../action-button/action-button.component';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterActionKebabActionsComponent } from '../action-kebab-actions/action-kebab-actions.component';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterActionButtonComponent,\n FsPopoverModule,\n FsMenuModule,\n MatIcon,\n MatSelect,\n FsSelectButtonModule,\n NgClass,\n FormsModule,\n FsFormModule,\n MatOption,\n FsFileModule,\n FsFilterActionKebabActionsComponent,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionsComponent {\n\n @Input()\n public kebabActions: Action[] = [];\n\n @Input()\n public actions: Action[] = [];\n\n public ButtonStyle = ButtonStyle;\n public ActionMode = ActionMode;\n\n public actionChange(action: Action, value: any, selectButton: MatSelect): void {\n if(action.change) {\n action.change(value); \n\n if(action.deselect) {\n selectButton.writeValue(null);\n }\n }\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n}\n","@for (action of actions; track action) {\n @switch (action.mode) {\n @case (ActionMode.Button) {\n <fs-filter-action-button\n [action]=\"action\"\n class=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n }\n @case (ActionMode.Menu) {\n <fs-filter-action-button\n class=\"action\"\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n <fs-menu\n #someRef\n class=\"action\">\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group [label]=\"childAction.label\">\n @for (subAction of childAction.items; track subAction) {\n @switch (subAction.mode) {\n @case ('menu') {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [multiple]=\"subAction.multiple\"\n [accept]=\"subAction.accept || '*'\"\n [minWidth]=\"subAction.minWidth\"\n [minHeight]=\"subAction.minHeight\"\n [imageWidth]=\"subAction.maxWidth\"\n [imageHeight]=\"subAction.maxHeight\"\n (select)=\"subAction.fileSelected($event)\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n }\n }\n </fs-menu-group>\n } @else {\n @switch (childAction.mode) {\n @case ('menu') {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"(childAction.visible$ | async) === false\"\n (click)=\"childAction.click($event);\">\n @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [multiple]=\"childAction.multiple\"\n [accept]=\"childAction.accept || '*'\"\n [minWidth]=\"childAction.minWidth\"\n [minHeight]=\"childAction.minHeight\"\n [imageWidth]=\"childAction.maxWidth\"\n [imageHeight]=\"childAction.maxHeight\"\n (select)=\"childAction.fileSelected($event)\"\n [hidden]=\"(childAction.visible$ | async) === false\">\n @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n }\n }\n }\n </fs-menu>\n }\n @case (ActionMode.SelectButton) {\n <mat-select\n class=\"action action-select-button\"\n [buttonType]=\"'basic'\"\n [ngClass]=\"{\n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n }\"\n [placeholder]=\"action.label\"\n [(ngModel)]=\"action.value\"\n [color]=\"action.color\"\n (ngModelChange)=\"actionChange(action, $event, selectButton)\"\n fsSelectButton\n #selectButton\n [deselectOnChange]=\"action.deselect\">\n @for (item of action.values; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n }\n @case (ActionMode.File) {\n <fs-file\n class=\"action action-button\"\n [accept]=\"action.accept || '*'\"\n [multiple]=\"action.multiple\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n <fs-filter-action-button [action]=\"action\"></fs-filter-action-button>\n </fs-file>\n }\n }\n}\n@if (kebabActions?.length) {\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_FILTER_CONFIG = new InjectionToken<any>('fs.filter-config');\n","import { InjectionToken } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { IFilterConfigItem } from '../interfaces';\nimport { BaseItem } from '../models/items';\n\nexport const FILTER_DRAWER_DATA = new InjectionToken<{ item: BaseItem<IFilterConfigItem>, autofocusName: string, overlayRef: OverlayRef }>('fs.filter-drawer-data');\n","import { InjectionToken } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<OverlayRef>('fs.filter-drawer-overlay');\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { IFilterConfigItem } from '../../../interfaces/config.interface';\nimport { BaseItem } from '../../../models/items/base-item';\n\n\n@Component({\n selector: 'base-item',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class BaseItemComponent<T extends BaseItem<IFilterConfigItem>> {\n\n @Input() public item: T;\n @Input() public overlayRef: OverlayRef;\n @Input() public triggerChangeOn: 'close' | 'change' = 'close';\n\n public close() {\n if(this.overlayRef) {\n this.overlayRef.detachBackdrop();\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { Observable } from 'rxjs';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { AutocompleteItem } from '../../../models/items/autocomplete-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class AutocompleteComponent extends BaseItemComponent<AutocompleteItem> {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public displayWith = (data) => {\n return data ? data.name : data;\n };\n\n public fetch = (keyword): Observable<any> => {\n return this.item.valuesFn(keyword, this.item.filter) as Observable<any>;\n };\n}\n","<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearable\"\n name=\"item.name\">\n <ng-template\n fsAutocompleteTemplate\n let-data=\"data\">\n {{ data.name }}\n </ng-template>\n</fs-autocomplete>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { AutocompleteChipsItem } from '../../../models/items/autocomplete-chips-item';\nimport { FilterComponent } from '../../filter/filter.component';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocompletechips',\n templateUrl: './autocompletechips.component.html',\n styleUrls: ['./autocompletechips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class AutocompletechipsComponent \n extends BaseItemComponent<AutocompleteChipsItem> \n implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n public value: any[];\n \n private _injector = inject(Injector);\n\n public ngOnInit(): void {\n this.value = this.item.value;\n }\n\n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n }\n\n public panelClosed() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public removed() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public clear() {\n this.item.clear();\n }\n\n public fetch = (keyword) => {\n return this.item.valuesFn(keyword, this.item.filter);\n };\n\n public compareItems(item1, item2): boolean {\n return item1?.value === item2?.value;\n }\n\n public actionClick(action: any) {\n const filterComponent = this._injector.get(FilterComponent);\n action.click(filterComponent);\n }\n}\n","<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [(ngModel)]=\"value\"\n [floatLabel]=\"floatLabel\"\n (clear)=\"clear()\"\n [allowText]=\"false\"\n [padless]=\"true\"\n [label]=\"item.label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearable\"\n [removable]=\"item.clearable\"\n [compareWith]=\"compareItems\"\n (panelClosed)=\"panelClosed()\"\n (removed)=\"removed()\"\n name=\"model\">\n <ng-template\n fsAutocompleteObject\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n @for (action of item.panelActions; track action.label) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n</fs-autocomplete-chips>","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n MatSlideToggle,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class CheckboxComponent extends BaseItemComponent<CheckboxItem> implements OnInit {\n\n public value: boolean;\n\n public ngOnInit() {\n this.value = this.item.value;\n }\n\n public change() {\n this.item.setValue(this.value);\n this.close();\n }\n \n}\n","<mat-slide-toggle\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change()\"\n [name]=\"item.name\">\n {{ item.label }}\n</mat-slide-toggle>","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsChipModule } from '@firestitch/chip';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ChipsItem } from '../../../models/items/chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n FsChipModule,\n FormsModule,\n FsFormModule,\n AsyncPipe,\n ],\n})\nexport class ChipsComponent extends BaseItemComponent<ChipsItem> implements OnInit, OnDestroy {\n\n public value: any;\n\n private _destroyRef = inject(DestroyRef);\n private _cdRef = inject(ChangeDetectorRef);\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((value) => {\n this.value = value;\n this._cdRef.detectChanges();\n });\n }\n\n public ngOnDestroy(): void {\n this.item.value = this.value;\n }\n\n public compareFn = (modelValue, chipValue) => {\n return String(modelValue.value) === String(chipValue.value);\n };\n}\n","@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport { DateRangeItem } from '../../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../../models/items/date-time-range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsDatePickerModule,\n FsFormModule,\n ],\n})\nexport class DateRangeComponent \n extends BaseItemComponent<DateRangeItem | DateTimeRangeItem> implements OnInit, OnDestroy {\n\n @Input() public autofocusName: string;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public viewType = PickerViewType.Date;\n public from: Date;\n public to: Date;\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTimeRange ? \n PickerViewType.DateTime : PickerViewType.Date;\n\n if(!this.autofocusName) {\n this.autofocusName = this.from ? 'to' : 'from';\n }\n\n this.from = this.item.value?.from;\n this.to = this.item.value?.to;\n }\n \n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n } \n \n public change() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public get value() {\n return {\n from: this.from,\n to: this.to,\n };\n }\n}\n","<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport type { BaseDateItem } from '../../../models/items/base-date-item';\nimport type { DateItem } from '../../../models/items/date-item';\nimport type { DateTimeItem } from '../../../models/items/date-time-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\n})\nexport class DateComponent extends BaseItemComponent<DateItem | DateTimeItem> implements OnInit {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public viewType = PickerViewType.Date;\n\n public itemDateMode = ItemDateMode;\n public showYear = true;\n public showMonth = true;\n public showDay = true;\n public value: any;\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTime ? \n PickerViewType.DateTime : PickerViewType.Date;\n\n if ((this.item as BaseDateItem).mode === ItemDateMode.ScrollMonthYear) {\n this.showDay = false;\n }\n\n this.value = this.item.value;\n }\n\n public change(event: any) {\n this.item.value = event;\n this.close();\n }\n}\n","@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { RangeItem } from '../../../models/items/range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsFormModule,\n MatSuffix,\n ],\n})\nexport class RangeComponent extends BaseItemComponent<RangeItem> implements OnInit, OnDestroy {\n\n @Input() public autofocusName: string;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public min: number;\n public max: number;\n\n public ngOnInit(): void {\n this.min = this.item.value?.min;\n this.max = this.item.value?.max;\n }\n\n public ngOnDestroy(): void {\n this.item.value = {\n min: this.min,\n max: this.max,\n };\n }\n\n public keyup(event: KeyboardEvent) {\n if(event.key === 'Enter' || event.code === 'Tab') {\n this.close();\n }\n }\n}\n","<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { SelectItem } from '../../../models/items/select-item';\nimport { BaseItemComponent } from '../base-item';\n\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatOptgroup,\n MatCheckbox,\n AsyncPipe, \n ],\n})\nexport class SelectComponent extends BaseItemComponent<SelectItem> implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n @ViewChild(MatSelect, { static: true })\n public select: MatSelect;\n\n public value: any;\n\n private _cdRef = inject(ChangeDetectorRef);\n private _destroyRef = inject(DestroyRef);\n\n public changed() {\n if(!this.item.multiple) {\n this.change();\n }\n }\n\n public selectOpenedChange(opened: boolean) {\n if(!opened && !this.item.isolate) {\n this.close();\n }\n }\n\n public change() {\n let value = this.value;\n if(this.item.isolate) {\n if(this.item.multiple) {\n value = value.filter((v) => {\n return !this.item.isolateValues.includes(v.value as never);\n });\n }\n\n this.item.isolated = false;\n }\n\n this.item.value = value;\n }\n\n public ngOnDestroy(): void {\n if(this.item.isolate) {\n this.change();\n }\n }\n\n public ngOnInit(): void {\n this.value = this.item.value;\n if(this.item.isolate && !this.item.hasValue) {\n this.item.isolated = false;\n }\n }\n\n public markForCheck() {\n this._cdRef.markForCheck();\n }\n\n public isolateChange(event: MatCheckboxChange) {\n if(event.checked) {\n this.value = this.item.multiple ? this.item.isolateValues : this.item.isolateValues[0];\n } else {\n this.value = this.item.multiple ? [] : null;\n }\n }\n}\n","<mat-form-field\n [ngClass]=\"{ isolate: item.isolate }\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n [fsFilterFocusTrigger]=\"autofocus && !item.isolate\"\n [(ngModel)]=\"value\"\n (openedChange)=\"selectOpenedChange($event)\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n @if (item.children) {\n @for (option of item.values$ | async; track option) {\n @if (option[item.children]) {\n <mat-optgroup [label]=\"option.name\">\n @for (childOption of option[item.children]; track childOption.value) {\n <mat-option [value]=\"childOption.value\">\n {{ childOption.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n } @else {\n @for (option of item.values$ | async; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n@if (item.isolate) {\n <div class=\"isolate-checkbox\">\n <mat-checkbox\n (change)=\"isolateChange($event)\"\n [(ngModel)]=\"item.isolated\">\n <span class=\"checkbox-label\">\n {{ item.isolateLabel }}\n </span>\n </mat-checkbox>\n </div>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n\nimport { FsCommonModule } from '@firestitch/common';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { TextItem } from '../../../models/items/text-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n FocusToItemDirective,\n MatSuffix,\n FsCommonModule,\n ],\n})\nexport class TextComponent extends BaseItemComponent<TextItem> implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public value: string;\n\n public ngOnInit(): void {\n this.value = this.item.value;\n }\n\n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n }\n\n public change() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public keyup(event: KeyboardEvent) {\n if(this.triggerChangeOn === 'close') {\n if(event.key === 'Enter' || event.code === 'Tab') {\n this.close();\n }\n }\n }\n\n}\n","<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n (fsModelChange)=\"change()\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { WeekItem } from '../../../models/items/week-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\n})\nexport class WeekComponent extends BaseItemComponent<WeekItem> implements OnInit {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n public value: Date;\n\n public ngOnInit() {\n this.value = this.item.value;\n }\n}\n","<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateWeekPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"item.value = value\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n</mat-form-field>","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport type { AutocompleteChipsItem } from '../../models/items/autocomplete-chips-item';\nimport type { AutocompleteItem } from '../../models/items/autocomplete-item';\nimport type { BaseItem } from '../../models/items/base-item';\nimport type { CheckboxItem } from '../../models/items/checkbox-item';\nimport type { ChipsItem } from '../../models/items/chips-item';\nimport type { DateItem } from '../../models/items/date-item';\nimport type { DateRangeItem } from '../../models/items/date-range-item';\nimport type { DateTimeItem } from '../../models/items/date-time-item';\nimport type { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport type { RangeItem } from '../../models/items/range-item';\nimport { SelectItem } from '../../models/items/select-item';\nimport type { TextItem } from '../../models/items/text-item';\nimport type { WeekItem } from '../../models/items/week-item';\n\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './autocompletechips/autocompletechips.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { DateRangeComponent } from './date-range/date-range.component';\nimport { DateComponent } from './date/date.component';\nimport { RangeComponent } from './range/range.component';\nimport { SelectComponent } from './select/select.component';\nimport { TextComponent } from './text/text.component';\nimport { WeekComponent } from './week/week.component';\n\n\n@Component({\n selector: 'filter-item',\n templateUrl: './filter-item.component.html',\n styleUrls: ['./filter-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n TextComponent,\n SelectComponent,\n ChipsComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n WeekComponent,\n CheckboxComponent,\n AsyncPipe,\n ],\n})\nexport class FilterItemComponent implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n @Input() public autofocusName: string;\n @Input() public overlayRef: OverlayRef;\n @Input() public item: BaseItem<any>;\n @Input() public name: string;\n @Input() public triggerChangeOn: 'close' | 'change' = 'close';\n\n public itemType = ItemType;\n\n public get textItem(): TextItem {\n return this.item as TextItem;\n }\n\n public get selectItem(): SelectItem {\n return this.item as SelectItem;\n }\n\n public get chipsItem(): ChipsItem {\n return this.item as ChipsItem;\n }\n\n public get rangeItem(): RangeItem {\n return this.item as RangeItem;\n }\n\n public get autocompleteItem(): AutocompleteItem {\n return this.item as AutocompleteItem;\n }\n\n public get autocompleteChipsItem(): AutocompleteChipsItem {\n return this.item as AutocompleteChipsItem;\n }\n\n public get dateItem(): DateItem {\n return this.item as DateItem;\n }\n\n public get dateRangeItem(): DateRangeItem {\n return this.item as DateRangeItem;\n }\n\n public get dateTimeItem(): DateTimeItem {\n return this.item as DateTimeItem;\n }\n\n public get dateTimeRangeItem(): DateTimeRangeItem {\n return this.item as DateTimeRangeItem;\n }\n\n public get weekItem(): WeekItem {\n return this.item as WeekItem;\n }\n\n public get checkboxItem(): CheckboxItem {\n return this.item as CheckboxItem;\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _destroy$ = new Subject<void>();\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n}\n","@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [overlayRef]=\"overlayRef\"\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\"\n [overlayRef]=\"overlayRef\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n [overlayRef]=\"overlayRef\"\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-checkbox>\n }\n }\n </div>\n}","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\n\nimport { FILTER_DRAWER_DATA } from '../../injectors';\nimport { IFilterConfigItem } from '../../interfaces';\nimport { BaseItem } from '../../models/items';\nimport { FilterItemComponent } from '../filters-item/filter-item.component';\n\n@Component({\n templateUrl: './filter-item-dialog.component.html',\n styleUrls: ['./filter-item-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FormsModule,\n FsFormModule,\n FsSkeletonModule,\n FilterItemComponent,\n ],\n})\nexport class FilterItemDialogComponent {\n\n public item: BaseItem<IFilterConfigItem> = inject(FILTER_DRAWER_DATA)?.item;\n public autofocusName: string = inject(FILTER_DRAWER_DATA)?.autofocusName;\n public overlayRef: OverlayRef = inject(FILTER_DRAWER_DATA)?.overlayRef;\n\n}\n","<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [overlayRef]=\"overlayRef\"\n [item]=\"item\">\n </filter-item>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { FsChipModule } from '@firestitch/chip';\n\nimport { createFilterItem } from '../../../../../helpers';\nimport { IFilterConfigItem } from '../../../../../interfaces';\nimport { IFilterSavedFilter } from '../../../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../../../models/items';\nimport { FilterController } from '../../../../../services';\n\n\n@Component({\n selector: 'fs-saved-filter-chips',\n templateUrl: './saved-filter-chips.component.html',\n styleUrls: ['./saved-filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsChipModule,\n ],\n})\nexport class FsFilterSavedFilterChipsComponent implements OnInit {\n\n @Input() public savedFilter: IFilterSavedFilter;\n\n public items: BaseItem<IFilterConfigItem>[] = [];\n\n private _filterController = inject(FilterController);\n\n public ngOnInit(): void {\n this.items = [...this._filterController.items]\n .filter((item) => !!this.savedFilter.filters[item.name])\n .map((item: BaseItem<IFilterConfigItem>): BaseItem<IFilterConfigItem> => {\n\n const config = {\n ...this._filterController.config.items\n .find((configItem) => item.name === configItem.name),\n };\n\n const filterItem = createFilterItem(config, this._filterController.filter);\n filterItem.values = item.values;\n filterItem.initValue(this.savedFilter.filters[item.name]);\n \n return filterItem;\n });\n }\n}\n","<div class=\"filter-chips\">\n @for (item of items; track item.name) {\n @for (chip of item.chips; track chip.label) {\n <fs-chip size=\"small\">\n {{ chip.value ? chip.label + ': ' + chip.value : chip.label }}\n </fs-chip>\n }\n }\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { IFilterConfigItem } from '../../../interfaces';\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../models/items';\nimport { FilterController } from '../../../services/filter-controller.service';\nimport { SavedFilterController } from '../../../services/saved-filter-controller.service';\n\nimport { FsFilterSavedFilterChipsComponent } from './components/saved-filter-chips';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n FsFilterSavedFilterChipsComponent,\n FsMenuModule,\n ],\n})\nexport class FsFilterSavedFilterManageComponent implements OnInit {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFilterController = inject(SavedFilterController);\n private _cdRef = inject(ChangeDetectorRef);\n private _filterController = inject(FilterController);\n private _dialogRef = inject(MatDialogRef);\n\n public ngOnInit(): void {\n this.savedFilters = this._savedFilterController.savedFilters;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._filterController.items;\n }\n\n public get pluralLabel(): string {\n return this._savedFilterController.pluralLabel;\n }\n\n public get sortable(): boolean {\n return this._savedFilterController.orderable;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._dialogRef.close();\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = this._savedFilterController.savedFilters;\n this._cdRef.markForCheck();\n });\n }\n\n public order(savedFilters: IFilterSavedFilter[]) {\n this._savedFilterController.order(savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, OnInit, QueryList, StaticProvider, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatOption, MatSelect, MatSelectChange } from '@angular/material/select';\n\nimport { FsChipComponent, FsChipModule } from '@firestitch/chip';\nimport { FsButtonDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\n\nimport { BehaviorSubject, Observable, delay, take, tap } from 'rxjs';\n\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ItemType } from '../../enums';\nimport { FILTER_DRAWER_DATA } from '../../injectors';\nimport { IFilterConfigItem } from '../../interfaces';\nimport { BaseItem } from '../../models/items/base-item';\nimport { SavedFilterController } from '../../services';\nimport { FilterController } from '../../services/filter-controller.service';\nimport { FilterItemDialogComponent } from '../filter-item-dialog';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter/saved-filter-manage/saved-filter-manage.component';\n\n\n@Component({\n selector: 'fs-filter-chips',\n templateUrl: './filter-chips.component.html',\n styleUrls: ['./filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n AsyncPipe,\n FsChipModule,\n MatSelect,\n MatOption,\n FsSelectButtonModule,\n MatButtonModule,\n FsButtonDirective,\n FormsModule,\n ],\n})\nexport class FsFilterChipsComponent implements OnInit {\n\n @ViewChildren(FsChipComponent) \n public chips: QueryList<FsChipComponent>;\n\n public ItemType = ItemType;\n public secondaryItems: BaseItem<IFilterConfigItem>[] = [];\n\n private _filterController = inject(FilterController);\n private _dialog = inject(MatDialog);\n private _message = inject(FsMessage);\n private _savedFilterController = inject(SavedFilterController);\n private _injector = inject(Injector);\n private _overlay = inject(Overlay);\n private _overlayRef: OverlayRef;\n private _destroyRef = inject(DestroyRef);\n private _elementRef = inject(ElementRef);\n private _hasSecondaryValue$ = new BehaviorSubject(false);\n\n public get items() {\n return this._filterController.items\n .filter((item) => !item.isTypeKeyword);\n }\n\n public addFilter(event: MatSelectChange) {\n const item: BaseItem<IFilterConfigItem> = event.value;\n item.secondaryShow();\n\n this.chips.changes\n .pipe(\n take(1),\n delay(100),\n tap(() => {\n this.openChip(item);\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n public get disabledItems() {\n return this.items\n .filter((item) => !item.secondaryVisible && !item.hasValue && !item.primary);\n }\n\n public get hasSecondaryValue$(): Observable<boolean> {\n return this._hasSecondaryValue$.asObservable();\n }\n\n public get savedFilterController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public get hasSecondaryValue(): boolean {\n return this._filterController.items\n .some((item) => item.hasValue && item.visible && !item.primary);\n }\n\n public ngOnInit(): void {\n this.secondaryItems = this.items\n .filter((item) => !item.primary);\n\n this._initHasSecondaryValue();\n }\n\n public clear() {\n this._filterController.items\n .filter((item) => item.clearable)\n .forEach((item) => {\n if(!item.secondary) {\n item.secondaryHide();\n }\n item.clear(false);\n });\n\n this._filterController.change();\n this._savedFilterController.setActiveFilter(null);\n }\n\n public openChip(item: BaseItem<IFilterConfigItem>, name: string = null) {\n this._destroyOverlay();\n const el = this._elementRef.nativeElement\n .querySelector(`[data-filter-item=\"${item.name}\"]`);\n\n const positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: el.offsetHeight + 2,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(el)\n .withPositions(positions);\n \n const overlayConfig = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this._overlay.scrollStrategies.block(),\n disposeOnNavigation: true,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'fs-sidenav-menu-overlay-pane',\n });\n\n this._overlayRef = this._overlay.create(overlayConfig);\n\n this._overlayRef.backdropClick().pipe(\n take(1),\n tap(() => {\n this._destroyOverlay();\n }),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe();\n\n this._attachContainer(this._overlayRef, item, name);\n }\n\n public getNestedElement(el: any, className: string) {\n if(el) {\n if(el.classList.contains(className)) {\n return el;\n }\n\n return this.getNestedElement(el.parentElement, className);\n }\n\n return null;\n }\n \n public saveActiveFilter(): void {\n this._savedFilterController\n .save(this._savedFilterController.activeFilter)\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this._savedFilterController.singularLabel}`);\n }),\n )\n .subscribe();\n }\n\n public createSavedFilter(): void {\n this._savedFilterController.create()\n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this._savedFilterController.singularLabel}`,\n );\n }),\n )\n .subscribe();\n }\n\n public saveAs(): void {\n this._savedFilterController\n .saveAs()\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this._savedFilterController.singularLabel}`);\n }),\n )\n .subscribe();\n } \n\n public manageSavedFilters(): void {\n this._dialog\n .open(FsFilterSavedFilterManageComponent, {\n injector: this._injector,\n restoreFocus: false,\n });\n }\n\n public _destroyOverlay() {\n if(this._overlayRef) {\n this._overlayRef.detachBackdrop();\n this._overlayRef.detach();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n public removeChip(\n item: BaseItem<IFilterConfigItem>, \n chip: { name?: string, value: string, label: string },\n ) {\n if(!item.secondary) {\n item.secondaryHide();\n }\n\n if(chip.name) {\n item.clearByName(chip.name);\n } else {\n item.clear();\n }\n }\n\n private _attachContainer(overlayRef: OverlayRef, item: BaseItem<IFilterConfigItem>, name: string) {\n const injector = this._createInjector(item, name);\n const containerPortal = new ComponentPortal(FilterItemDialogComponent, undefined, injector);\n const containerRef = overlayRef.attach<FilterItemDialogComponent>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _createInjector(item: BaseItem<IFilterConfigItem>, autofocusName: string): Injector {\n const providers: StaticProvider[] = [\n { provide: FILTER_DRAWER_DATA, useValue: { item, autofocusName, overlayRef: this._overlayRef } },\n ];\n \n return Injector.create({\n providers,\n parent: this._injector,\n });\n }\n\n private _initHasSecondaryValue() {\n this._hasSecondaryValue$.next(this.hasSecondaryValue);\n\n this._filterController.change$\n .pipe(\n tap(() => {\n this._hasSecondaryValue$.next(this.hasSecondaryValue);\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n}\n","@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatPrefix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { KeywordController } from '../../services/keyword-controller.service';\n\n\n@Component({\n selector: 'fs-keyword-input',\n styleUrls: ['./keyword-input.component.scss'],\n templateUrl: './keyword-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatPrefix,\n MatIcon,\n MatInput,\n FormsModule,\n FsFormModule,\n FsClearModule,\n AsyncPipe,\n ],\n})\nexport class KeywordInputComponent implements OnInit, OnDestroy {\n\n @ViewChild('keywordMatInput', { read: MatInput })\n public keywordMatInput: MatInput;\n\n @Input() public autofocus = false;\n\n public searchPlaceholder = 'Search';\n public keyword = '';\n\n private _keyword$ = new Subject();\n private _destroyRef = inject(DestroyRef);\n private _destroy$ = new Subject<void>();\n private _keywordController = inject(KeywordController);\n private _cdRef = inject(ChangeDetectorRef);\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordController.keywordVisible$;\n }\n\n public ngOnInit(): void {\n this._initAutoFocus();\n this._listenInputChanges();\n this._initKeyword();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordMatInput?.focus();\n }\n\n public show() {\n this._keywordController.show();\n }\n\n public hide() {\n this._keywordController.hide();\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this.keyword = '';\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n private _listenInputChanges() {\n this._keyword$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n this._keywordController.keywordItem.value = value;\n });\n }\n\n private _initKeyword() {\n this._keywordController.keywordItem.value$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((value) => {\n this.keyword = value;\n this._cdRef.detectChanges();\n });\n }\n\n private _initAutoFocus() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.autofocus) {\n this.focus();\n }\n });\n }\n\n}\n","@if (keywordVisible$ | async) {\n <mat-form-field\n class=\"search-form-field form-field-padless\"\n [ngClass]=\"{ 'has-keyword': !!keyword }\">\n <span\n matPrefix\n class=\"icon\">\n <mat-icon matPrefix>\n search\n </mat-icon>\n </span>\n <input\n #keywordMatInput\n matInput\n [(ngModel)]=\"keyword\"\n (ngModelChange)=\"keywordChange($event)\"\n name=\"filter-input\"\n [fsClear]=\"true\"\n [placeholder]=\"searchPlaceholder\">\n </mat-form-field>\n}","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { FilterHeadingDirective } from '../../directives';\nimport { ISortingChangeEvent, KeyValue } from '../../interfaces';\nimport { FsFilterAction } from '../../interfaces/action.interface';\nimport {\n FilterConfig,\n IFilterConfigItem,\n} from '../../interfaces/config.interface';\nimport { IUpdateFilterItemConfig } from '../../interfaces/update-filter-item.interface';\nimport { FsFilterConfig } from '../../models/filter-config';\nimport { BaseItem } from '../../models/items/base-item';\nimport { SortController } from '../../services';\nimport { FilterController } from '../../services/filter-controller.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { KeywordController } from '../../services/keyword-controller.service';\nimport { PersistanceController } from '../../services/persistance-controller.service';\nimport { QueryParamController } from '../../services/query-param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterActionsComponent } from '../actions/actions.component';\nimport { FsFilterChipsComponent } from '../filter-chips/filter-chips.component';\nimport { FilterItemComponent } from '../filters-item';\nimport { KeywordInputComponent } from '../keyword-input/keyword-input.component';\n\nimport { FilterStatusBarDirective } from './../../directives/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './../../injectors/filter-config';\n\n\n@Component({\n selector: 'fs-filter',\n styleUrls: ['./filter.component.scss'],\n templateUrl: './filter.component.html',\n providers: [\n PersistanceController,\n QueryParamController,\n FocusControllerService,\n FilterController,\n SavedFilterController,\n ActionsController,\n KeywordController,\n SortController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n FilterItemComponent,\n NgClass,\n MatIcon,\n FormsModule,\n FsFormModule,\n FsClearModule,\n FsFilterChipsComponent,\n FsFilterActionsComponent,\n MatIconAnchor,\n MatSlideToggle,\n AsyncPipe,\n KeywordInputComponent,\n ],\n})\nexport class FilterComponent implements OnInit, OnDestroy {\n\n @ViewChild(KeywordInputComponent)\n public keywordInput: KeywordInputComponent;\n \n @Input('config') public set setFilterConfig(value: FilterConfig) {\n this._filterConfig = value;\n }\n\n @Output() public closed = new EventEmitter<any>();\n @Output() public opened = new EventEmitter<any>();\n @Output() public ready = new EventEmitter<void>();\n\n @ContentChild(FilterStatusBarDirective)\n public statusBar: FilterStatusBarDirective;\n\n @ContentChild(FilterHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ViewChild('reloadEl', { read: ElementRef })\n public reloadEl: ElementRef;\n\n @HostBinding('class.filters-open')\n public showFilterMenu = false;\n\n @HostBinding('class.window-desktop')\n public windowDesktop = false;\n\n @HostBinding('class.fs-filter')\n public fsFilterClass = true;\n\n private _config: FsFilterConfig;\n private _filterConfig: FilterConfig;\n private _filtersVisible$ = new BehaviorSubject(true);\n private _hasFilterChips$ = new BehaviorSubject(false);\n private _destroy$ = new Subject<void>();\n private _defaultConfig = inject(FS_FILTER_CONFIG, { optional: true });\n private _zone = inject(NgZone);\n private _actionsController = inject(ActionsController);\n private _filterController = inject(FilterController);\n private _sortController = inject(SortController);\n private _savedFilterController = inject(SavedFilterController);\n private _keywordController = inject(KeywordController);\n\n constructor(\n ) {\n this._filterController.filter = this;\n this._updateWindowWidth();\n this._listenWindowResize();\n }\n\n public get queryParams(): KeyValue {\n return this._filterController.queryParam;\n }\n\n public get query(): KeyValue {\n return this._filterController.query;\n }\n\n public get values(): KeyValue {\n return this._filterController.values;\n }\n\n /**\n *\n * Do update value of some field\n *\n * @param values - values for update\n *\n * To update text value just pass new text value\n *\n * public updateSelectValue(val) {\n * this.filterEl.updateValues({ keyword: val });\n * }\n *\n * To update select or observable select you could pass suitable value\n *\n * public updateSelectValue(val: number) {\n * this.filterEl.updateValues({ simple_select: val }, { observable_select: val });\n * }\n *\n * To update checkbox value just pass true/false as value\n *\n * public updateCheckox(val: boolean) {\n * this.filterEl.updateValues({ checkbox: val });\n * }\n *\n * To update range value just pass object with min&max object or just with one of targets\n *\n * Ex.: { min: 10, max 15 }, { min: 5 }, { max 5 }\n *\n * public updateRange(val) {\n * this.filterEl.updateValues({ range: val });\n * }\n *\n * To update autocomplete just pass object with name/value fields\n *\n * Ex.: { name: 'John Doe', value: 1 }\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocomplete_user_id: val });\n * }\n *\n * To update autocompletechips just pass:\n *\n * 1) object with name/value fields - will be appended to existing set of values\n *\n * { name: 'John Doe', value: 1 }\n *\n * 2) array of objects - will be appended to existing set of values\n *\n * [{ name: 'John Doe', value: 1 }, { name: 'Darya Filipova', value: 2 }]\n *\n * 3) null - clear existing set of values\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocompletechips_user_id: val });\n * }\n *\n */\n public set values(values) {\n this._filterController.values = values;\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._filterController.items;\n }\n\n public get primaryItems(): BaseItem<IFilterConfigItem>[] {\n return this.items.filter((item) => item.primary);\n }\n\n public change() {\n this._filterController.change();\n }\n\n public get hasHeading(): boolean {\n return !!this.headingTemplate || !!this.config.heading;\n }\n\n public get hasFilterChips$(): Observable<boolean> {\n return this._hasFilterChips$.asObservable();\n }\n\n public get filtersVisible$(): Observable<boolean> {\n return combineLatest({\n filtersVisible: this._filtersVisible$.asObservable(),\n hasVisibleItems: of(\n this.items\n .some((item) => item.visible && !item.isTypeKeyword),\n ),\n })\n .pipe(\n map(({ filtersVisible, hasVisibleItems }) => {\n return filtersVisible && hasVisibleItems;\n }),\n );\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordController.keywordVisible$;\n }\n\n public get keywordFullWidth$(): Observable<boolean> {\n return this._keywordController.keywordFullWidth$;\n }\n\n public get primaryFilterVisible$(): Observable<boolean> {\n return combineLatest({\n keywordVisible: this.keywordVisible$,\n savedFilterVisible: of(this.items.some((item) => item.visible && item.primary)),\n })\n .pipe(\n map(({ keywordVisible, savedFilterVisible }) => {\n return keywordVisible || savedFilterVisible;\n }),\n );\n }\n\n public get actionsVisible$() {\n return this._actionsController.visible$;\n }\n\n public get actions$() {\n return this._actionsController.actions$;\n }\n\n public get menuActions$() {\n return this._actionsController.menuActions$;\n }\n\n public get savedFilterController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public get sortController(): SortController {\n return this._sortController;\n }\n\n public ngOnInit() {\n const config = {\n ...(this._defaultConfig || {}),\n ...this._filterConfig,\n };\n\n this._config = new FsFilterConfig(config);\n this._actionsController.setConfig(this.config);\n\n this._initItems();\n this._initAutoReload();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordInput?.focus();\n }\n\n public updateSort(sort: ISortingChangeEvent, emitChange: boolean = true) {\n this._sortController.updateSort(sort, emitChange);\n }\n\n public get itemValues(): any[] {\n return this.items\n .map((item) => item.value);\n }\n\n public get nonEmptyItemValues(): any[] {\n return this.items\n .filter((item) => item.value !== undefined)\n .map((item) => item.value);\n }\n\n public get hasItemValues(): boolean {\n return this.items\n .some((item) => item.value !== undefined);\n }\n\n public getItemValue(name: string) {\n const item = this.items\n .find((_item) => _item.name === name);\n\n return item?.value;\n }\n\n public showItem(name: string) {\n this.getItem(name)?.show();\n }\n\n public hideItem(name: string) {\n this.getItem(name)?.hide();\n }\n\n public clearItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.clear();\n }\n\n public updateItemConfig(\n name: string,\n params: IUpdateFilterItemConfig,\n ): void {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.label = params.label ?? item.label;\n item.chipLabel = params.chipLabel ?? item.chipLabel;\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this._filterController.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keywordInput?.clear();\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const el = this.reloadEl?.nativeElement;\n\n if(el) {\n el.style.transition = 'all 0.75s 0.0s';\n el.style.transform = 'rotate(360deg)';\n\n setTimeout(() => {\n el.style.transition = null;\n el.style.transform = null;\n }, 1000);\n }\n\n this.change();\n }\n\n public getItem(name): BaseItem<any> {\n return this.items\n .find((item) => item.name === name);\n }\n\n /**\n * @deprecated Use item(name).value$ instead\n */\n public getItemValueChange$(name: string) {\n return this.getItem(name).value$;\n }\n\n /**\n * Update filter actions config\n *\n * @param actions\n */\n public updateActions(actions: FsFilterAction[]): void {\n this._actionsController.initActions(actions);\n }\n\n /**\n * Show \"Filters\" button\n */\n public showFilters(): void {\n this._filtersVisible$.next(true);\n }\n\n /**\n * Hide \"Filters\" button\n */\n public hideFilters(): void {\n this._filtersVisible$.next(false);\n }\n\n /**\n * Show \"Keyword\" field if it present\n */\n public showKeywordField(): void {\n this._keywordController.show();\n }\n\n /**\n * Hide \"Keyword\" field if it present\n */\n public hideKeywordField(): void {\n this._keywordController.hide();\n }\n\n /**\n * Go through actions and check show() callback and update visible actions\n */\n public updateActionsVisibility(): void {\n this._actionsController.updateActionsVisibility();\n }\n\n /**\n * Go through actions and check disabled() callback and update disabled state\n */\n public updateDisabledState(): void {\n this._actionsController.updateDisabledState();\n }\n\n private _updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n private _listenWindowResize() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(100),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this._updateWindowWidth();\n });\n });\n });\n }\n\n private _initItems() {\n this._filterController.init(this.config);\n }\n\n private _initAutoReload() {\n if(this.config.autoReload) {\n interval(this.config.autoReload.seconds * 1000)\n .pipe(\n filter(() => this.config.autoReload.enabled),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.reload(null);\n });\n }\n }\n}\n","<div\n class=\"filter-container\"\n [ngClass]=\"{ 'has-primary-filter': primaryFilterVisible$ | async }\"\n [ngClass]=\"{ 'keyword-full-width': keywordFullWidth$ | async }\">\n @if (primaryFilterVisible$ | async) {\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n }\n <div class=\"filter-bar-container\">\n @if (primaryFilterVisible$ | async) {\n <div class=\"filter-input-container\">\n @if (keywordVisible$ | async) {\n <fs-keyword-input [autofocus]=\"config.autofocus\"></fs-keyword-input>\n }\n @for (item of primaryItems; track item.name) {\n @if (item.visible$ | async) {\n <filter-item\n [item]=\"item\"\n [triggerChangeOn]=\"'change'\">\n </filter-item>\n }\n }\n </div>\n } @else if (hasHeading) {\n <div class=\"filter-heading-container\">\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"chipsTmpl\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterActionsTmpl\"></ng-container>\n </div>\n @if ((primaryFilterVisible$ | async) === true || hasHeading) {\n <ng-container\n [ngTemplateOutlet]=\"chipsTmpl\"\n [ngTemplateOutletContext]=\"{ topMargin: true }\">\n </ng-container>\n }\n <ng-container *ngTemplateOutlet=\"statusBarTmpl\"></ng-container>\n</div>\n<ng-template\n #chipsTmpl\n let-topMargin=\"topMargin\">\n <fs-filter-chips\n class=\"filter-chips\"\n [ngClass]=\"{ 'top-margin': topMargin }\">\n </fs-filter-chips>\n</ng-template>\n<ng-template #statusBarTmpl>\n @if (statusBar) {\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #filterActionsTmpl>\n @if ((actionsVisible$ | async)) {\n <div class=\"filter-actions\">\n <ng-container [ngTemplateOutlet]=\"filterToolbarTmpl\"></ng-container>\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbarTmpl>\n @if (config.reload || config.autoReload || (filtersVisible$ | async)) {\n <div class=\"filter-toolbar\">\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [ngModel]=\"config.autoReload.enabled\"\n (ngModelChange)=\"config.autoReload.enabled = $event\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n </div>\n }\n </div>\n }\n</ng-template>\n<ng-template #headingTmpl>\n @if (headingTemplate) {\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n } @else if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\n</ng-template>","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsStore } from '@firestitch/store';\n\nimport { FilterComponent } from './components/filter/filter.component';\nimport { FilterHeadingDirective, FilterStatusBarDirective, FocusToItemDirective } from './directives';\nimport { FS_FILTER_CONFIG } from './injectors/filter-config';\nimport { FilterConfig } from './interfaces/config.interface';\n\n\n@NgModule({\n imports: [\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective,\n FocusToItemDirective,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective, \n ],\n})\nexport class FsFilterModule {\n public static forRoot(config: FilterConfig = {}): ModuleWithProviders<FsFilterModule> {\n return {\n ngModule: FsFilterModule,\n providers: [\n {\n provide: FS_FILTER_CONFIG,\n useValue: {\n button: {\n label: '',\n },\n ...config,\n } as FilterConfig,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tap","map","switchMap","distinctUntilChanged","filter","i1","i3","i4","i5","i2","MatOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/services/saved-filter-controller.service.ts","../../src/app/enums/action-mode.enum.ts","../../src/app/enums/action-type.enum.ts","../../src/app/enums/button-style.ts","../../src/app/enums/item-date-mode.enum.ts","../../src/app/enums/item-type.enum.ts","../../src/app/enums/menu-action-mode.enum.ts","../../src/app/enums/picker-view-type.enum.ts","../../src/app/models/action-menu-item.model.ts","../../src/app/models/action.model.ts","../../src/app/classes/actions-controller.ts","../../src/app/directives/focus-to-item.directive.ts","../../src/app/directives/heading.directive.ts","../../src/app/directives/status-bar.directive.ts","../../src/app/models/filter-config.ts","../../src/app/helpers/compare.ts","../../src/app/helpers/encode-query-parm.ts","../../src/app/helpers/find-value.ts","../../src/app/helpers/get-range-name.ts","../../src/app/helpers/parse-date.ts","../../src/app/helpers/query-param-transformers.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/models/items/base-item.ts","../../src/app/models/items/base-date-range-item.ts","../../src/app/models/items/date-range-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/models/items/week-item.ts","../../src/app/helpers/restore-items.ts","../../src/app/models/items/base-autocomplete-item.ts","../../src/app/models/items/autocomplete-chips-item.ts","../../src/app/models/items/autocomplete-item.ts","../../src/app/models/items/checkbox-item.ts","../../src/app/models/items/chips-item.ts","../../src/app/models/items/base-date-item.ts","../../src/app/models/items/date-item.ts","../../src/app/models/items/date-time-item.ts","../../src/app/models/items/text-item.ts","../../src/app/models/items/keyword-item.ts","../../src/app/models/items/select-item.ts","../../src/app/helpers/create-filter-item.ts","../../src/app/services/keyword-controller.service.ts","../../src/app/services/persistance-controller.service.ts","../../src/app/services/sort-controller.service.ts","../../src/app/services/query-param-controller.service.ts","../../src/app/services/filter-controller.service.ts","../../src/app/services/focus-controller.service.ts","../../src/app/services/root-filter-overlay.service.ts","../../src/app/components/action-button/action-button.component.ts","../../src/app/components/action-button/action-button.component.html","../../src/app/components/action-kebab-actions/action-kebab-actions.component.ts","../../src/app/components/action-kebab-actions/action-kebab-actions.component.html","../../src/app/components/actions/actions.component.ts","../../src/app/components/actions/actions.component.html","../../src/app/injectors/filter-config.ts","../../src/app/injectors/filter-drawer-data.ts","../../src/app/injectors/filter-drawer-overlay.ts","../../src/app/components/filters-item/base-item/base-item.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.html","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.ts","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.html","../../src/app/components/filters-item/checkbox/checkbox.component.ts","../../src/app/components/filters-item/checkbox/checkbox.component.html","../../src/app/components/filters-item/chips/chips.component.ts","../../src/app/components/filters-item/chips/chips.component.html","../../src/app/components/filters-item/date-range/date-range.component.ts","../../src/app/components/filters-item/date-range/date-range.component.html","../../src/app/components/filters-item/date/date.component.ts","../../src/app/components/filters-item/date/date.component.html","../../src/app/components/filters-item/range/range.component.ts","../../src/app/components/filters-item/range/range.component.html","../../src/app/components/filters-item/select/select.component.ts","../../src/app/components/filters-item/select/select.component.html","../../src/app/components/filters-item/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/components/filters-item/week/week.component.ts","../../src/app/components/filters-item/week/week.component.html","../../src/app/components/filters-item/filter-item.component.ts","../../src/app/components/filters-item/filter-item.component.html","../../src/app/components/filter-item-dialog/filter-item-dialog.component.ts","../../src/app/components/filter-item-dialog/filter-item-dialog.component.html","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.html","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.ts","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.html","../../src/app/components/filter-chips/filter-chips.component.ts","../../src/app/components/filter-chips/filter-chips.component.html","../../src/app/components/keyword-input/keyword-input.component.ts","../../src/app/components/keyword-input/keyword-input.component.html","../../src/app/components/filter/filter.component.ts","../../src/app/components/filter/filter.component.html","../../src/app/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["import { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n} from '../interfaces/saved-filters.interface';\n\nimport type { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class SavedFilterController implements OnDestroy {\n\n private _filterController: FilterController;\n private _savedFilters$ = new BehaviorSubject<IFilterSavedFilter[]>([]);\n private _activeFilter$ = new BehaviorSubject<IFilterSavedFilter>(null);\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _destroy$ = new Subject<void>();\n private _prompt = inject(FsPrompt);\n\n public get singularLabel(): string {\n return this._filterController.config.savedFilters?.label?.singular || 'Saved filter';\n }\n\n public get singularLabelLower(): string {\n return this.singularLabel.toLowerCase();\n }\n\n public get labelIcon(): string {\n return this._filterController.config.savedFilters?.label?.icon || 'save';\n }\n\n public get pluralLabel(): string {\n return this._filterController.config.savedFilters?.label?.plural || 'Saved filters';\n }\n\n public get pluralLabelLower(): string {\n return this.pluralLabel.toLowerCase();\n }\n\n public get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilters$.getValue();\n }\n\n public set savedFilters(filters: IFilterSavedFilter[]) {\n this._savedFilters$.next(filters);\n }\n\n public get savedFilters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilter(): IFilterSavedFilter {\n return this._activeFilter$.getValue();\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._activeFilter$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilterData(): KeyValue {\n return this._activeFilter$.getValue()?.filters;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(\n filterController: FilterController,\n ): Observable<any> {\n this._filterController = filterController;\n \n if (!filterController.config.savedFilters) {\n this._setEnabledStatus(false);\n\n return of(null);\n }\n\n this._setEnabledStatus(true);\n\n return this.load();\n }\n\n public saveAs(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: 'Save as new',\n label: 'Name',\n required: true,\n commitLabel: 'Save',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n id: null,\n name,\n };\n\n return this.save(data);\n }),\n );\n }\n\n public initSavedFilters(savedFilters: IFilterSavedFilter[]): void {\n this.savedFilters = savedFilters;\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this._activeFilter$.next(acitveFilter);\n }\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n if (!this.enabled) {\n return of([]);\n }\n\n return this._filterController.config.savedFilters.load()\n .pipe(\n tap((savedFilters) => {\n this.initSavedFilters(savedFilters);\n }),\n );\n }\n\n public create(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: `Create ${this.singularLabelLower}`,\n label: 'Name',\n required: true,\n commitLabel: 'Create',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n };\n\n return this.save(data);\n }),\n tap((savedFilter) => {\n this.setActiveFilter(savedFilter);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n savedFilter = {\n ...(this.activeFilter || {}),\n ...savedFilter,\n filters: this._filterController.items\n .filter((item) => item.hasValue)\n .reduce((accum, item) => {\n return {\n ...accum,\n [item.name]: item.value,\n };\n }, {}),\n }; \n\n return this._filterController.config.savedFilters\n .save(savedFilter)\n .pipe(\n tap((_savedFilter) => {\n const exists = this.savedFilters.find((f) => f.id === _savedFilter.id);\n\n this.savedFilters = exists ? \n this.savedFilters\n .map((item) => item.id === _savedFilter.id ? _savedFilter : item) : \n [...this.savedFilters, _savedFilter];\n \n this.setActiveFilter(_savedFilter);\n }),\n );\n }\n\n public get orderable(): boolean {\n return !!this._filterController.config.savedFilters.order;\n }\n\n public order(savedFilters: IFilterSavedFilter[]): Observable<IFilterSavedFilter[]> {\n return this._filterController.config.savedFilters\n .order(savedFilters)\n .pipe(\n tap(() => {\n this.savedFilters = [\n ...savedFilters,\n ];\n }),\n );\n }\n\n public delete(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._filterController.config.savedFilters\n .delete(savedFilter)\n .pipe(\n tap(() => {\n this.savedFilters = this.savedFilters\n .filter((f) => f.id !== savedFilter.id);\n \n if (this.activeFilter?.id === savedFilter.id) {\n this.setActiveFilter(null);\n }\n }),\n );\n }\n\n public setActiveFilter(savedFilter: IFilterSavedFilter): void {\n if (savedFilter) {\n const existingFilter = this.savedFilters\n .find((f) => f.id === savedFilter.id);\n\n if (!existingFilter) {\n throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);\n }\n\n this._filterController.values = existingFilter.filters; \n this._activeFilter$.next(existingFilter);\n } else {\n this._activeFilter$.next(null);\n }\n }\n\n private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\n }\n}\n","export enum ActionMode {\n Button = 'button',\n SelectButton = 'selectButton',\n Menu = 'menu',\n File = 'file',\n}\n","import { ButtonStyle } from './button-style';\n\nexport enum ActionType {\n Basic = ButtonStyle.Basic,\n Raised = ButtonStyle.Raised,\n Icon = ButtonStyle.Icon,\n Fab = ButtonStyle.Fab,\n MiniFab = ButtonStyle.MiniFab,\n Flat = ButtonStyle.Flat,\n Stroked = ButtonStyle.Stroked, \n}\n","export enum ButtonStyle {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab',\n Flat = 'flat',\n Stroked = 'stroked',\n}\n","export enum ItemDateMode {\n Calendar = 'calendar',\n ScrollMonthYear = 'monthyear',\n ScrollMonthDayYear = 'monthdayyear'\n}\n","export enum ItemType {\n Text = 'text',\n Select = 'select',\n Range = 'range',\n Date = 'date',\n DateTime = 'datetime',\n DateRange = 'daterange',\n Week = 'week',\n DateTimeRange = 'datetimerange',\n AutoComplete = 'autocomplete',\n AutoCompleteChips = 'autocompletechips',\n Checkbox = 'checkbox',\n Chips = 'chips',\n Keyword = 'keyword',\n}\n","export enum MenuActionMode {\n Menu = 'menu',\n File = 'file',\n Group = 'group',\n}\n","export enum PickerViewType {\n Date = \"date\",\n DateTime = \"datetime\",\n Time = \"time\",\n Week = \"week\",\n MonthRange = \"monthrange\"\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { MenuActionMode } from '../enums';\nimport {\n FsFilterActionClickFn, FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterMenuActionFileItem,\n IFsFilterMenuActionGroupItem,\n IFsFilterMenuActionItem, IFsFilterMenuActionLink,\n} from '../interfaces/action.interface';\n\n\nexport class ActionMenuItem {\n\n public icon: string;\n public label: string;\n public mode: MenuActionMode;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public click: FsFilterActionClickFn;\n public routerLink: IFsFilterMenuActionLink;\n public items: ActionMenuItem[] = [];\n\n private _isGroup = false;\n private _showFn: FsFilterActionShowFn;\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem = {},\n private _parent?: ActionMenuItem,\n ) {\n this._init(config);\n }\n\n public get isGroup(): boolean {\n return this._isGroup;\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || !this.isGroup) {\n this._visible$.next(visible);\n\n return;\n }\n\n const numberOfVisibleChildren = this.items\n .reduce((acc, item) => {\n item.updateVisibility();\n\n if (item.visible) {\n acc++;\n }\n\n return acc;\n }, 0);\n\n this._visible$.next(!!numberOfVisibleChildren);\n }\n\n private _initFile(config: IFsFilterMenuActionFileItem): void {\n this.multiple = config.multiple;\n this.accept = config.accept;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.imageQuality = config.imageQuality;\n this.fileSelected = config.fileSelected;\n }\n\n private _init(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem | IFsFilterMenuActionFileItem,\n ) {\n this.label = config.label;\n this.icon = config.icon;\n this.mode = config.mode || MenuActionMode.Menu;\n this._showFn = config.show;\n\n if (this.mode === MenuActionMode.File) {\n this._initFile(config as IFsFilterMenuActionFileItem);\n }\n\n if ('items' in config) {\n this._isGroup = true;\n\n if (Array.isArray(config.items)) {\n this.items = config\n .items\n .map((item) => new ActionMenuItem(item, this));\n }\n\n this.updateVisibility();\n } else {\n this.click = config.click;\n this.routerLink = config.link;\n\n if (!this._parent) {\n this.updateVisibility();\n }\n }\n }\n}\n","import { ThemePalette } from '@angular/material/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ButtonStyle } from '../enums';\nimport { ActionMode } from '../enums/action-mode.enum';\nimport {\n FsFilterAction,\n FsFilterActionClickFn,\n FsFilterActionDisabledFn,\n FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterFileAction,\n IFsFilterSelectButtonAction,\n} from '../interfaces/action.interface';\n\nimport { ActionMenuItem } from './action-menu-item.model';\nimport { FsFilterConfig } from './filter-config';\n\n\nexport class Action {\n\n public primary = true;\n public icon: string;\n public iconPlacement: 'left' | 'right';\n public label: string;\n public value: any;\n public menu: boolean;\n public color: ThemePalette;\n public customize: boolean;\n public className: string;\n public click: FsFilterActionClickFn;\n public style: ButtonStyle;\n public tabIndex: number;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public tooltip: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public change: (value: any) => void;\n public values: any[];\n public mode: ActionMode;\n public isReorderAction = false;\n public deselect = false;\n public classArray: string[] = [];\n public items: ActionMenuItem[] = [];\n\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n private _showFn: FsFilterActionShowFn;\n private _disabledFn: FsFilterActionDisabledFn;\n\n constructor(filterConfig: FsFilterConfig, actionConfig: FsFilterAction = {}) {\n this._init(filterConfig, actionConfig);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || this.mode !== ActionMode.Menu) {\n this._visible$.next(visible);\n\n return;\n }\n\n const hasVisibleChildren = this.items.some((item) => item.visible);\n this._visible$.next(hasVisibleChildren);\n }\n\n public updateDisabledState(): void {\n if (this._disabledFn) {\n this.disabled = this._disabledFn();\n }\n }\n\n private _init(filterConfig: FsFilterConfig, config: FsFilterAction = {}): void {\n config.mode = config.mode ?? ActionMode.Button;\n this._initCore(filterConfig, config);\n\n switch (config.mode) {\n case ActionMode.Button: {\n this.customize = config.customize;\n this.click = config.click ?? (() => {\n // do nothing\n });\n this._disabledFn = config.disabled;\n\n this.updateDisabledState();\n } break;\n\n case ActionMode.Menu: {\n if (config.items && Array.isArray(config.items)) {\n this.items = config.items.map((item) => new ActionMenuItem(item));\n }\n } break;\n\n case ActionMode.SelectButton: {\n this._initSelectButton(config);\n } break;\n\n case ActionMode.File: {\n this._initFile(config);\n } break;\n }\n\n this.updateVisibility();\n }\n\n private _initCore(filterConfig: FsFilterConfig, config: FsFilterAction): void {\n this.primary = config.primary ?? true;\n this.color = config.color;\n this.tooltip = config.tooltip;\n this.label = config.label;\n this.mode = config.mode;\n this.icon = config.icon;\n this.iconPlacement = config.iconPlacement;\n this._showFn = config.show;\n this.tabIndex = config.tabIndex ?? 0;\n this.menu = config.menu;\n\n if (!this.style) {\n this.style = config.icon && !config.label ?\n ButtonStyle.Icon :\n (config.style || filterConfig.buttonStyle || ButtonStyle.Flat);\n\n if(!this.primary && this.style === ButtonStyle.Flat) {\n this.style = ButtonStyle.Stroked;\n }\n }\n\n if (config.className) {\n this.className = config.className;\n this.classArray = this.className\n .split(' ');\n }\n\n if (!this.primary && this.mode === ActionMode.SelectButton) {\n this.color = null; // should be null because of styles logic in select-button\n }\n\n if (this.primary) {\n this.color = 'primary';\n }\n\n }\n\n private _initSelectButton(config: IFsFilterSelectButtonAction): void {\n this.values = config.values;\n this.value = config.default;\n this.change = config.change;\n this.deselect = config.deselect ?? false;\n }\n\n private _initFile(config: IFsFilterFileAction): void {\n this.fileSelected = config.select;\n this.fileError = config.error;\n this.accept = config.accept;\n this.imageQuality = config.imageQuality;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.click = config.click ?? (() => {\n //\n });\n this._disabledFn = config.disabled;\n\n if ((config).multiple !== undefined) {\n this.multiple = (config).multiple;\n }\n\n this.updateDisabledState();\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { Action } from '../models/action.model';\nimport { FsFilterConfig } from '../models/filter-config';\n\n\n@Injectable()\nexport class ActionsController implements OnDestroy {\n private _breakpointObserver = inject(BreakpointObserver);\n\n\n private _visible$ = new BehaviorSubject(false);\n private _actions$ = new BehaviorSubject<Action[]>([]);\n private _menuActions$ = new BehaviorSubject<Action[]>([]);\n private _destroy$ = new Subject<void>();\n private _config: FsFilterConfig;\n\n private readonly _mobileMedia = '(max-width: 799px)';\n private _allActions: Action[] = [];\n private _reorderAction: Action;\n\n constructor() {\n this._listenMobileMedia();\n }\n\n public get menuActions(): Action[] {\n return this._menuActions$.value;\n }\n\n public get actions(): Action[] {\n return this._actions$.value;\n }\n\n public get actions$(): Observable<Action[]> {\n return this._actions$.asObservable();\n }\n\n public get menuActions$(): Observable<Action[]> {\n return this._menuActions$.asObservable();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public get mobileMode(): boolean {\n return this._breakpointObserver.isMatched(this._mobileMedia);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config: FsFilterConfig) {\n this._config = config;\n this.initActions(config.actions);\n }\n\n public initActions(rawActions: FsFilterAction[]) {\n if (!rawActions || !Array.isArray(rawActions)) {\n return;\n }\n\n this.show();\n\n this._allActions = rawActions\n .map((action) => new Action(this._config, action));\n\n if (this._reorderAction) {\n this._allActions.unshift(this._reorderAction);\n }\n\n this._classifyActions();\n }\n\n public show() {\n this._visible$.next(true);\n }\n\n public hide() {\n this._visible$.next(false);\n }\n\n public addReorderAction(action: Action) {\n this._allActions.unshift(action);\n\n action.isReorderAction = true;\n\n this._classifyAction(action);\n this._reorderAction = action;\n }\n\n public clearActions() {\n this._allActions = [];\n this._setActions([]);\n this._setKebabActions([]);\n }\n\n public updateActionsVisibility() {\n this._allActions.forEach((action) => action.updateVisibility());\n this._classifyActions();\n }\n\n public updateDisabledState() {\n this.actions.forEach((action) => action.updateDisabledState());\n }\n\n private _setKebabActions(actions: Action[]) {\n this._menuActions$.next(actions);\n }\n\n private _setActions(actions: Action[]) {\n this._actions$.next(actions);\n }\n\n private _classifyActions() {\n const kebabActions = [];\n const actions = [];\n const mobileMode = this.mobileMode;\n\n this._allActions\n .filter((action) => {\n return action.visible;\n })\n .forEach((action) => {\n if (action.menu !== false && (action.menu || mobileMode)) {\n kebabActions.push(action);\n } else {\n actions.push(action);\n }\n });\n\n this._setKebabActions(kebabActions);\n this._setActions(actions);\n }\n\n private _classifyAction(action: Action) {\n if (action.menu) {\n this._setKebabActions([...this.menuActions, action]);\n } else {\n this._setActions([...this.actions, action]);\n }\n }\n\n private _listenMobileMedia() {\n this._breakpointObserver.observe(this._mobileMedia)\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._classifyActions();\n });\n }\n}\n","import { AfterViewInit, Directive, Input, inject } from '@angular/core';\n\nimport { MatInput } from '@angular/material/input';\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsAutocompleteComponent } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsComponent } from '@firestitch/autocomplete-chips';\nimport {\n DateRangePickerFromComponent, DateRangePickerToComponent,\n FsDatePickerComponent,\n FsDateScrollPickerComponent,\n} from '@firestitch/datepicker';\n\n\n@Directive({\n selector: '[fsFilterFocusTrigger]',\n standalone: true,\n})\nexport class FocusToItemDirective implements AfterViewInit {\n\n @Input('fsFilterFocusTrigger')\n public focusEnabled = true;\n\n private _targetSelect = inject(MatSelect, { optional: true, self: true });\n private _targetText = inject(MatInput, { optional: true, self: true });\n private _targetDate = inject(FsDatePickerComponent, { optional: true, self: true });\n private _targetDateScroll = inject(FsDateScrollPickerComponent, { optional: true, self: true });\n private _targetDateRangeFrom = inject(DateRangePickerFromComponent, { optional: true, self: true });\n private _targetDateRangeTo = inject(DateRangePickerToComponent, { optional: true, self: true });\n private _targetAutocomplete = inject(FsAutocompleteComponent, { optional: true, self: true });\n private _targetAutocompleteChips = inject(FsAutocompleteChipsComponent, { optional: true, self: true });\n\n\n public ngAfterViewInit(): void {\n if(this.focusEnabled) {\n this._focus();\n }\n }\n\n private _focus() {\n if(this._targetSelect) {\n this._targetSelect.open();\n }\n\n if(this._targetText) {\n this._targetText.focus();\n }\n\n if(this._targetDate) {\n this._targetDate.open();\n }\n\n if(this._targetDateScroll) {\n this._targetDateScroll.open();\n }\n\n if(this._targetDateRangeFrom) {\n this._targetDateRangeFrom.open();\n }\n\n if(this._targetDateRangeTo) {\n this._targetDateRangeTo.open();\n }\n\n if(this._targetAutocomplete) {\n this._targetAutocomplete.focus();\n }\n\n if(this._targetAutocompleteChips) {\n this._targetAutocompleteChips.focus();\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterHeading]',\n standalone: true,\n})\nexport class FilterHeadingDirective {\n templateRef = inject<TemplateRef<any>>(TemplateRef);\n\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n standalone: true,\n})\nexport class FilterStatusBarDirective {\n templateRef = inject<TemplateRef<any>>(TemplateRef);\n\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ButtonStyle } from '../enums';\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { ChangeFn, FilterSort, FsFilterAutoReload, Sort } from '../interfaces/config.interface';\nimport { IFilterSavedFiltersConfig } from '../interfaces/saved-filters.interface';\n\nimport {\n FilterButton,\n FilterConfig,\n FsFilterPersistance,\n IFilterConfigItem,\n} from './../interfaces/config.interface';\n\nexport const SortByField = 'sortName';\nexport const SortDirectionField = 'sortDirection';\n\n\nexport class FsFilterConfig {\n\n public load = true;\n public persist: FsFilterPersistance = false;\n public savedFilters: IFilterSavedFiltersConfig;\n public inline = false;\n public autofocus = false;\n public chips = false;\n public buttonStyle: ButtonStyle;\n public sortValues: any[] = null;\n public sort: Sort = null;\n public queryParam = false;\n public init: (query?: any, sort?: FilterSort | null, filter?: FilterComponent) => void;\n public change: ChangeFn;\n public reload: boolean = true;\n public autoReload: FsFilterAutoReload;\n public clear: ChangeFn;\n public sortChange: ChangeFn;\n public button: FilterButton;\n public items: IFilterConfigItem[];\n public actions: FsFilterAction[];\n public namespace: string; // for persistance\n public heading: string;\n public subheading: string;\n public maxEnabled: number;\n public minSecondaryItems: number;\n\n constructor(data: FilterConfig = {}) {\n this._init(data);\n }\n\n private _init(data: FilterConfig = {}) {\n Object.assign(this, {\n load: data.load ?? true,\n persist: data.persist,\n savedFilters: data.savedFilters,\n autofocus: data.autofocus ?? false,\n chips: data.chips ?? false,\n maxEnabled: data.maxEnabled ?? 0,\n sort: data.sort,\n queryParam: data.queryParam ?? false,\n init: data.init,\n change: data.change,\n reload: data.reload,\n autoReload: data.autoReload ? {\n ...data.autoReload,\n enabled: data.autoReload ? data.autoReload.enabled ?? true : false,\n } : null,\n clear: data.clear,\n minSecondaryItems: data.minSecondaryItems ?? 2,\n sortChange: data.sortChange,\n case: data.case ?? 'camel',\n reloadWhenConfigChanged: data.reloadWhenConfigChanged,\n items: data.items,\n actions: data.actions,\n buttonStyle: data.buttonStyle || ButtonStyle.Flat,\n heading: data.heading,\n subheading: data.subheading,\n });\n\n if (this.persist) {\n if (typeof this.persist === 'object') {\n if (this.persist.name) {\n this.namespace = this.persist.name;\n }\n }\n }\n\n if (this.clear === undefined) {\n this.clear = () => { \n //\n };\n }\n\n this._initButton(data);\n }\n\n private _initButton(data: FilterConfig): void {\n this.button = data.button;\n if (!this.button) {\n this.button = {};\n }\n\n if (this.button.label === undefined) {\n this.button.label = 'Filters';\n }\n\n if (this.button.icon === undefined) {\n this.button.icon = 'filterOutline';\n }\n\n if (this.button.style === undefined) {\n this.button.style = ButtonStyle.Raised;\n }\n\n if (this.button.color === undefined) {\n this.button.color = 'default';\n }\n }\n}\n","import { isObject } from 'lodash-es';\n\n\nexport function objectsAreEquals(obj1, obj2) {\n const oldKeys = Object.keys(obj1);\n const currKeys = Object.keys(obj2);\n\n if (oldKeys.length !== currKeys.length) {\n return false;\n }\n\n for (const key in obj1) {\n if (obj1.hasOwnProperty(key)) {\n const oldItem = obj1[key];\n const currItem = obj2[key];\n const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);\n const isObjects = isObject(oldItem) && isObject(currItem);\n\n if (isArrays && !arraysAreEquals(oldItem, currItem)) {\n return false;\n } else if (isObjects && !objectsAreEquals(oldItem, currItem)) {\n return false;\n } else if (!isArrays && !isObjects && oldItem !== currItem) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function arraysAreEquals(arr1, arr2) {\n if (arr1?.length !== arr2.length) {\n return false;\n }\n\n for (const el of arr1) {\n if (arr2.indexOf(el) === -1) {\n return false;\n }\n }\n\n return true;\n}\n","export function encodeQueryParam(value) {\n return value\n .replace(/,/g, '\\\\,')\n .replace(/:/g, '\\\\:');\n}\n","export function findValue(values, value, children) {\n for (let i = 0; i < values.length; i++) {\n const val = values[i];\n\n if (val[children]) {\n return findValue(val[children], value, children);\n }\n\n if (val.value === value) {\n return val;\n }\n }\n\n return undefined;\n}\n","export function getRangeName(name: string, range: string) {\n return name.concat(range.charAt(0).toUpperCase()).concat(range.slice(1));\n}\n","import { isDate, isValid, parseISO } from 'date-fns';\n\nexport function parseDate(value: string) {\n if (value && (!isDate(value) || !isValid(value))) {\n return parseISO(value);\n }\n\n return value;\n}\n","export function filterToQueryParam(value, name): string {\n return `${encodeURIComponent(value)}:${encodeURIComponent(name)}`;\n}\n\nexport function filterFromQueryParam(param: string): string[] {\n const parts = param.split(/(?<!\\\\):/);\n\n return [decodeURIComponent(parts[0]), decodeURIComponent(parts[1])];\n}\n\n","import { ItemType } from '../enums/item-type.enum';\nimport { SelectItem } from '../models/items';\n\nimport { getRangeName } from './get-range-name';\nimport { filterFromQueryParam } from './query-param-transformers';\n\nexport function parseItemValueFromStored(item, params) {\n const param = params[item.name];\n\n switch (item.type) {\n case ItemType.Range: {\n const min = params[getRangeName(item.name, 'min')];\n const max = params[getRangeName(item.name, 'max')];\n\n return { min: min, max: max };\n }\n\n case ItemType.DateRange: case ItemType.DateTimeRange: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n\n return { from: from, to: to };\n }\n\n case ItemType.Week: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n const period = params[`${item.name}Period`];\n\n return { from, to, period };\n }\n\n case ItemType.Select: {\n return itemTypeSelect(item, param); \n }\n\n case ItemType.Checkbox: {\n return param === 'true' || param === true;\n }\n\n case ItemType.AutoComplete: {\n const filterParts = filterFromQueryParam(param);\n\n return {\n name: filterParts[1],\n value: filterParts[0],\n };\n }\n\n case ItemType.AutoCompleteChips: \n case ItemType.Chips: {\n const filterParts = param.split(/(?<!\\\\),/);\n\n return filterParts.reduce((arry, value) => {\n const chipParts = filterFromQueryParam(value);\n\n arry.push({\n name: chipParts[1]\n .replace(/\\\\,/g, ',')\n .replace(/\\\\:/g, ':'),\n value: chipParts[0],\n });\n\n return arry;\n }, []);\n }\n\n default: {\n return param;\n }\n }\n}\n\nfunction itemTypeSelect(item: SelectItem, param) {\n if (!param) {\n return [];\n }\n\n const values = param.split(',');\n\n return values;\n}\n","\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from 'rxjs';\nimport {\n map,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { isFunction } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { IFilterDefaultFn } from '../../interfaces/items/base.interface';\n\n\nexport abstract class BaseItem<T extends IFilterConfigItem> {\n\n public name: string;\n public label: any;\n public chipLabel: string | string[];\n public defaultValueFn: IFilterDefaultFn;\n public defaultValue: any;\n public clearable: boolean;\n public placeholder: string;\n public persistanceDisabled: boolean;\n public queryParamsDisabled: boolean;\n public primary: boolean;\n public secondary: boolean;\n public changeCallback: (item: BaseItem<T>, filter: FilterComponent) => void;\n public initCallback: (item: BaseItem<T>, filter?) => void;\n\n protected readonly _type: T['type'];\n protected _valuesFn: (keyword?: string, filter?: FilterComponent) => Observable<any> | any[];\n\n private _hidden$ = new BehaviorSubject(false);\n private _value$ = new BehaviorSubject<{ value: any, emitChange: boolean }>({ value: undefined, emitChange: true });\n private _values$ = new BehaviorSubject<{ name: string, value: string|null }[]>(null);\n private _secondaryVisible$ = new BehaviorSubject(false);\n private _destroy$ = new Subject<void>();\n\n constructor(\n itemConfig: T,\n protected _filter: FilterComponent,\n ) {\n this._type = itemConfig.type;\n this._initConfig(itemConfig);\n }\n\n public secondaryShow() {\n this._secondaryVisible$.next(true);\n }\n\n public secondaryHide() {\n this._secondaryVisible$.next(false);\n }\n\n public get secondaryVisible$(): Observable<boolean> {\n return this._secondaryVisible$.asObservable();\n }\n\n public get secondaryVisible(): boolean {\n return this._secondaryVisible$.getValue();\n }\n\n public get filter(): FilterComponent {\n return this._filter;\n }\n\n public get hidden$(): Observable<boolean> {\n return this._hidden$.asObservable();\n }\n\n public get mergedLabel(): string {\n return Array.isArray(this.label) ? this.label.join(' / ') : this.label;\n }\n\n public get visible$(): Observable<boolean> {\n return this._hidden$\n .pipe(\n map((hidden) => !hidden),\n );\n }\n\n public get visible(): boolean {\n return !this._hidden$.getValue();\n }\n\n public get hidden(): boolean {\n return this._hidden$.getValue();\n }\n\n public get isTypeAutocomplete() {\n return this.type === ItemType.AutoComplete;\n }\n\n public get isTypeAutocompleteChips() {\n return this.type === ItemType.AutoCompleteChips;\n }\n\n public get isTypeChips() {\n return this.type === ItemType.Chips;\n }\n\n public get isTypeCheckbox() {\n return this.type === ItemType.Checkbox;\n }\n\n public get isTypeSelect() {\n return this.type === ItemType.Select;\n }\n\n public get isTypeDate() {\n return this.type === ItemType.Date;\n }\n\n public get isTypeDateRange() {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeRange() {\n return this.type === ItemType.Range;\n }\n\n public get isTypeDateTimeRange() {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isTypeDateTime() {\n return this.type === ItemType.DateTime;\n }\n\n public get isTypeKeyword(): boolean {\n return this.type === ItemType.Keyword;\n }\n\n public get isChipVisible(): boolean {\n return this.hasValue;\n }\n\n public get destroy$() {\n return this._destroy$.asObservable();\n }\n\n public get type(): T['type'] {\n return this._type;\n }\n\n public get hasValue() {\n return this.value !== null && this.value !== undefined;\n }\n\n public get notValue$() {\n return this.value$\n .pipe(\n map(() => !this.hasValue),\n );\n }\n\n public get hasValue$() {\n return this.value$\n .pipe(\n map(() => this.hasValue),\n );\n }\n\n public get chips$() {\n return this.value$\n .pipe(\n map(() => this.chips || []),\n );\n }\n\n public set values(values) {\n this._values$.next(values);\n }\n\n public get values() {\n return this._values$.getValue();\n }\n\n public get values$(): Observable<any> {\n return this._values$.asObservable();\n }\n\n public get valueEvent$() {\n return this._value$.asObservable();\n }\n\n public get value$() {\n return this._value$.asObservable()\n .pipe(\n map((event) => event.value),\n );\n }\n\n public get value() {\n return this._value$.getValue().value;\n }\n\n public set value(value) {\n this.setValue(value);\n }\n\n /**\n * @deprecated Use value instead\n */\n public set model(value) {\n this.value = value;\n }\n\n public setValue(value: unknown, emitChange: boolean = true) {\n this._value$.next({ value, emitChange });\n }\n\n public get queryParam(): Record<string, unknown> {\n return this.query;\n }\n\n public hide() {\n if(!this.primary) {\n this.secondaryHide();\n }\n\n this._hidden$.next(true);\n }\n\n public show() {\n if(!this.primary) {\n this.secondaryShow();\n }\n\n this._hidden$.next(false);\n }\n\n public get query(): Record<string, any> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value,\n };\n }\n\n public init(value: unknown): Observable<any> {\n return forkJoin([\n this.loadDefault(),\n this.loadValues(),\n ])\n .pipe(\n tap(() => this.initValue(value)), \n );\n }\n\n public loadDefault(): Observable<any> {\n return this.defaultValueFn()\n .pipe(\n tap((value) => {\n this.defaultValue = value;\n }),\n );\n }\n\n public loadValues() {\n return of(null)\n .pipe(\n switchMap(() => {\n if((this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips)) {\n return of([]);\n } \n\n if (typeof this._valuesFn === 'function') {\n const values = this._valuesFn();\n\n return values instanceof Observable ? values : of(values);\n }\n \n return of(this.values);\n }),\n tap((values) => {\n this.values = (values || [])\n .map((item) => ({\n ...item,\n value: (item.value ?? null) === null ? null : `${item.value}`,\n }));\n }),\n );\n }\n\n public initValue(value: unknown) {\n this.setValue(value === undefined ? this.defaultValue : value);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(undefined, emitChange);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public clearByName(name: string, emitChange: boolean = true) {\n //\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public clone(): BaseItem<T> {\n return Object.assign(\n Object.create(Object.getPrototypeOf(this)), \n this,\n );\n }\n\n public emitChange() {\n if (this.changeCallback) {\n this.changeCallback(this, this.filter);\n }\n }\n\n private _initConfig(item: T) {\n this.name = item.name;\n this.label = item.label;\n this.primary = this.isTypeKeyword || (item.primary ?? false);\n this.secondary = item.secondary ?? false;\n this.chipLabel = item.chipLabel;\n this._hidden$.next(item.hide ?? !(item.show ?? true));\n this._secondaryVisible$.next(item.secondary ?? false);\n this.clearable = item.clear ?? true;\n this.persistanceDisabled = item.disablePersist ?? false;\n this.queryParamsDisabled = item.disableQueryParams ?? false;\n this.defaultValueFn = typeof item.default === 'function' ?\n item.default as IFilterDefaultFn : () => of(item.default);\n\n if ('placeholder' in item) {\n this.placeholder = item.placeholder;\n }\n\n this.initCallback = item.init || (() => {\n //\n });\n\n this.changeCallback = item.change || (() => {\n //\n });\n\n if (isFunction(item.values)) {\n this._valuesFn = item.values;\n } else {\n this.values = item.values;\n }\n }\n \n public abstract get chips(): { name?: string, value: string, label: string }[];\n\n}\n","import { format, iso8601 } from '@firestitch/date';\n\n\nimport { isDate, isValid, parseISO } from 'date-fns';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigDateRangeItem,\n} from '../../interfaces/items/date-range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport abstract class BaseDateRangeItem extends BaseItem<IFilterConfigDateRangeItem> {\n\n public get isTypeDateRange(): boolean {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeDateTimeRange(): boolean {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get hasValue(): boolean {\n return this.value?.from instanceof Date || this.value?.to instanceof Date;\n }\n\n public setValue(value, emitChange = true) {\n let from = value?.from;\n let to = value?.to;\n\n if (value) {\n if (from && (!isDate(from) || !isValid(from))) {\n from = parseISO(from);\n }\n if (to && (!isDate(to) || !isValid(to))) {\n to = parseISO(to);\n }\n }\n\n super.setValue({ from, to }, emitChange);\n }\n\n public get queryParam(): Record<string, unknown> {\n const value: { from?: Date, to?: Date } = {};\n const paramFromName = getRangeName(this.name, 'from');\n const paramToName = getRangeName(this.name, 'to');\n\n value[paramFromName] = this.value.from ? iso8601(this.value.from) : undefined;\n value[paramToName] = this.value.to ? iso8601(this.value.to) : undefined;\n\n return value;\n }\n\n public get query(): Record<string, Date> {\n if(!this.hasValue) {\n return {};\n }\n\n const value: { from?: Date, to?: Date } = {};\n const paramFromName = getRangeName(this.name, 'from');\n const paramToName = getRangeName(this.name, 'to');\n\n if(this.value.from) {\n value[paramFromName] = this.value.from;\n }\n\n if(this.value.to) {\n value[paramToName] = this.value.to;\n }\n\n return value;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n const dateFormat = this.type === ItemType.DateRange ? 'date' : 'date-time';\n const chips = [];\n\n if (this.value?.from) {\n chips.push({\n name: 'from',\n value: format(this.value.from, dateFormat),\n label: this.label[0],\n });\n }\n\n if (this.value?.to) {\n chips.push({\n name: 'to',\n value: format(this.value.to, dateFormat),\n label: this.label[1],\n });\n }\n\n return chips;\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue({}, emitChange);\n }\n \n public clearByName(name: string, emitChange: boolean = true) {\n if (name === 'from') {\n this.setValue({ \n ...this.value,\n from: null,\n }, emitChange);\n } else if (name === 'to') {\n this.setValue({ \n ...this.value,\n to: null,\n }, emitChange);\n }\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './base-date-range-item';\n\n\nexport class DateRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateRangeItem(config, filter);\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './base-date-range-item';\n\n\nexport class DateTimeRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateTimeRangeItem(config, filter);\n }\n\n}\n","\nimport { Observable, tap } from 'rxjs';\n\nimport { isObject } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigRangeItem,\n} from '../../interfaces/items/range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class RangeItem extends BaseItem<IFilterConfigRangeItem> {\n\n public declare options: { scale?: number };\n public declare prefix: string;\n public declare suffix: string;\n \n constructor(\n itemConfig: IFilterConfigRangeItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.options = itemConfig.options;\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigRangeItem, filter: FilterComponent) {\n return new RangeItem(config, filter);\n }\n\n public get query(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n const paramMinName = getRangeName(name, 'min');\n const paramMaxName = getRangeName(name, 'max');\n\n if (isObject(value)) {\n params[paramMinName] = value.min || undefined;\n params[paramMaxName] = value.max || undefined;\n } else {\n params[paramMinName] = undefined;\n params[paramMaxName] = undefined;\n }\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n const chips = [];\n\n if (this.value.min) {\n chips.push({\n name: 'min',\n label: this.label[0],\n value: this.value.min,\n });\n }\n\n if (this.value.max) {\n chips.push({\n name: 'max',\n label: this.label[1],\n value: this.value.max,\n });\n }\n\n return chips;\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue({}, emitChange);\n }\n\n public clearByName(name: string, emitChange: boolean = true) {\n if (name === 'min') {\n this.setValue({ ...this.value, min: undefined }, emitChange);\n } else if (name === 'max') {\n this.setValue({ ...this.value, max: undefined }, emitChange);\n }\n }\n\n public get hasValue() {\n return this.value?.min !== undefined || super.value?.max !== undefined;\n }\n\n public setValue(value: { min?: string, max?: string }, emitChange: boolean = true) {\n super.setValue({\n min: value?.min,\n max: value?.max,\n }, emitChange);\n }\n\n public init(value: unknown): Observable<unknown> {\n return super.init(value)\n .pipe(\n tap(() => {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n\n if (!this.value) {\n this.value = this.defaultValue || {};\n }\n }),\n );\n }\n}\n","import { formatPeriodObject } from '@firestitch/datepicker';\n\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport { parseDate } from '../../helpers/parse-date';\nimport { IFilterConfigWeekItem } from '../../interfaces/items/week.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class WeekItem extends BaseItem<IFilterConfigWeekItem> {\n\n public declare seedDate: Date;\n \n constructor(\n itemConfig: IFilterConfigWeekItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.seedDate = itemConfig.seedDate;\n }\n\n public static create(config: IFilterConfigWeekItem, filter: FilterComponent) {\n return new WeekItem(config, filter);\n }\n\n public setValue(value, emitChange = true) {\n if (value) {\n value.from = parseDate(value.from);\n value.to = parseDate(value.to);\n value.period = parseInt(value.period, 10) || undefined;\n }\n\n super.setValue(value, emitChange);\n }\n\n public get query() {\n const value = this.value;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: value?.from || undefined,\n [paramToName]: value?.to || undefined,\n [paramPeriodName]: value?.period || undefined,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n return [\n {\n value: formatPeriodObject(this.value),\n label: this.label,\n },\n ];\n }\n}\n","import { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { WeekItem } from '../models/items/week-item';\n\nimport { getRangeName } from './get-range-name';\nimport { parseItemValueFromStored } from './parse-item-value-from-stored';\n\n\n/**\n * We need this function because when we store persisted/query/remote filter values\n * it stores with different format, ex.: Range will be stored as RangeFrom && RangeTo\n * and in this case we don't know how to restroe those values.\n *\n * This function do convertation for those kinds of stored values\n *\n * @param params\n * @param items\n * @param paramsCase\n */\nexport function restoreItems(params, items) {\n const result = {};\n\n Object.keys(params)\n .forEach((name) => {\n const item = findItemWidthName(items, name);\n\n if (item) {\n result[item.name] = parseItemValueFromStored(item, params);\n }\n });\n\n return result;\n}\n\nfunction findItemWidthName(items, name) {\n return items\n .find((filterItem) => {\n if (filterItem instanceof RangeItem) {\n return name === getRangeName(filterItem.name, 'min') ||\n name === getRangeName(filterItem.name, 'max') ||\n name === filterItem.name;\n } else if (filterItem instanceof DateRangeItem || filterItem instanceof DateTimeRangeItem) {\n return name === getRangeName(filterItem.name, 'from') ||\n name === getRangeName(filterItem.name, 'to');\n } else if (filterItem instanceof WeekItem) {\n return name === getRangeName(filterItem.name, 'from')\n || name === getRangeName(filterItem.name, 'to')\n || name === `${filterItem.name}Period`;\n }\n\n return filterItem.name === name;\n });\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseItem } from './base-item';\n\ntype AutoCompleteItem = IFilterConfigAutocompleteItem | IFilterConfigAutocompleteChipsItem;\n\nexport abstract class BaseAutocompleteItem<T extends AutoCompleteItem> extends BaseItem<T> {\n\n public search: string;\n\n public declare fetchOnFocus: boolean;\n\n public get valuesFn() {\n return this._valuesFn;\n }\n \n constructor(\n itemConfig: T,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.fetchOnFocus = itemConfig.fetchOnFocus ?? true;\n }\n\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\n\nimport { BaseAutocompleteItem } from './base-autocomplete-item';\n\n\nexport class AutocompleteChipsItem\n extends BaseAutocompleteItem<IFilterConfigAutocompleteChipsItem> {\n\n public declare chipImage: string;\n public declare chipIcon: string;\n public declare chipColor: string;\n public declare chipIconColor: string;\n public declare chipBackground: string;\n public declare chipClass: string;\n public declare panelActions: {\n label: string;\n click: (filter: FilterComponent) => void;\n }[];\n\n constructor(\n itemConfig: IFilterConfigAutocompleteChipsItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.chipImage = itemConfig.chipImage ?? 'image';\n this.chipIcon = itemConfig.chipIcon;\n this.chipIconColor = itemConfig.chipIconColor;\n this.chipColor = itemConfig.chipColor;\n this.chipBackground = itemConfig.chipBackground;\n this.chipClass = itemConfig.chipClass;\n this.panelActions = itemConfig.panelActions || [];\n }\n\n public static create(config: IFilterConfigAutocompleteChipsItem, filter: FilterComponent) {\n return new AutocompleteChipsItem(config, filter);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value\n .filter((item) => !!item.value)\n .map((item) =>{\n return `${item.value}:${encodeQueryParam(item.name)}`;\n })\n .join(','),\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value\n .filter((item) => !!item.value)\n .map((item) => item.value)\n .join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n return this.hasValue ? [\n {\n value: super.value\n .reduce((acc, i) => {\n acc.push((`${i.name}`).trim());\n\n return acc;\n }, [])\n .join(', '),\n label: this.label,\n },\n ] : [];\n }\n\n public get hasValue() {\n return Array.isArray(super.value) && super.value.length > 0;\n }\n\n public setValue(value, emitChange = true) {\n super.setValue(Array.isArray(value) ? value : [], emitChange);\n }\n\n}\n","\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseAutocompleteItem } from './base-autocomplete-item';\n\n\nexport class AutocompleteItem extends BaseAutocompleteItem<IFilterConfigAutocompleteItem> {\n\n public static create(config: IFilterConfigAutocompleteItem, filter: FilterComponent) {\n return new AutocompleteItem(config, filter);\n }\n\n public get value() {\n let value = clone(super.value);\n\n if (!super.value || super.value.value === undefined) {\n return undefined;\n }\n\n value = super.value.value;\n\n return value;\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: `${this.value.value}:${encodeQueryParam(this.value.name)}`,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n return [\n {\n value: this.value ? this.value.name : '', \n label: this.value.label,\n },\n ];\n }\n}\n","\nimport { toString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigCheckboxItem } from '../../interfaces/items/checkbox.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class CheckboxItem extends BaseItem<IFilterConfigCheckboxItem> {\n\n private declare _checked;\n private declare _unchecked;\n\n constructor(\n itemConfig: IFilterConfigCheckboxItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this._checked = itemConfig.checked ? toString(itemConfig.checked) : 'true';\n this._unchecked = itemConfig.unchecked ? toString(itemConfig.unchecked) : undefined;\n this.defaultValue = itemConfig.default;\n }\n\n public get checked(): boolean {\n return this._checked;\n }\n\n public get unchecked(): boolean {\n return this._unchecked;\n }\n \n public get hasValue(): boolean {\n return !!this.value;\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue && this._unchecked === undefined) {\n return {};\n }\n\n return {\n [this.name]: this.value ? this.checked : this.unchecked,\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.value) {\n return [];\n }\n\n return [\n {\n value: 'Yes',\n label: this.label,\n },\n ];\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: 'true',\n };\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(false, emitChange);\n }\n\n}\n","\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { encodeQueryParam } from '../../helpers';\nimport { IFilterConfigChipsItem } from '../../interfaces/items/chips.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class ChipsItem extends BaseItem<IFilterConfigChipsItem> {\n\n public declare multiple: boolean;\n\n constructor(\n itemConfig: IFilterConfigChipsItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.multiple = itemConfig.multiple ?? true;\n }\n \n public static create(config: IFilterConfigChipsItem, filter: FilterComponent) {\n return new ChipsItem(config, filter);\n }\n\n public get hasValue() {\n return this.value.length > 0;\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n \n return {\n [this.name]: this.value\n .map((item) => `${item.value}:${encodeQueryParam(item.name)}`)\n .join(','),\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.value\n .map((item) => item.value)\n .join(','),\n };\n }\n \n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue) {\n return [];\n }\n\n const chips = this.value\n .reduce((acc, i) => {\n acc.push((`${i.name}`).trim());\n\n return acc;\n }, [])\n .join(', ');\n\n return [{\n value: chips,\n label: this.label,\n }];\n }\n\n\n public setValue(value, emitChange = true) {\n super.setValue(Array.isArray(value) ? value : [], emitChange);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue([], emitChange);\n }\n\n}\n","\nimport { isDate, isValid, parseISO } from 'date-fns';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport abstract class BaseDateItem extends BaseItem<IFilterConfigDateItem> {\n\n public maxYear: number;\n public mode: ItemDateMode;\n \n constructor(\n itemConfig: any,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.maxYear = itemConfig.maxYear;\n this.mode = itemConfig.mode || ItemDateMode.Calendar;\n }\n\n public setValue(value, emitChange = true) {\n if (value) {\n if (!isDate(value) || !isValid(value)) {\n value = parseISO(value);\n }\n }\n\n super.setValue(value, emitChange);\n }\n\n}\n","\nimport { format, iso8601 } from '@firestitch/date';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './base-date-item';\n\n\nexport class DateItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateItem(config, filter);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: iso8601(super.value),\n };\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if (!this.hasValue) {\n return [];\n }\n\n let dateFormat = 'date';\n\n if (this.mode === ItemDateMode.ScrollMonthYear) {\n dateFormat = 'full-date-dayless';\n }\n\n return [\n {\n value: format(super.value, dateFormat),\n label: this.label,\n },\n ];\n }\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigDateItem,\n} from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './base-date-item';\n\n\nexport class DateTimeItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateTimeItem(config, filter);\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n return [];\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigTextItem,\n} from '../../interfaces/items/text.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class TextItem extends BaseItem<IFilterConfigTextItem> {\n\n public declare prefix: string;\n public declare suffix: string;\n\n constructor(\n itemConfig: IFilterConfigTextItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigTextItem, filter: FilterComponent) {\n return new TextItem(config, filter);\n }\n\n public get hasValue() {\n return this.value !== undefined && this.value !== null && this.value !== '';\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue || this.isTypeKeyword) {\n return [];\n }\n\n let value = this.value;\n\n if(this.prefix) {\n value = `${this.prefix.length > 1 ? `${this.prefix} ` : this.prefix}${value}`;\n }\n\n if(this.suffix) {\n value = `${value}${this.suffix.length > 1 ? ` ${this.suffix}` : this.suffix}`;\n }\n\n return [\n {\n value,\n label: this.label,\n },\n ];\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigKeywordItem } from '../../interfaces/items/keyword.interface';\n\nimport { TextItem } from './text-item';\n\n\nexport class KeywordItem extends TextItem {\n\n public declare fullWidth: boolean;\n\n constructor(\n itemConfig: IFilterConfigKeywordItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.fullWidth = itemConfig.fullWidth;\n }\n\n public static create(config: IFilterConfigKeywordItem, filter: FilterComponent) {\n return new KeywordItem(config, filter);\n }\n\n public get hasValue() {\n return typeof this.value === 'string' && this.value.length > 0;\n }\n\n public get query() {\n if(!this.hasValue) {\n return {};\n }\n\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if(!this.hasValue || this.isTypeKeyword) {\n return [];\n }\n\n return [\n {\n value: this.value,\n label: this.label,\n },\n ];\n }\n}\n","\nimport { map, Observable, tap } from 'rxjs';\n\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigSelectItem } from '../../interfaces/items/select.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class SelectItem extends BaseItem<IFilterConfigSelectItem> {\n\n public declare children: string;\n public declare multiple: boolean;\n public declare isolate: boolean;\n public declare isolated: boolean;\n public declare isolateLabel: string;\n public declare isolateValues: number[] | string[] | boolean[];\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _filter);\n this.multiple = itemConfig.multiple || false;\n this.children = itemConfig.children || null;\n\n if (itemConfig.isolate) {\n this.isolate = true;\n this.isolateLabel = itemConfig.isolate.label;\n this.isolateValues = Array.isArray(itemConfig.isolate.value) ? \n itemConfig.isolate.value as any : [itemConfig.isolate.value];\n }\n }\n\n public static create(itemConfig: IFilterConfigSelectItem, filter: FilterComponent) {\n return new SelectItem(itemConfig, filter);\n }\n\n public clear(emitChange: boolean = true) {\n this.setValue(this.multiple ? [] : undefined, emitChange);\n }\n \n public init(value: unknown): Observable<unknown> {\n return super.init(value)\n .pipe(\n tap(() => {\n if(this.isolate) {\n const v = Array.isArray(value) ? value : [value];\n this.isolated = v.some((_v) => {\n return this.isolateValues.includes(_v as never);\n });\n }\n }),\n );\n }\n\n public get values$(): Observable<any> {\n return super.values$\n .pipe(\n map((values) => { \n if(!this.isolate) {\n return values;\n }\n\n return values\n .filter((value) => {\n return !this.isolateValues.includes(value.value as never);\n });\n }),\n );\n }\n\n public setValue(value, emitChange = true) {\n if(this.multiple) {\n value = Array.isArray(value) ? value : [];\n } else {\n value = Array.isArray(value) ? value[0] : value;\n }\n\n super.setValue(value, emitChange);\n }\n\n public get queryParam(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: this.multiple ? this.value.join(',') : this.value,\n };\n }\n\n public get query(): Record<string, unknown> {\n if(!this.hasValue) {\n return {};\n }\n\n return {\n [this.name]: Array.isArray(this.value) ? this.value.join(',') : this.value,\n };\n }\n\n public get hasValue() {\n if(this.multiple) {\n return Array.isArray(super.value) && super.value.length > 0;\n }\n\n return super.hasValue;\n }\n\n public get flattenedValues(): { name: string, value: any }[] {\n if(this.children) {\n return this.values.reduce((acc, item) => {\n return acc.concat(item[this.children] || []);\n }, []);\n }\n\n return this.values;\n }\n\n public get chips(): { name?: string, value: string, label: string }[] {\n if (!this.hasValue) {\n return [];\n }\n\n const options = this.flattenedValues\n .filter((item) => {\n return this.multiple ? this.value\n .includes(item.value) : `${this.value}` === `${item.value}`;\n })\n .map((item) => {\n return item.name;\n });\n\n\n return [\n {\n value: options.join(', '),\n label: this.label,\n },\n ];\n }\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { IFilterConfigKeywordItem } from '../interfaces/items';\nimport { IFilterConfigDateRangeItem } from '../interfaces/items/date-range.interface';\nimport { IFilterConfigDateItem } from '../interfaces/items/date.interface';\nimport { IFilterConfigWeekItem } from '../interfaces/items/week.interface';\nimport { AutocompleteChipsItem } from '../models/items/autocomplete-chips-item';\nimport { AutocompleteItem } from '../models/items/autocomplete-item';\nimport { CheckboxItem } from '../models/items/checkbox-item';\nimport { ChipsItem } from '../models/items/chips-item';\nimport { DateItem } from '../models/items/date-item';\nimport { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeItem } from '../models/items/date-time-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { KeywordItem } from '../models/items/keyword-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { SelectItem } from '../models/items/select-item';\nimport { TextItem } from '../models/items/text-item';\nimport { WeekItem } from '../models/items/week-item';\n\n\nexport function createFilterItem(item: IFilterConfigItem, filter: FilterComponent) {\n switch (item.type) {\n case ItemType.Select: {\n return SelectItem.create(item, filter);\n }\n\n case ItemType.Chips: {\n return ChipsItem.create(item, filter);\n }\n\n case ItemType.Range: {\n return RangeItem.create(item, filter);\n }\n\n case ItemType.DateRange: {\n return DateRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.DateTimeRange: {\n return DateTimeRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.Date: {\n return DateItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.Week: {\n return WeekItem.create(item as IFilterConfigWeekItem, filter);\n }\n\n case ItemType.DateTime: {\n return DateTimeItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.AutoComplete: {\n return AutocompleteItem.create(item, filter);\n }\n\n case ItemType.AutoCompleteChips: {\n return AutocompleteChipsItem.create(item, filter);\n }\n\n case ItemType.Checkbox: {\n return new CheckboxItem(item, filter);\n }\n\n case ItemType.Keyword: {\n return KeywordItem.create(item as IFilterConfigKeywordItem, filter);\n }\n \n case ItemType.Text: {\n return TextItem.create(item, filter);\n }\n }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\n\nimport { BehaviorSubject, distinctUntilChanged, map, Observable, of, switchMap, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { KeywordItem } from '../models/items';\n\n\n@Injectable()\nexport class KeywordController {\n\n private _keywordItem$ = new BehaviorSubject<KeywordItem>(null);\n private _keywordVisible$ = new BehaviorSubject(null);\n private _keywordFullWidth$ = new BehaviorSubject(null);\n private _destroyRef = inject(DestroyRef);\n\n public init() {\n this._keywordItem$\n .pipe(\n // when item changes, unsubscribe from the previous visible$\n switchMap((item) => item ? item.visible$ : of(false)),\n // avoid redundant writes\n distinctUntilChanged(),\n tap((visible) => this._keywordVisible$.next(visible)),\n // clean up on destroy,\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n \n this._keywordItem$\n .pipe(\n map((item) => !!item?.fullWidth),\n // avoid redundant writes\n distinctUntilChanged(),\n tap((fullWidth) => this._keywordFullWidth$.next(fullWidth)),\n // clean up on destroy,\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n public get keywordItem$(): Observable<KeywordItem> {\n return this._keywordItem$.asObservable();\n }\n\n public get keywordItem(): KeywordItem {\n return this._keywordItem$.value;\n }\n\n public set keywordItem(item: KeywordItem) {\n this._keywordItem$.next(item);\n }\n\n public clear(emitChange: boolean = true) {\n this.keywordItem?.setValue('', emitChange);\n }\n\n public show() {\n this.keywordItem?.show();\n }\n\n public hide() {\n this.keywordItem?.hide();\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordVisible$.asObservable();\n }\n\n public get keywordFullWidth$(): Observable<boolean> {\n return this._keywordFullWidth$.asObservable();\n }\n\n}\n\n","import { Location } from '@angular/common';\nimport { DestroyRef, inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsStore } from '@firestitch/store';\n\nimport { Observable, of } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FsFilterPersistance, FsFilterPersistanceConfig } from '../interfaces';\n\nimport { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class PersistanceController {\n\n private _store = inject(FsStore);\n private _filterController: FilterController;\n private _name: string;\n private _data: any = {};\n private readonly _location = inject(Location);\n private readonly _storeKey = 'fs-filter-persist';\n private readonly _dialogRef = inject(MatDialogRef, { optional: true });\n private readonly _drawerRef = inject(DrawerRef, { optional: true }); \n private readonly _destroyRef = inject(DestroyRef);\n private readonly _route = inject(ActivatedRoute);\n \n public get enabled() {\n return !this._dialogRef && \n !this._drawerRef && \n this._route.snapshot.queryParams.persist !== 'disable' &&\n this._filterController.config.persist;\n }\n\n public init(filterController: FilterController): Observable<any> {\n this._filterController = filterController;\n\n if (this.enabled) { \n const persistanceConfig = this._initConfig(filterController.config.persist);\n this._name = persistanceConfig.name;\n\n if(this._route.snapshot.queryParams.persist === 'clear') {\n this._set({});\n }\n\n this._data = this._get() || {};\n \n this._filterController.change$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n this._set(this._filterController.values);\n });\n }\n\n return of(null);\n }\n\n public getQuery() {\n return this._data.query || {};\n }\n\n private _set(value: any) {\n this._data['query'] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this._name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this._name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ISortingChangeEvent } from '../interfaces';\nimport {\n FilterSort,\n} from '../interfaces/config.interface';\nimport { KeyValue } from '../interfaces/external-params.interface';\n\nimport type { FilterController } from './filter-controller.service';\n\n\n@Injectable()\nexport class SortController { \n\n private _name = null;\n private _direction = null;\n private _change$ = new Subject<{ name: string, direction: string }>();\n private _filterController: FilterController;\n private _route = inject(ActivatedRoute);\n\n public init(filterController: FilterController) {\n this._filterController = filterController;\n\n if(this._filterController.config.queryParam) { \n this._name = this._route.snapshot.queryParams.sortName; \n this._direction = this._route.snapshot.queryParams.sortDirection;\n }\n }\n\n public clear() {\n this._name = null;\n this._direction = null;\n }\n\n public get queryParam(): KeyValue {\n if(!this.name) {\n return {};\n }\n\n return {\n sortName: this.name,\n sortDirection: this.direction,\n };\n }\n\n public query(): KeyValue {\n if(!this.name) {\n return {};\n }\n\n return {\n order: `${this.name},${this.direction}`,\n };\n }\n\n public getSort(): FilterSort {\n return {\n value: this.name,\n direction: this.direction,\n };\n }\n\n public get direction() {\n return this._direction || 'asc';\n }\n\n public get name() {\n return this._name;\n }\n\n public get change$(): Observable<{ name: string, direction: string }> {\n return this._change$.asObservable();\n }\n\n public updateSort(sort: ISortingChangeEvent, emitChange: boolean = true) {\n this._name = sort.sortBy;\n this._direction = sort.sortDirection;\n this._change$.next({ name: this._name, direction: this._direction });\n \n if(emitChange) {\n if(this._filterController.config.sortChange) {\n this._filterController.config.sortChange(this._filterController.query, this.getSort());\n }\n \n this._filterController.change();\n }\n }\n\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { DrawerRef } from '@firestitch/drawer';\n\nimport { filter, merge, Observable, of, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { restoreItems } from '../helpers/restore-items';\nimport { KeyValue } from '../interfaces';\n\nimport { FilterController } from './filter-controller.service';\nimport { SortController } from './sort-controller.service';\n\n\n@Injectable()\nexport class QueryParamController {\n \n private _filterController: FilterController;\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _sortController = inject(SortController);\n private readonly _route = inject(ActivatedRoute);\n private readonly _dialogRef = inject(MatDialogRef, { optional: true });\n private readonly _drawerRef = inject(DrawerRef, { optional: true }); \n\n public get enabled() {\n return !this._dialogRef && \n !this._drawerRef && \n this._filterController.config.queryParam;\n }\n\n public get params(): Record<string, any> {\n if(!this.enabled) {\n return {};\n }\n\n const items = [\n ...this._filterController.items,\n ]\n .filter((item) => !!item);\n \n return restoreItems(\n this._route.snapshot.queryParams,\n items,\n );\n }\n\n public init(filterController: FilterController): Observable<any> {\n this._filterController = filterController;\n\n if (this.enabled) {\n merge(\n this._filterController.change$, \n this._filterController.init$,\n )\n .pipe(\n filter(() => this.enabled),\n tap(() => this.updateQueryParams()),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n return of(null);\n }\n\n public queryParams(): KeyValue {\n if(!this.enabled) {\n return {};\n }\n\n return {\n ...this._filterController.queryParam,\n ...this._sortController.queryParam,\n };\n }\n\n public updateQueryParams() {\n const queryParams = {\n ...this._filterController.items\n .reduce((acc, item) => {\n return {\n ...acc,\n [item.name]: undefined,\n };\n }, {}),\n ...this.queryParams(),\n };\n\n this._replaceState(queryParams);\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .forEach((name) => {\n const value = data[name];\n if(value === undefined || value === null) {\n url.searchParams.delete(name);\n } else {\n url.searchParams.set(name, value);\n }\n });\n\n history.replaceState({}, null, url.pathname + decodeURIComponent(url.search));\n }\n}\n","import { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, forkJoin, merge, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, filter, finalize, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n\nimport type { FilterComponent } from '../components/filter/filter.component';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n IFilterConfigItem,\n} from '../interfaces/config.interface';\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport { FsFilterConfig } from '../models/filter-config';\nimport { KeywordItem } from '../models/items';\nimport { BaseItem } from '../models/items/base-item';\n\nimport { KeywordController } from './keyword-controller.service';\nimport { PersistanceController } from './persistance-controller.service';\nimport { QueryParamController } from './query-param-controller.service';\nimport { SavedFilterController } from './saved-filter-controller.service';\nimport { SortController } from './sort-controller.service';\n\n\n@Injectable()\nexport class FilterController implements OnDestroy {\n\n public filter: FilterComponent;\n\n private _ready$ = new BehaviorSubject(false);\n private _items = new Map<string, BaseItem<IFilterConfigItem>>();\n private _config: FsFilterConfig;\n private _init$ = new Subject<void>();\n private _change$ = new Subject<BaseItem<IFilterConfigItem>[]>();\n private _destroy$ = new Subject<void>();\n private _persistanceController = inject(PersistanceController);\n private _savedFilterController = inject(SavedFilterController);\n private _queryParamController = inject(QueryParamController);\n private _keywordController = inject(KeywordController);\n private _sortController = inject(SortController);\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return Array.from(this._items.values());\n }\n\n public get itemNames(): string[] {\n return this.items.map((item) => item.name);\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get init$() {\n return this._init$.asObservable();\n }\n\n public get change$() {\n return this._change$\n .pipe(\n debounceTime(30),\n );\n }\n\n public change() {\n this._change$.next(null);\n }\n\n public get ready$() {\n return this._ready$.asObservable();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(config: FsFilterConfig) {\n this._config = config;\n of(null)\n .pipe(\n tap(() => this._addItems(this._config.items || [])),\n tap(() => this._keywordController.init()),\n tap(() => this._sortController.init(this)),\n switchMap(() => forkJoin({\n savedFilters: this._savedFilterController.init(this),\n persistance: this._persistanceController.init(this),\n queryParams: this._queryParamController.init(this),\n })),\n switchMap(() => this._initItems()), \n tap(() => this._initChanges()),\n tap(() => {\n this._init$.next();\n if (this._config.init) {\n this._config.init(this.query, this._sortController.getSort(), this.filter);\n }\n }),\n finalize(() => this._ready$.next(true)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n public getItem(name: string): BaseItem<IFilterConfigItem> {\n return this._items.get(name);\n }\n\n public filtersClear() {\n this.items\n .filter((item) => item.clearable)\n .forEach((item) => {\n item.clear(false);\n });\n\n this._keywordController.clear(false);\n this._sortController.clear();\n\n this.change();\n }\n\n public get queryParam(): Record<string, unknown> {\n return this.items\n .reduce((accum, item) => {\n return {\n ...accum,\n ...item.queryParam,\n };\n }, {});\n }\n\n public get query(): KeyValue {\n return {\n ...this.items\n .filter((item) => item.visible)\n .reduce((accum, item) => {\n return {\n ...accum,\n ...item.query,\n };\n }, {}),\n ...this._sortController.query(),\n };\n }\n\n public set values(values: Record<string, unknown>) {\n this.items.forEach((item) => {\n item.setValue(values[item.name], false);\n item.emitChange();\n });\n\n this.change();\n }\n\n public get values(): Record<string, unknown> {\n return this.items\n .reduce((acc, item) => {\n const value = item.value;\n\n if (value !== null) {\n acc[item.name] = value;\n }\n\n return acc;\n }, {});\n }\n \n private _getInitValues(): KeyValue {\n let result: KeyValue = {};\n\n if (this._savedFilterController.enabled && this._savedFilterController.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilterController.activeFilterData,\n };\n\n } else {\n result = {\n ...result, \n ...this._persistanceController.getQuery(),\n };\n \n if (this._config.queryParam) {\n result = {\n ...result, \n ...this._queryParamController.params,\n };\n }\n }\n\n return result;\n }\n\n private _initItems(): Observable<any> {\n if(!this.items.length) {\n return of(null);\n }\n \n const values = this._getInitValues();\n\n return forkJoin(\n this.items\n .map((item) => {\n return item.init(values[item.name]);\n }),\n )\n .pipe(\n tap(() => {\n this._initEnabledItems();\n }),\n tap(() => this.items\n .forEach((item) => {\n item.initCallback(item, this.filter);\n })),\n );\n }\n\n private _initEnabledItems() {\n let enabled = 0;\n\n this.items\n .forEach((item) => {\n if(!item.primary) {\n if(item.hasValue) {\n item.secondaryShow();\n }\n }\n });\n\n this.items\n .forEach((item) => {\n if(!item.primary) {\n if(item.secondaryVisible) {\n enabled++;\n } else if(enabled < this._config.maxEnabled) {\n item.secondaryShow();\n enabled++;\n }\n }\n });\n }\n\n private _addItems(itemsConfig: IFilterConfigItem[]) {\n let secondaryItemCount = itemsConfig\n .filter((itemConfig) => !itemConfig.primary && itemConfig.secondary)\n .length;\n\n const itemMap = itemsConfig \n .filter((itemConfig) => {\n if (this._items.has(itemConfig.name)) {\n throw Error('Filter init error. Items name must be unique.');\n }\n\n return true;\n })\n .map((itemConfig): [string, BaseItem<IFilterConfigItem>] => { \n if(\n !itemConfig.primary && \n !itemConfig.secondary && \n secondaryItemCount < this._config.minSecondaryItems\n ) {\n itemConfig.secondary = true;\n secondaryItemCount++;\n } \n\n const filterItem = createFilterItem(itemConfig, this.filter);\n\n if (filterItem instanceof KeywordItem) {\n this._keywordController.keywordItem = filterItem;\n }\n\n return [itemConfig.name, filterItem];\n });\n\n\n this._items = new Map(itemMap);\n }\n\n private _initChanges() {\n merge(\n ...this.items\n .map((item) => item.valueEvent$\n .pipe(\n filter((event) => event.emitChange),\n map(() => item),\n )),\n )\n .pipe(\n tap((item) => this._change$.next([item])),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._change$\n .pipe(\n tap((items: BaseItem<IFilterConfigItem>[]) => {\n if (this._config.change) {\n this._config.change(this.query, this._sortController.getSort());\n }\n\n items?.forEach((item) => {\n if (item.changeCallback) {\n item.changeCallback(item, this.filter);\n }\n });\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Injectable() \nexport class FocusControllerService {\n\n private _focusOn = new BehaviorSubject<{ item: BaseItem<any>, type: string}>(null);\n\n public get focusOn$() {\n return this._focusOn.asObservable();\n }\n\n public click(item: BaseItem<any>, type: string) {\n this._focusOn.next({ item, type });\n }\n\n public listenFocusFor$(targetItem: BaseItem<any>, targetType: string) {\n return this._focusOn\n .pipe(\n filter((event) => !!event),\n filter(({ item, type }) => {\n return targetItem === item && targetType === type;\n }),\n tap(() => this.clearFocus()),\n );\n }\n\n public clearFocus() {\n this._focusOn.next(null);\n }\n}\n","import { Injectable } from '@angular/core';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsRootFilterOverlayService {\n \n public openedFilters = 0;\n \n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\nimport { NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';\nimport { MatIconButton, MatFabButton, MatMiniFabButton, MatButton } from '@angular/material/button';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatIcon } from '@angular/material/icon';\n\n\n@Component({\n selector: 'fs-filter-action-button',\n templateUrl: './action-button.component.html',\n styleUrl: './action-button.component.scss',\n host: { class: 'action-button' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgSwitch,\n NgSwitchCase,\n MatIconButton,\n NgClass,\n NgTemplateOutlet,\n MatFabButton,\n MatMiniFabButton,\n NgSwitchDefault,\n MatButton,\n FsFormModule,\n NgIf,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionButtonComponent {\n\n public ButtonStyle = ButtonStyle;\n\n @Input()\n public action: Action;\n\n}\n","<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { Action } from '../../models/action.model';\nimport { MatIconButton } from '@angular/material/button';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n selector: 'fs-filter-action-kebab-actions',\n styleUrls: ['./action-kebab-actions.component.scss'],\n templateUrl: './action-kebab-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIconButton,\n FsMenuModule,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionKebabActionsComponent {\n\n @Input()\n public kebabActions: Action[];\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n}\n","<button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n @for (subAction of childAction.items; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\n </fs-menu>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { ActionMode, ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\nimport { FsFilterActionButtonComponent } from '../action-button/action-button.component';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterActionKebabActionsComponent } from '../action-kebab-actions/action-kebab-actions.component';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterActionButtonComponent,\n FsPopoverModule,\n FsMenuModule,\n MatIcon,\n MatSelect,\n FsSelectButtonModule,\n NgClass,\n FormsModule,\n FsFormModule,\n MatOption,\n FsFileModule,\n FsFilterActionKebabActionsComponent,\n AsyncPipe,\n ],\n})\nexport class FsFilterActionsComponent {\n\n @Input()\n public kebabActions: Action[] = [];\n\n @Input()\n public actions: Action[] = [];\n\n public ButtonStyle = ButtonStyle;\n public ActionMode = ActionMode;\n\n public actionChange(action: Action, value: any, selectButton: MatSelect): void {\n if(action.change) {\n action.change(value); \n\n if(action.deselect) {\n selectButton.writeValue(null);\n }\n }\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n}\n","@for (action of actions; track action) {\n @switch (action.mode) {\n @case (ActionMode.Button) {\n <fs-filter-action-button\n [action]=\"action\"\n class=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n }\n @case (ActionMode.Menu) {\n <fs-filter-action-button\n class=\"action\"\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n <fs-menu\n #someRef\n class=\"action\">\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group [label]=\"childAction.label\">\n @for (subAction of childAction.items; track subAction) {\n @switch (subAction.mode) {\n @case ('menu') {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [multiple]=\"subAction.multiple\"\n [accept]=\"subAction.accept || '*'\"\n [minWidth]=\"subAction.minWidth\"\n [minHeight]=\"subAction.minHeight\"\n [imageWidth]=\"subAction.maxWidth\"\n [imageHeight]=\"subAction.maxHeight\"\n (select)=\"subAction.fileSelected($event)\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n }\n }\n </fs-menu-group>\n } @else {\n @switch (childAction.mode) {\n @case ('menu') {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"(childAction.visible$ | async) === false\"\n (click)=\"childAction.click($event);\">\n @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [multiple]=\"childAction.multiple\"\n [accept]=\"childAction.accept || '*'\"\n [minWidth]=\"childAction.minWidth\"\n [minHeight]=\"childAction.minHeight\"\n [imageWidth]=\"childAction.maxWidth\"\n [imageHeight]=\"childAction.maxHeight\"\n (select)=\"childAction.fileSelected($event)\"\n [hidden]=\"(childAction.visible$ | async) === false\">\n @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n }\n }\n }\n </fs-menu>\n }\n @case (ActionMode.SelectButton) {\n <mat-select\n class=\"action action-select-button\"\n [buttonType]=\"'basic'\"\n [ngClass]=\"{\n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n }\"\n [placeholder]=\"action.label\"\n [(ngModel)]=\"action.value\"\n [color]=\"action.color\"\n (ngModelChange)=\"actionChange(action, $event, selectButton)\"\n fsSelectButton\n #selectButton\n [deselectOnChange]=\"action.deselect\">\n @for (item of action.values; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n }\n @case (ActionMode.File) {\n <fs-file\n class=\"action action-button\"\n [accept]=\"action.accept || '*'\"\n [multiple]=\"action.multiple\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n <fs-filter-action-button [action]=\"action\"></fs-filter-action-button>\n </fs-file>\n }\n }\n}\n@if (kebabActions?.length) {\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_FILTER_CONFIG = new InjectionToken<any>('fs.filter-config');\n","import { InjectionToken } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { IFilterConfigItem } from '../interfaces';\nimport { BaseItem } from '../models/items';\n\nexport const FILTER_DRAWER_DATA = new InjectionToken<{ item: BaseItem<IFilterConfigItem>, autofocusName: string, overlayRef: OverlayRef }>('fs.filter-drawer-data');\n","import { InjectionToken } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<OverlayRef>('fs.filter-drawer-overlay');\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { IFilterConfigItem } from '../../../interfaces/config.interface';\nimport { BaseItem } from '../../../models/items/base-item';\n\n\n@Component({\n selector: 'base-item',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class BaseItemComponent<T extends BaseItem<IFilterConfigItem>> {\n\n @Input() public item: T;\n @Input() public overlayRef: OverlayRef;\n @Input() public triggerChangeOn: 'close' | 'change' = 'close';\n\n public close() {\n if(this.overlayRef) {\n this.overlayRef.detachBackdrop();\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { Observable } from 'rxjs';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { AutocompleteItem } from '../../../models/items/autocomplete-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class AutocompleteComponent extends BaseItemComponent<AutocompleteItem> {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public displayWith = (data) => {\n return data ? data.name : data;\n };\n\n public fetch = (keyword): Observable<any> => {\n return this.item.valuesFn(keyword, this.item.filter) as Observable<any>;\n };\n}\n","<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearable\"\n name=\"item.name\">\n <ng-template\n fsAutocompleteTemplate\n let-data=\"data\">\n {{ data.name }}\n </ng-template>\n</fs-autocomplete>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { AutocompleteChipsItem } from '../../../models/items/autocomplete-chips-item';\nimport { FilterComponent } from '../../filter/filter.component';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocompletechips',\n templateUrl: './autocompletechips.component.html',\n styleUrls: ['./autocompletechips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class AutocompletechipsComponent \n extends BaseItemComponent<AutocompleteChipsItem> \n implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n public value: any[];\n \n private _injector = inject(Injector);\n\n public ngOnInit(): void {\n this.value = this.item.value;\n }\n\n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n }\n\n public panelClosed() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public removed() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public clear() {\n this.item.clear();\n }\n\n public fetch = (keyword) => {\n return this.item.valuesFn(keyword, this.item.filter);\n };\n\n public compareItems(item1, item2): boolean {\n return item1?.value === item2?.value;\n }\n\n public actionClick(action: any) {\n const filterComponent = this._injector.get(FilterComponent);\n action.click(filterComponent);\n }\n}\n","<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [(ngModel)]=\"value\"\n [floatLabel]=\"floatLabel\"\n (clear)=\"clear()\"\n [allowText]=\"false\"\n [padless]=\"true\"\n [label]=\"item.label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearable\"\n [removable]=\"item.clearable\"\n [compareWith]=\"compareItems\"\n (panelClosed)=\"panelClosed()\"\n (removed)=\"removed()\"\n name=\"model\">\n <ng-template\n fsAutocompleteObject\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n @for (action of item.panelActions; track action.label) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n</fs-autocomplete-chips>","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n MatSlideToggle,\n FormsModule,\n FsFormModule,\n ],\n})\nexport class CheckboxComponent extends BaseItemComponent<CheckboxItem> implements OnInit {\n\n public value: boolean;\n\n public ngOnInit() {\n this.value = this.item.value;\n }\n\n public change() {\n this.item.setValue(this.value);\n this.close();\n }\n \n}\n","<mat-slide-toggle\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change()\"\n [name]=\"item.name\">\n {{ item.label }}\n</mat-slide-toggle>","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsChipModule } from '@firestitch/chip';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ChipsItem } from '../../../models/items/chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n FsChipModule,\n FormsModule,\n FsFormModule,\n AsyncPipe,\n ],\n})\nexport class ChipsComponent extends BaseItemComponent<ChipsItem> implements OnInit, OnDestroy {\n\n public value: any;\n\n private _destroyRef = inject(DestroyRef);\n private _cdRef = inject(ChangeDetectorRef);\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((value) => {\n this.value = value;\n this._cdRef.detectChanges();\n });\n }\n\n public ngOnDestroy(): void {\n this.item.value = this.value;\n }\n\n public compareFn = (modelValue, chipValue) => {\n return String(modelValue.value) === String(chipValue.value);\n };\n}\n","@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport { DateRangeItem } from '../../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../../models/items/date-time-range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsDatePickerModule,\n FsFormModule,\n ],\n})\nexport class DateRangeComponent \n extends BaseItemComponent<DateRangeItem | DateTimeRangeItem> implements OnInit, OnDestroy {\n\n @Input() public autofocusName: string;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public viewType = PickerViewType.Date;\n public from: Date;\n public to: Date;\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTimeRange ? \n PickerViewType.DateTime : PickerViewType.Date;\n\n if(!this.autofocusName) {\n this.autofocusName = this.from ? 'to' : 'from';\n }\n\n this.from = this.item.value?.from;\n this.to = this.item.value?.to;\n }\n \n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n } \n \n public change() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public get value() {\n return {\n from: this.from,\n to: this.to,\n };\n }\n}\n","<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport type { BaseDateItem } from '../../../models/items/base-date-item';\nimport type { DateItem } from '../../../models/items/date-item';\nimport type { DateTimeItem } from '../../../models/items/date-time-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\n})\nexport class DateComponent extends BaseItemComponent<DateItem | DateTimeItem> implements OnInit {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public viewType = PickerViewType.Date;\n\n public itemDateMode = ItemDateMode;\n public showYear = true;\n public showMonth = true;\n public showDay = true;\n public value: any;\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTime ? \n PickerViewType.DateTime : PickerViewType.Date;\n\n if ((this.item as BaseDateItem).mode === ItemDateMode.ScrollMonthYear) {\n this.showDay = false;\n }\n\n this.value = this.item.value;\n }\n\n public change(event: any) {\n this.item.value = event;\n this.close();\n }\n}\n","@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { RangeItem } from '../../../models/items/range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsFormModule,\n MatSuffix,\n ],\n})\nexport class RangeComponent extends BaseItemComponent<RangeItem> implements OnInit, OnDestroy {\n\n @Input() public autofocusName: string;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public min: number;\n public max: number;\n\n public ngOnInit(): void {\n this.min = this.item.value?.min;\n this.max = this.item.value?.max;\n }\n\n public ngOnDestroy(): void {\n this.item.value = {\n min: this.min,\n max: this.max,\n };\n }\n\n public keyup(event: KeyboardEvent) {\n if(event.key === 'Enter' || event.code === 'Tab') {\n this.close();\n }\n }\n}\n","<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { SelectItem } from '../../../models/items/select-item';\nimport { BaseItemComponent } from '../base-item';\n\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatOptgroup,\n MatCheckbox,\n AsyncPipe, \n ],\n})\nexport class SelectComponent extends BaseItemComponent<SelectItem> implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n @ViewChild(MatSelect, { static: true })\n public select: MatSelect;\n\n public value: any;\n\n private _cdRef = inject(ChangeDetectorRef);\n private _destroyRef = inject(DestroyRef);\n\n public changed() {\n if(!this.item.multiple) {\n this.change();\n }\n }\n\n public selectOpenedChange(opened: boolean) {\n if(!opened && !this.item.isolate) {\n this.close();\n }\n }\n\n public change() {\n let value = this.value;\n if(this.item.isolate) {\n if(this.item.multiple) {\n value = value.filter((v) => {\n return !this.item.isolateValues.includes(v.value as never);\n });\n }\n\n this.item.isolated = false;\n }\n\n this.item.value = value;\n }\n\n public ngOnDestroy(): void {\n if(this.item.isolate) {\n this.change();\n }\n }\n\n public ngOnInit(): void {\n this.value = this.item.value;\n if(this.item.isolate && !this.item.hasValue) {\n this.item.isolated = false;\n }\n }\n\n public markForCheck() {\n this._cdRef.markForCheck();\n }\n\n public isolateChange(event: MatCheckboxChange) {\n if(event.checked) {\n this.value = this.item.multiple ? this.item.isolateValues : this.item.isolateValues[0];\n } else {\n this.value = this.item.multiple ? [] : null;\n }\n }\n}\n","<mat-form-field\n [ngClass]=\"{ isolate: item.isolate }\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n [fsFilterFocusTrigger]=\"autofocus && !item.isolate\"\n [(ngModel)]=\"value\"\n (openedChange)=\"selectOpenedChange($event)\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n @if (item.children) {\n @for (option of item.values$ | async; track option) {\n @if (option[item.children]) {\n <mat-optgroup [label]=\"option.name\">\n @for (childOption of option[item.children]; track childOption.value) {\n <mat-option [value]=\"childOption.value\">\n {{ childOption.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n } @else {\n @for (option of item.values$ | async; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n@if (item.isolate) {\n <div class=\"isolate-checkbox\">\n <mat-checkbox\n (change)=\"isolateChange($event)\"\n [(ngModel)]=\"item.isolated\">\n <span class=\"checkbox-label\">\n {{ item.isolateLabel }}\n </span>\n </mat-checkbox>\n </div>\n}","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n\nimport { FsCommonModule } from '@firestitch/common';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { TextItem } from '../../../models/items/text-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n FocusToItemDirective,\n MatSuffix,\n FsCommonModule,\n ],\n})\nexport class TextComponent extends BaseItemComponent<TextItem> implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n \n public value: string;\n\n public ngOnInit(): void {\n this.value = this.item.value;\n }\n\n public ngOnDestroy(): void {\n if(this.triggerChangeOn === 'close') {\n this.item.value = this.value;\n }\n }\n\n public change() {\n if(this.triggerChangeOn === 'change') {\n this.item.value = this.value;\n }\n }\n\n public keyup(event: KeyboardEvent) {\n if(this.triggerChangeOn === 'close') {\n if(event.key === 'Enter' || event.code === 'Tab') {\n this.close();\n }\n }\n }\n\n}\n","<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n (fsModelChange)=\"change()\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item.directive';\nimport { WeekItem } from '../../../models/items/week-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\n})\nexport class WeekComponent extends BaseItemComponent<WeekItem> implements OnInit {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n\n public value: Date;\n\n public ngOnInit() {\n this.value = this.item.value;\n }\n}\n","<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateWeekPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"item.value = value\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n</mat-form-field>","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport type { AutocompleteChipsItem } from '../../models/items/autocomplete-chips-item';\nimport type { AutocompleteItem } from '../../models/items/autocomplete-item';\nimport type { BaseItem } from '../../models/items/base-item';\nimport type { CheckboxItem } from '../../models/items/checkbox-item';\nimport type { ChipsItem } from '../../models/items/chips-item';\nimport type { DateItem } from '../../models/items/date-item';\nimport type { DateRangeItem } from '../../models/items/date-range-item';\nimport type { DateTimeItem } from '../../models/items/date-time-item';\nimport type { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport type { RangeItem } from '../../models/items/range-item';\nimport { SelectItem } from '../../models/items/select-item';\nimport type { TextItem } from '../../models/items/text-item';\nimport type { WeekItem } from '../../models/items/week-item';\n\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './autocompletechips/autocompletechips.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { DateRangeComponent } from './date-range/date-range.component';\nimport { DateComponent } from './date/date.component';\nimport { RangeComponent } from './range/range.component';\nimport { SelectComponent } from './select/select.component';\nimport { TextComponent } from './text/text.component';\nimport { WeekComponent } from './week/week.component';\n\n\n@Component({\n selector: 'filter-item',\n templateUrl: './filter-item.component.html',\n styleUrls: ['./filter-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n TextComponent,\n SelectComponent,\n ChipsComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n WeekComponent,\n CheckboxComponent,\n AsyncPipe,\n ],\n})\nexport class FilterItemComponent implements OnInit, OnDestroy {\n\n @Input() public autofocus: boolean = false;\n @Input() public floatLabel: 'auto' | 'always' = 'auto';\n @Input() public autofocusName: string;\n @Input() public overlayRef: OverlayRef;\n @Input() public item: BaseItem<any>;\n @Input() public name: string;\n @Input() public triggerChangeOn: 'close' | 'change' = 'close';\n\n public itemType = ItemType;\n\n public get textItem(): TextItem {\n return this.item as TextItem;\n }\n\n public get selectItem(): SelectItem {\n return this.item as SelectItem;\n }\n\n public get chipsItem(): ChipsItem {\n return this.item as ChipsItem;\n }\n\n public get rangeItem(): RangeItem {\n return this.item as RangeItem;\n }\n\n public get autocompleteItem(): AutocompleteItem {\n return this.item as AutocompleteItem;\n }\n\n public get autocompleteChipsItem(): AutocompleteChipsItem {\n return this.item as AutocompleteChipsItem;\n }\n\n public get dateItem(): DateItem {\n return this.item as DateItem;\n }\n\n public get dateRangeItem(): DateRangeItem {\n return this.item as DateRangeItem;\n }\n\n public get dateTimeItem(): DateTimeItem {\n return this.item as DateTimeItem;\n }\n\n public get dateTimeRangeItem(): DateTimeRangeItem {\n return this.item as DateTimeRangeItem;\n }\n\n public get weekItem(): WeekItem {\n return this.item as WeekItem;\n }\n\n public get checkboxItem(): CheckboxItem {\n return this.item as CheckboxItem;\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _destroy$ = new Subject<void>();\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n}\n","@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [overlayRef]=\"overlayRef\"\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\"\n [overlayRef]=\"overlayRef\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n [overlayRef]=\"overlayRef\"\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\"\n [triggerChangeOn]=\"triggerChangeOn\">\n </filter-item-checkbox>\n }\n }\n </div>\n}","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\n\nimport { FILTER_DRAWER_DATA } from '../../injectors';\nimport { IFilterConfigItem } from '../../interfaces';\nimport { BaseItem } from '../../models/items';\nimport { FilterItemComponent } from '../filters-item/filter-item.component';\n\n@Component({\n templateUrl: './filter-item-dialog.component.html',\n styleUrls: ['./filter-item-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FormsModule,\n FsFormModule,\n FsSkeletonModule,\n FilterItemComponent,\n ],\n})\nexport class FilterItemDialogComponent {\n\n public item: BaseItem<IFilterConfigItem> = inject(FILTER_DRAWER_DATA)?.item;\n public autofocusName: string = inject(FILTER_DRAWER_DATA)?.autofocusName;\n public overlayRef: OverlayRef = inject(FILTER_DRAWER_DATA)?.overlayRef;\n\n}\n","<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [overlayRef]=\"overlayRef\"\n [item]=\"item\">\n </filter-item>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { FsChipModule } from '@firestitch/chip';\n\nimport { createFilterItem } from '../../../../../helpers';\nimport { IFilterConfigItem } from '../../../../../interfaces';\nimport { IFilterSavedFilter } from '../../../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../../../models/items';\nimport { FilterController } from '../../../../../services';\n\n\n@Component({\n selector: 'fs-saved-filter-chips',\n templateUrl: './saved-filter-chips.component.html',\n styleUrls: ['./saved-filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsChipModule,\n ],\n})\nexport class FsFilterSavedFilterChipsComponent implements OnInit {\n\n @Input() public savedFilter: IFilterSavedFilter;\n\n public items: BaseItem<IFilterConfigItem>[] = [];\n\n private _filterController = inject(FilterController);\n\n public ngOnInit(): void {\n this.items = [...this._filterController.items]\n .filter((item) => !!this.savedFilter.filters[item.name])\n .map((item: BaseItem<IFilterConfigItem>): BaseItem<IFilterConfigItem> => {\n\n const config = {\n ...this._filterController.config.items\n .find((configItem) => item.name === configItem.name),\n };\n\n const filterItem = createFilterItem(config, this._filterController.filter);\n filterItem.values = item.values;\n filterItem.initValue(this.savedFilter.filters[item.name]);\n \n return filterItem;\n });\n }\n}\n","<div class=\"filter-chips\">\n @for (item of items; track item.name) {\n @for (chip of item.chips; track chip.label) {\n <fs-chip size=\"small\">\n {{ chip.value ? chip.label + ': ' + chip.value : chip.label }}\n </fs-chip>\n }\n }\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { IFilterConfigItem } from '../../../interfaces';\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../models/items';\nimport { FilterController } from '../../../services/filter-controller.service';\nimport { SavedFilterController } from '../../../services/saved-filter-controller.service';\n\nimport { FsFilterSavedFilterChipsComponent } from './components/saved-filter-chips';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n FsFilterSavedFilterChipsComponent,\n FsMenuModule,\n ],\n})\nexport class FsFilterSavedFilterManageComponent implements OnInit {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFilterController = inject(SavedFilterController);\n private _cdRef = inject(ChangeDetectorRef);\n private _filterController = inject(FilterController);\n private _dialogRef = inject(MatDialogRef);\n\n public ngOnInit(): void {\n this.savedFilters = this._savedFilterController.savedFilters;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._filterController.items;\n }\n\n public get pluralLabel(): string {\n return this._savedFilterController.pluralLabel;\n }\n\n public get sortable(): boolean {\n return this._savedFilterController.orderable;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._dialogRef.close();\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = this._savedFilterController.savedFilters;\n this._cdRef.markForCheck();\n });\n }\n\n public order(savedFilters: IFilterSavedFilter[]) {\n this._savedFilterController.order(savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, OnInit, QueryList, StaticProvider, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatOption, MatSelect, MatSelectChange } from '@angular/material/select';\n\nimport { FsChipComponent, FsChipModule } from '@firestitch/chip';\nimport { FsButtonDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\n\nimport { BehaviorSubject, Observable, delay, take, tap } from 'rxjs';\n\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ItemType } from '../../enums';\nimport { FILTER_DRAWER_DATA } from '../../injectors';\nimport { IFilterConfigItem } from '../../interfaces';\nimport { BaseItem } from '../../models/items/base-item';\nimport { SavedFilterController } from '../../services';\nimport { FilterController } from '../../services/filter-controller.service';\nimport { FilterItemDialogComponent } from '../filter-item-dialog';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter/saved-filter-manage/saved-filter-manage.component';\n\n\n@Component({\n selector: 'fs-filter-chips',\n templateUrl: './filter-chips.component.html',\n styleUrls: ['./filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n AsyncPipe,\n FsChipModule,\n MatSelect,\n MatOption,\n FsSelectButtonModule,\n MatButtonModule,\n FsButtonDirective,\n FormsModule,\n ],\n})\nexport class FsFilterChipsComponent implements OnInit {\n\n @ViewChildren(FsChipComponent) \n public chips: QueryList<FsChipComponent>;\n\n public ItemType = ItemType;\n public secondaryItems: BaseItem<IFilterConfigItem>[] = [];\n\n private _filterController = inject(FilterController);\n private _dialog = inject(MatDialog);\n private _message = inject(FsMessage);\n private _savedFilterController = inject(SavedFilterController);\n private _injector = inject(Injector);\n private _overlay = inject(Overlay);\n private _overlayRef: OverlayRef;\n private _destroyRef = inject(DestroyRef);\n private _elementRef = inject(ElementRef);\n private _hasSecondaryValue$ = new BehaviorSubject(false);\n\n public get items() {\n return this._filterController.items\n .filter((item) => !item.isTypeKeyword);\n }\n\n public addFilter(event: MatSelectChange) {\n const item: BaseItem<IFilterConfigItem> = event.value;\n item.secondaryShow();\n\n this.chips.changes\n .pipe(\n take(1),\n delay(100),\n tap(() => {\n this.openChip(item);\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n public get disabledItems() {\n return this.items\n .filter((item) => !item.secondaryVisible && !item.hasValue && !item.primary);\n }\n\n public get hasSecondaryValue$(): Observable<boolean> {\n return this._hasSecondaryValue$.asObservable();\n }\n\n public get savedFilterController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public get hasSecondaryValue(): boolean {\n return this._filterController.items\n .some((item) => item.hasValue && item.visible && !item.primary);\n }\n\n public ngOnInit(): void {\n this.secondaryItems = this.items\n .filter((item) => !item.primary);\n\n this._initHasSecondaryValue();\n }\n\n public clear() {\n this._filterController.items\n .filter((item) => item.clearable)\n .forEach((item) => {\n if(!item.secondary) {\n item.secondaryHide();\n }\n item.clear(false);\n });\n\n this._filterController.change();\n this._savedFilterController.setActiveFilter(null);\n }\n\n public openChip(item: BaseItem<IFilterConfigItem>, name: string = null) {\n this._destroyOverlay();\n const el = this._elementRef.nativeElement\n .querySelector(`[data-filter-item=\"${item.name}\"]`);\n\n const positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: el.offsetHeight + 2,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(el)\n .withPositions(positions);\n \n const overlayConfig = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this._overlay.scrollStrategies.block(),\n disposeOnNavigation: true,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'fs-sidenav-menu-overlay-pane',\n });\n\n this._overlayRef = this._overlay.create(overlayConfig);\n\n this._overlayRef.backdropClick().pipe(\n take(1),\n tap(() => {\n this._destroyOverlay();\n }),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe();\n\n this._attachContainer(this._overlayRef, item, name);\n }\n\n public getNestedElement(el: any, className: string) {\n if(el) {\n if(el.classList.contains(className)) {\n return el;\n }\n\n return this.getNestedElement(el.parentElement, className);\n }\n\n return null;\n }\n \n public saveActiveFilter(): void {\n this._savedFilterController\n .save(this._savedFilterController.activeFilter)\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this._savedFilterController.singularLabel}`);\n }),\n )\n .subscribe();\n }\n\n public createSavedFilter(): void {\n this._savedFilterController.create()\n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this._savedFilterController.singularLabel}`,\n );\n }),\n )\n .subscribe();\n }\n\n public saveAs(): void {\n this._savedFilterController\n .saveAs()\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this._savedFilterController.singularLabel}`);\n }),\n )\n .subscribe();\n } \n\n public manageSavedFilters(): void {\n this._dialog\n .open(FsFilterSavedFilterManageComponent, {\n injector: this._injector,\n restoreFocus: false,\n });\n }\n\n public _destroyOverlay() {\n if(this._overlayRef) {\n this._overlayRef.detachBackdrop();\n this._overlayRef.detach();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n public removeChip(\n item: BaseItem<IFilterConfigItem>, \n chip: { name?: string, value: string, label: string },\n ) {\n if(!item.secondary) {\n item.secondaryHide();\n }\n\n if(chip.name) {\n item.clearByName(chip.name);\n } else {\n item.clear();\n }\n }\n\n private _attachContainer(overlayRef: OverlayRef, item: BaseItem<IFilterConfigItem>, name: string) {\n const injector = this._createInjector(item, name);\n const containerPortal = new ComponentPortal(FilterItemDialogComponent, undefined, injector);\n const containerRef = overlayRef.attach<FilterItemDialogComponent>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _createInjector(item: BaseItem<IFilterConfigItem>, autofocusName: string): Injector {\n const providers: StaticProvider[] = [\n { provide: FILTER_DRAWER_DATA, useValue: { item, autofocusName, overlayRef: this._overlayRef } },\n ];\n \n return Injector.create({\n providers,\n parent: this._injector,\n });\n }\n\n private _initHasSecondaryValue() {\n this._hasSecondaryValue$.next(this.hasSecondaryValue);\n\n this._filterController.change$\n .pipe(\n tap(() => {\n this._hasSecondaryValue$.next(this.hasSecondaryValue);\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe();\n }\n\n}\n","@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatPrefix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { KeywordController } from '../../services/keyword-controller.service';\n\n\n@Component({\n selector: 'fs-keyword-input',\n styleUrls: ['./keyword-input.component.scss'],\n templateUrl: './keyword-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatPrefix,\n MatIcon,\n MatInput,\n FormsModule,\n FsFormModule,\n FsClearModule,\n AsyncPipe,\n ],\n})\nexport class KeywordInputComponent implements OnInit, OnDestroy {\n\n @ViewChild('keywordMatInput', { read: MatInput })\n public keywordMatInput: MatInput;\n\n @Input() public autofocus = false;\n\n public searchPlaceholder = 'Search';\n public keyword = '';\n\n private _keyword$ = new Subject();\n private _destroyRef = inject(DestroyRef);\n private _destroy$ = new Subject<void>();\n private _keywordController = inject(KeywordController);\n private _cdRef = inject(ChangeDetectorRef);\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordController.keywordVisible$;\n }\n\n public ngOnInit(): void {\n this._initAutoFocus();\n this._listenInputChanges();\n this._initKeyword();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordMatInput?.focus();\n }\n\n public show() {\n this._keywordController.show();\n }\n\n public hide() {\n this._keywordController.hide();\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this.keyword = '';\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n private _listenInputChanges() {\n this._keyword$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n this._keywordController.keywordItem.value = value;\n });\n }\n\n private _initKeyword() {\n this._keywordController.keywordItem.value$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((value) => {\n this.keyword = value;\n this._cdRef.detectChanges();\n });\n }\n\n private _initAutoFocus() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.autofocus) {\n this.focus();\n }\n });\n }\n\n}\n","@if (keywordVisible$ | async) {\n <mat-form-field\n class=\"search-form-field form-field-padless\"\n [ngClass]=\"{ 'has-keyword': !!keyword }\">\n <span\n matPrefix\n class=\"icon\">\n <mat-icon matPrefix>\n search\n </mat-icon>\n </span>\n <input\n #keywordMatInput\n matInput\n [(ngModel)]=\"keyword\"\n (ngModelChange)=\"keywordChange($event)\"\n name=\"filter-input\"\n [fsClear]=\"true\"\n [placeholder]=\"searchPlaceholder\">\n </mat-form-field>\n}","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { FilterHeadingDirective } from '../../directives';\nimport { ISortingChangeEvent, KeyValue } from '../../interfaces';\nimport { FsFilterAction } from '../../interfaces/action.interface';\nimport {\n FilterConfig,\n IFilterConfigItem,\n} from '../../interfaces/config.interface';\nimport { IUpdateFilterItemConfig } from '../../interfaces/update-filter-item.interface';\nimport { FsFilterConfig } from '../../models/filter-config';\nimport { BaseItem } from '../../models/items/base-item';\nimport { SortController } from '../../services';\nimport { FilterController } from '../../services/filter-controller.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { KeywordController } from '../../services/keyword-controller.service';\nimport { PersistanceController } from '../../services/persistance-controller.service';\nimport { QueryParamController } from '../../services/query-param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterActionsComponent } from '../actions/actions.component';\nimport { FsFilterChipsComponent } from '../filter-chips/filter-chips.component';\nimport { FilterItemComponent } from '../filters-item';\nimport { KeywordInputComponent } from '../keyword-input/keyword-input.component';\n\nimport { FilterStatusBarDirective } from './../../directives/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './../../injectors/filter-config';\n\n\n@Component({\n selector: 'fs-filter',\n styleUrls: ['./filter.component.scss'],\n templateUrl: './filter.component.html',\n providers: [\n PersistanceController,\n QueryParamController,\n FocusControllerService,\n FilterController,\n SavedFilterController,\n ActionsController,\n KeywordController,\n SortController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n FilterItemComponent,\n NgClass,\n MatIcon,\n FormsModule,\n FsFormModule,\n FsClearModule,\n FsFilterChipsComponent,\n FsFilterActionsComponent,\n MatIconAnchor,\n MatSlideToggle,\n AsyncPipe,\n KeywordInputComponent,\n ],\n})\nexport class FilterComponent implements OnInit, OnDestroy {\n\n @ViewChild(KeywordInputComponent)\n public keywordInput: KeywordInputComponent;\n \n @Input('config') public set setFilterConfig(value: FilterConfig) {\n this._filterConfig = value;\n }\n\n @Output() public closed = new EventEmitter<any>();\n @Output() public opened = new EventEmitter<any>();\n @Output() public ready = new EventEmitter<void>();\n\n @ContentChild(FilterStatusBarDirective)\n public statusBar: FilterStatusBarDirective;\n\n @ContentChild(FilterHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ViewChild('reloadEl', { read: ElementRef })\n public reloadEl: ElementRef;\n\n @HostBinding('class.filters-open')\n public showFilterMenu = false;\n\n @HostBinding('class.window-desktop')\n public windowDesktop = false;\n\n @HostBinding('class.fs-filter')\n public fsFilterClass = true;\n\n private _config: FsFilterConfig;\n private _filterConfig: FilterConfig;\n private _filtersVisible$ = new BehaviorSubject(true);\n private _hasFilterChips$ = new BehaviorSubject(false);\n private _destroy$ = new Subject<void>();\n private _defaultConfig = inject(FS_FILTER_CONFIG, { optional: true });\n private _zone = inject(NgZone);\n private _actionsController = inject(ActionsController);\n private _filterController = inject(FilterController);\n private _sortController = inject(SortController);\n private _savedFilterController = inject(SavedFilterController);\n private _keywordController = inject(KeywordController);\n\n constructor(\n ) {\n this._filterController.filter = this;\n this._updateWindowWidth();\n this._listenWindowResize();\n }\n\n public get queryParams(): KeyValue {\n return this._filterController.queryParam;\n }\n\n public get query(): KeyValue {\n return this._filterController.query;\n }\n\n public get values(): KeyValue {\n return this._filterController.values;\n }\n\n /**\n *\n * Do update value of some field\n *\n * @param values - values for update\n *\n * To update text value just pass new text value\n *\n * public updateSelectValue(val) {\n * this.filterEl.updateValues({ keyword: val });\n * }\n *\n * To update select or observable select you could pass suitable value\n *\n * public updateSelectValue(val: number) {\n * this.filterEl.updateValues({ simple_select: val }, { observable_select: val });\n * }\n *\n * To update checkbox value just pass true/false as value\n *\n * public updateCheckox(val: boolean) {\n * this.filterEl.updateValues({ checkbox: val });\n * }\n *\n * To update range value just pass object with min&max object or just with one of targets\n *\n * Ex.: { min: 10, max 15 }, { min: 5 }, { max 5 }\n *\n * public updateRange(val) {\n * this.filterEl.updateValues({ range: val });\n * }\n *\n * To update autocomplete just pass object with name/value fields\n *\n * Ex.: { name: 'John Doe', value: 1 }\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocomplete_user_id: val });\n * }\n *\n * To update autocompletechips just pass:\n *\n * 1) object with name/value fields - will be appended to existing set of values\n *\n * { name: 'John Doe', value: 1 }\n *\n * 2) array of objects - will be appended to existing set of values\n *\n * [{ name: 'John Doe', value: 1 }, { name: 'Darya Filipova', value: 2 }]\n *\n * 3) null - clear existing set of values\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocompletechips_user_id: val });\n * }\n *\n */\n public set values(values) {\n this._filterController.values = values;\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._filterController.items;\n }\n\n public get primaryItems(): BaseItem<IFilterConfigItem>[] {\n return this.items.filter((item) => item.primary);\n }\n\n public change() {\n this._filterController.change();\n }\n\n public get hasHeading(): boolean {\n return !!this.headingTemplate || !!this.config.heading;\n }\n\n public get hasFilterChips$(): Observable<boolean> {\n return this._hasFilterChips$.asObservable();\n }\n\n public get filtersVisible$(): Observable<boolean> {\n return combineLatest({\n filtersVisible: this._filtersVisible$.asObservable(),\n hasVisibleItems: of(\n this.items\n .some((item) => item.visible && !item.isTypeKeyword),\n ),\n })\n .pipe(\n map(({ filtersVisible, hasVisibleItems }) => {\n return filtersVisible && hasVisibleItems;\n }),\n );\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordController.keywordVisible$;\n }\n\n public get keywordFullWidth$(): Observable<boolean> {\n return this._keywordController.keywordFullWidth$;\n }\n\n public get primaryFilterVisible$(): Observable<boolean> {\n return combineLatest({\n keywordVisible: this.keywordVisible$,\n savedFilterVisible: of(this.items.some((item) => item.visible && item.primary)),\n })\n .pipe(\n map(({ keywordVisible, savedFilterVisible }) => {\n return keywordVisible || savedFilterVisible;\n }),\n );\n }\n\n public get actionsVisible$() {\n return this._actionsController.visible$;\n }\n\n public get actions$() {\n return this._actionsController.actions$;\n }\n\n public get menuActions$() {\n return this._actionsController.menuActions$;\n }\n\n public get savedFilterController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public get sortController(): SortController {\n return this._sortController;\n }\n\n public ngOnInit() {\n const config = {\n ...(this._defaultConfig || {}),\n ...this._filterConfig,\n };\n\n this._config = new FsFilterConfig(config);\n this._actionsController.setConfig(this.config);\n\n this._initItems();\n this._initAutoReload();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordInput?.focus();\n }\n\n public updateSort(sort: ISortingChangeEvent, emitChange: boolean = true) {\n this._sortController.updateSort(sort, emitChange);\n }\n\n public get itemValues(): any[] {\n return this.items\n .map((item) => item.value);\n }\n\n public get nonEmptyItemValues(): any[] {\n return this.items\n .filter((item) => item.value !== undefined)\n .map((item) => item.value);\n }\n\n public get hasItemValues(): boolean {\n return this.items\n .some((item) => item.value !== undefined);\n }\n\n public getItemValue(name: string) {\n const item = this.items\n .find((_item) => _item.name === name);\n\n return item?.value;\n }\n\n public showItem(name: string) {\n this.getItem(name)?.show();\n }\n\n public hideItem(name: string) {\n this.getItem(name)?.hide();\n }\n\n public clearItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.clear();\n }\n\n public updateItemConfig(\n name: string,\n params: IUpdateFilterItemConfig,\n ): void {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.label = params.label ?? item.label;\n item.chipLabel = params.chipLabel ?? item.chipLabel;\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this._filterController.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keywordInput?.clear();\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const el = this.reloadEl?.nativeElement;\n\n if(el) {\n el.style.transition = 'all 0.75s 0.0s';\n el.style.transform = 'rotate(360deg)';\n\n setTimeout(() => {\n el.style.transition = null;\n el.style.transform = null;\n }, 1000);\n }\n\n this.change();\n }\n\n public getItem(name): BaseItem<any> {\n return this.items\n .find((item) => item.name === name);\n }\n\n /**\n * @deprecated Use item(name).value$ instead\n */\n public getItemValueChange$(name: string) {\n return this.getItem(name).value$;\n }\n\n /**\n * Update filter actions config\n *\n * @param actions\n */\n public updateActions(actions: FsFilterAction[]): void {\n this._actionsController.initActions(actions);\n }\n\n /**\n * Show \"Filters\" button\n */\n public showFilters(): void {\n this._filtersVisible$.next(true);\n }\n\n /**\n * Hide \"Filters\" button\n */\n public hideFilters(): void {\n this._filtersVisible$.next(false);\n }\n\n /**\n * Show \"Keyword\" field if it present\n */\n public showKeywordField(): void {\n this._keywordController.show();\n }\n\n /**\n * Hide \"Keyword\" field if it present\n */\n public hideKeywordField(): void {\n this._keywordController.hide();\n }\n\n /**\n * Go through actions and check show() callback and update visible actions\n */\n public updateActionsVisibility(): void {\n this._actionsController.updateActionsVisibility();\n }\n\n /**\n * Go through actions and check disabled() callback and update disabled state\n */\n public updateDisabledState(): void {\n this._actionsController.updateDisabledState();\n }\n\n private _updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n private _listenWindowResize() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(100),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this._updateWindowWidth();\n });\n });\n });\n }\n\n private _initItems() {\n this._filterController.init(this.config);\n }\n\n private _initAutoReload() {\n if(this.config.autoReload) {\n interval(this.config.autoReload.seconds * 1000)\n .pipe(\n filter(() => this.config.autoReload.enabled),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.reload(null);\n });\n }\n }\n}\n","<div\n class=\"filter-container\"\n [ngClass]=\"{ 'has-primary-filter': primaryFilterVisible$ | async }\"\n [ngClass]=\"{ 'keyword-full-width': keywordFullWidth$ | async }\">\n @if (primaryFilterVisible$ | async) {\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n }\n <div class=\"filter-bar-container\">\n @if (primaryFilterVisible$ | async) {\n <div class=\"filter-input-container\">\n @if (keywordVisible$ | async) {\n <fs-keyword-input [autofocus]=\"config.autofocus\"></fs-keyword-input>\n }\n @for (item of primaryItems; track item.name) {\n @if (item.visible$ | async) {\n <filter-item\n [item]=\"item\"\n [triggerChangeOn]=\"'change'\">\n </filter-item>\n }\n }\n </div>\n } @else if (hasHeading) {\n <div class=\"filter-heading-container\">\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"chipsTmpl\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterActionsTmpl\"></ng-container>\n </div>\n @if ((primaryFilterVisible$ | async) === true || hasHeading) {\n <ng-container\n [ngTemplateOutlet]=\"chipsTmpl\"\n [ngTemplateOutletContext]=\"{ topMargin: true }\">\n </ng-container>\n }\n <ng-container *ngTemplateOutlet=\"statusBarTmpl\"></ng-container>\n</div>\n<ng-template\n #chipsTmpl\n let-topMargin=\"topMargin\">\n <fs-filter-chips\n class=\"filter-chips\"\n [ngClass]=\"{ 'top-margin': topMargin }\">\n </fs-filter-chips>\n</ng-template>\n<ng-template #statusBarTmpl>\n @if (statusBar) {\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #filterActionsTmpl>\n @if ((actionsVisible$ | async)) {\n <div class=\"filter-actions\">\n <ng-container [ngTemplateOutlet]=\"filterToolbarTmpl\"></ng-container>\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbarTmpl>\n @if (config.reload || config.autoReload || (filtersVisible$ | async)) {\n <div class=\"filter-toolbar\">\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [ngModel]=\"config.autoReload.enabled\"\n (ngModelChange)=\"config.autoReload.enabled = $event\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n </div>\n }\n </div>\n }\n</ng-template>\n<ng-template #headingTmpl>\n @if (headingTemplate) {\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n } @else if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\n</ng-template>","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsStore } from '@firestitch/store';\n\nimport { FilterComponent } from './components/filter/filter.component';\nimport { FilterHeadingDirective, FilterStatusBarDirective, FocusToItemDirective } from './directives';\nimport { FS_FILTER_CONFIG } from './injectors/filter-config';\nimport { FilterConfig } from './interfaces/config.interface';\n\n\n@NgModule({\n imports: [\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective,\n FocusToItemDirective,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective, \n ],\n})\nexport class FsFilterModule {\n public static forRoot(config: FilterConfig = {}): ModuleWithProviders<FsFilterModule> {\n return {\n ngModule: FsFilterModule,\n providers: [\n {\n provide: FS_FILTER_CONFIG,\n useValue: {\n button: {\n label: '',\n },\n ...config,\n } as FilterConfig,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tap","map","switchMap","distinctUntilChanged","filter","i1","i3","i4","i5","i2","MatOption"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoBa,qBAAqB,CAAA;AAExB,IAAA,iBAAiB,CAAmB;AACpC,IAAA,cAAc,GAAG,IAAI,eAAe,CAAuB,EAAE,CAAC,CAAC;AAC/D,IAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC,CAAC;AAC/D,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAChD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnC,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,IAAI,cAAc,CAAC;KACtF;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;KAC1E;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,IAAI,eAAe,CAAC;KACrF;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;KACvC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;AAClB,aAAA,IAAI,CACH,oBAAoB,EAAE,CACvB,CAAC;KACL;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;IAED,IAAW,YAAY,CAAC,OAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;AACvB,aAAA,IAAI,CACH,oBAAoB,EAAE,CACvB,CAAC;KACL;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;AACvB,aAAA,IAAI,CACH,oBAAoB,EAAE,CACvB,CAAC;KACL;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC;KAChD;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,IAAI,CACT,gBAAkC,EAAA;AAElC,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAE1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE9B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE7B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;KACpB;IAEM,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACxB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,YAAY,EAAE;AACZ,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA;SACF,CAAC;AACC,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,IAAI,GAAuB;AAC/B,gBAAA,EAAE,EAAE,IAAI;gBACR,IAAI;aACL,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB,CAAC,CACH,CAAC;KACL;AAEM,IAAA,gBAAgB,CAAC,YAAkC,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;aACnC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QAEzB,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC;KACF;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;AACrD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,YAAY,KAAI;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;SACrC,CAAC,CACH,CAAC;KACL;IAEM,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACxB,YAAA,KAAK,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,kBAAkB,CAAE,CAAA;AAC1C,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,YAAY,EAAE;AACZ,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA;SACF,CAAC;AACC,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,IAAI,GAAuB;gBAC/B,IAAI;aACL,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,WAAW,KAAI;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACnC,CAAC,CACH,CAAC;KACL;AAEM,IAAA,IAAI,CAAC,WAA+B,EAAA;AACzC,QAAA,WAAW,GAAG;AACZ,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AAC5B,YAAA,GAAG,WAAW;AACd,YAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;iBAClC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC/B,iBAAA,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACtB,OAAO;AACL,oBAAA,GAAG,KAAK;AACR,oBAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;iBACxB,CAAC;aACH,EAAE,EAAE,CAAC;SACT,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY;aAC9C,IAAI,CAAC,WAAW,CAAC;AACjB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,YAAY,KAAI;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAEvE,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,YAAY;qBACd,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;AACnE,gBAAA,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAEvC,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;SACpC,CAAC,CACH,CAAC;KACL;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;KAC3D;AAEM,IAAA,KAAK,CAAC,YAAkC,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY;aAC9C,KAAK,CAAC,YAAY,CAAC;AACnB,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,GAAG,YAAY;aAChB,CAAC;SACH,CAAC,CACH,CAAC;KACL;AAEM,IAAA,MAAM,CAAC,WAA+B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY;aAC9C,MAAM,CAAC,WAAW,CAAC;AACnB,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAClC,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC5B;SACF,CAAC,CACH,CAAC;KACL;AAEM,IAAA,eAAe,CAAC,WAA+B,EAAA;QACpD,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY;AACrC,iBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YAExC,IAAI,CAAC,cAAc,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,CAAA,0EAAA,EAA6E,WAAW,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC;aAChH;YAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC;AACvD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1C;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;KACF;AAEO,IAAA,iBAAiB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;wGA/OU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;ICnBC,WAKX;AALD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EALW,UAAU,KAAV,UAAU,GAKrB,EAAA,CAAA,CAAA;;ACHD,IAAY,UAQX,CAAA;AARD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAA6B,CAAA;AAC/B,CAAC,EARW,UAAU,KAAV,UAAU,GAQrB,EAAA,CAAA,CAAA;;ICVW,YAQX;AARD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EARW,WAAW,KAAX,WAAW,GAQtB,EAAA,CAAA,CAAA;;ICRW,aAIX;AAJD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,WAA6B,CAAA;AAC7B,IAAA,YAAA,CAAA,oBAAA,CAAA,GAAA,cAAmC,CAAA;AACrC,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;;ICJW,SAcX;AAdD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAA0B,CAAA;AAC1B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAA4B,CAAA;AAC5B,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAA0B,CAAA;AAC1B,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAA8B,CAAA;AAC9B,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,WAA+B,CAAA;AAC/B,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAA0B,CAAA;AAC1B,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,eAAmC,CAAA;AACnC,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,cAAkC,CAAA;AAClC,IAAA,QAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAA8B,CAAA;AAC9B,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAA6B,CAAA;AAC/B,CAAC,EAdW,QAAQ,KAAR,QAAQ,GAcnB,EAAA,CAAA,CAAA;;ICdW,eAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;;ACJD,IAAY,cAMX,CAAA;AAND,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,CAAC,EANW,cAAc,KAAd,cAAc,GAMzB,EAAA,CAAA,CAAA;;MCOY,cAAc,CAAA;AAyBf,IAAA,OAAA,CAAA;AAvBH,IAAA,IAAI,CAAS;AACb,IAAA,KAAK,CAAS;AACd,IAAA,IAAI,CAAiB;AACrB,IAAA,YAAY,CAA6B;AACzC,IAAA,SAAS,CAA4B;AACrC,IAAA,QAAQ,CAAU;AAClB,IAAA,MAAM,CAAS;AACf,IAAA,QAAQ,CAAS;AACjB,IAAA,SAAS,CAAS;AAClB,IAAA,QAAQ,CAAS;AACjB,IAAA,SAAS,CAAS;AAClB,IAAA,YAAY,CAAS;AACrB,IAAA,KAAK,CAAwB;AAC7B,IAAA,UAAU,CAA0B;IACpC,KAAK,GAAqB,EAAE,CAAC;IAE5B,QAAQ,GAAG,KAAK,CAAC;AACjB,IAAA,OAAO,CAAuB;AAC9B,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAC/C,IAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAEzD,WACE,CAAA,MAAA,GAAiE,EAAE,EAC3D,OAAwB,EAAA;QAAxB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAEhC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACpB;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;IAED,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAErD,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,OAAO;SACR;AAED,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK;AACvC,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,GAAG,EAAE,CAAC;aACP;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,CAAC,CAAC,CAAC;QAER,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;KAChD;AAEO,IAAA,SAAS,CAAC,MAAmC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;KACzC;AAEO,IAAA,KAAK,CACX,MAA4F,EAAA;AAE5F,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAqC,CAAC,CAAC;SACvD;AAED,QAAA,IAAI,OAAO,IAAI,MAAM,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,KAAK,GAAG,MAAM;qBAChB,KAAK;AACL,qBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAClD;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;AAE9B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;SACF;KACF;AACF;;MC/GY,MAAM,CAAA;IAEV,OAAO,GAAG,IAAI,CAAC;AACf,IAAA,IAAI,CAAS;AACb,IAAA,aAAa,CAAmB;AAChC,IAAA,KAAK,CAAS;AACd,IAAA,KAAK,CAAM;AACX,IAAA,IAAI,CAAU;AACd,IAAA,KAAK,CAAe;AACpB,IAAA,SAAS,CAAU;AACnB,IAAA,SAAS,CAAS;AAClB,IAAA,KAAK,CAAwB;AAC7B,IAAA,KAAK,CAAc;AACnB,IAAA,QAAQ,CAAS;AACjB,IAAA,YAAY,CAA6B;AACzC,IAAA,SAAS,CAA4B;AACrC,IAAA,QAAQ,CAAU;AAClB,IAAA,MAAM,CAAS;AACf,IAAA,OAAO,CAAS;AAChB,IAAA,QAAQ,CAAS;AACjB,IAAA,SAAS,CAAS;AAClB,IAAA,QAAQ,CAAS;AACjB,IAAA,SAAS,CAAS;AAClB,IAAA,YAAY,CAAS;AACrB,IAAA,MAAM,CAAuB;AAC7B,IAAA,MAAM,CAAQ;AACd,IAAA,IAAI,CAAa;IACjB,eAAe,GAAG,KAAK,CAAC;IACxB,QAAQ,GAAG,KAAK,CAAC;IACjB,UAAU,GAAa,EAAE,CAAC;IAC1B,KAAK,GAAqB,EAAE,CAAC;AAE5B,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAC/C,IAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACjD,IAAA,OAAO,CAAuB;AAC9B,IAAA,WAAW,CAA2B;IAE9C,WAAY,CAAA,YAA4B,EAAE,YAAA,GAA+B,EAAE,EAAA;AACzE,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;KACxC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;IAED,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAErD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,OAAO;SACR;AAED,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACzC;IAEM,mBAAmB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;SACpC;KACF;AAEO,IAAA,KAAK,CAAC,YAA4B,EAAE,MAAA,GAAyB,EAAE,EAAA;QACrE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAErC,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,UAAU,CAAC,MAAM;gBAAE;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,MAAK;;AAEnC,qBAAC,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAEnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC5B;gBAAC,MAAM;YAER,KAAK,UAAU,CAAC,IAAI;gBAAE;AACpB,oBAAA,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;wBAC/C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;qBACnE;iBACF;gBAAC,MAAM;YAER,KAAK,UAAU,CAAC,YAAY;gBAAE;AAC5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBAChC;gBAAC,MAAM;YAER,KAAK,UAAU,CAAC,IAAI;gBAAE;AACpB,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACxB;gBAAC,MAAM;SACT;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEO,SAAS,CAAC,YAA4B,EAAE,MAAsB,EAAA;QACpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;gBACvC,WAAW,CAAC,IAAI;AAChB,iBAAC,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAEjE,YAAA,IAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE;AACnD,gBAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;aAClC;SACF;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS;iBAC7B,KAAK,CAAC,GAAG,CAAC,CAAC;SACf;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,YAAY,EAAE;AAC1D,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;SACxB;KAEF;AAEO,IAAA,iBAAiB,CAAC,MAAmC,EAAA;AAC3D,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;KAC1C;AAEO,IAAA,SAAS,CAAC,MAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,MAAK;;AAEnC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnC,IAAI,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;SACnC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AACF;;MC1LY,iBAAiB,CAAA;AACpB,IAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAGjD,IAAA,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,SAAS,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;AAC9C,IAAA,aAAa,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;AAClD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,OAAO,CAAiB;IAEf,YAAY,GAAG,oBAAoB,CAAC;IAC7C,WAAW,GAAa,EAAE,CAAC;AAC3B,IAAA,cAAc,CAAS;AAE/B,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;KACjC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC7B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9D;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,SAAS,CAAC,MAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAClC;AAEM,IAAA,WAAW,CAAC,UAA4B,EAAA;QAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7C,OAAO;SACR;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,WAAW,GAAG,UAAU;AAC1B,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAEM,IAAA,gBAAgB,CAAC,MAAc,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjC,QAAA,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAC9B;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;KAC3B;IAEM,uBAAuB,GAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEM,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;KAChE;AAEO,IAAA,gBAAgB,CAAC,OAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;AAEO,IAAA,WAAW,CAAC,OAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAEO,gBAAgB,GAAA;QACtB,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAEnC,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,MAAM,CAAC,CAAC,MAAM,KAAI;YACjB,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,SAAC,CAAC;AACD,aAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE;AACxD,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC3B;AAEO,IAAA,eAAe,CAAC,MAAc,EAAA;AACpC,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;SACtD;aAAM;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;SAC7C;KACF;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;wGAnJU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCME,oBAAoB,CAAA;IAGxB,YAAY,GAAG,IAAI,CAAC;AAEnB,IAAA,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,IAAA,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,IAAA,WAAW,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,IAAA,iBAAiB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACxF,IAAA,oBAAoB,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5F,IAAA,kBAAkB,GAAG,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACxF,IAAA,mBAAmB,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,IAAA,wBAAwB,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAGjG,eAAe,GAAA;AACpB,QAAA,IAAG,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;IAEO,MAAM,GAAA;AACZ,QAAA,IAAG,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC3B;AAED,QAAA,IAAG,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAC1B;AAED,QAAA,IAAG,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;AAED,QAAA,IAAG,IAAI,CAAC,iBAAiB,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SAC/B;AAED,QAAA,IAAG,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;SAClC;AAED,QAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;SAChC;AAED,QAAA,IAAG,IAAI,CAAC,mBAAmB,EAAE;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;SAClC;AAED,QAAA,IAAG,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;SACvC;KACF;wGArDU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,sBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAIQ,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,sBAAsB,CAAA;;;MCblB,sBAAsB,CAAA;AACjC,IAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,CAAC,CAAC;wGADzC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCCY,wBAAwB,CAAA;AACnC,IAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,CAAC,CAAC;wGADzC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACOM,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,kBAAkB,GAAG,eAAe,CAAC;MAGrC,cAAc,CAAA;IAElB,IAAI,GAAG,IAAI,CAAC;IACZ,OAAO,GAAwB,KAAK,CAAC;AACrC,IAAA,YAAY,CAA4B;IACxC,MAAM,GAAG,KAAK,CAAC;IACf,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAG,KAAK,CAAC;AACd,IAAA,WAAW,CAAc;IACzB,UAAU,GAAU,IAAI,CAAC;IACzB,IAAI,GAAS,IAAI,CAAC;IAClB,UAAU,GAAG,KAAK,CAAC;AACnB,IAAA,IAAI,CAA4E;AAChF,IAAA,MAAM,CAAW;IACjB,MAAM,GAAY,IAAI,CAAC;AACvB,IAAA,UAAU,CAAqB;AAC/B,IAAA,KAAK,CAAW;AAChB,IAAA,UAAU,CAAW;AACrB,IAAA,MAAM,CAAe;AACrB,IAAA,KAAK,CAAsB;AAC3B,IAAA,OAAO,CAAmB;IAC1B,SAAS,CAAS;AAClB,IAAA,OAAO,CAAS;AAChB,IAAA,UAAU,CAAS;AACnB,IAAA,UAAU,CAAS;AACnB,IAAA,iBAAiB,CAAS;AAEjC,IAAA,WAAA,CAAY,OAAqB,EAAE,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAClB;IAEO,KAAK,CAAC,OAAqB,EAAE,EAAA;AACnC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;AAClC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;AAC1B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG;gBAC5B,GAAG,IAAI,CAAC,UAAU;AAClB,gBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK;aACnE,GAAG,IAAI;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO;YAC1B,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI;YACjD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AACpC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;iBACpC;aACF;SACF;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,MAAK;;AAElB,aAAC,CAAC;SACH;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;AAEO,IAAA,WAAW,CAAC,IAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;SAC/B;KACF;AACF;;ACjHe,SAAA,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAA;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACtC,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;AACnD,gBAAA,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,SAAS,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC5D,gBAAA,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC1D,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;KACF;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAEe,SAAA,eAAe,CAAC,IAAI,EAAE,IAAI,EAAA;IACxC,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAChC,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;AC3CM,SAAU,gBAAgB,CAAC,KAAK,EAAA;AACpC,IAAA,OAAO,KAAK;AACT,SAAA,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B;;SCJgB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAA;AAC/C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEtB,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;YACjB,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE;AACvB,YAAA,OAAO,GAAG,CAAC;SACZ;KACF;AAED,IAAA,OAAO,SAAS,CAAC;AACnB;;ACdgB,SAAA,YAAY,CAAC,IAAY,EAAE,KAAa,EAAA;IACtD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E;;ACAM,SAAU,SAAS,CAAC,KAAa,EAAA;AACrC,IAAA,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxB;AAED,IAAA,OAAO,KAAK,CAAC;AACf;;ACRgB,SAAA,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAA;IAC5C,OAAO,CAAA,EAAG,kBAAkB,CAAC,KAAK,CAAC,CAAI,CAAA,EAAA,kBAAkB,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACpE,CAAC;AAEK,SAAU,oBAAoB,CAAC,KAAa,EAAA;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEtC,IAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE;;ACFgB,SAAA,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhC,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,QAAQ,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACnD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAEnD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;SAC/B;QAED,KAAK,QAAQ,CAAC,SAAS,CAAC;AAAC,QAAA,KAAK,QAAQ,CAAC,aAAa,EAAE;AACpD,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC/B;AAED,QAAA,KAAK,QAAQ,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAQ,MAAA,CAAA,CAAC,CAAC;AAE5C,YAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;SAC7B;AAED,QAAA,KAAK,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACpC;AAED,QAAA,KAAK,QAAQ,CAAC,QAAQ,EAAE;AACtB,YAAA,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC;SAC3C;AAED,QAAA,KAAK,QAAQ,CAAC,YAAY,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAEhD,OAAO;AACL,gBAAA,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACpB,gBAAA,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;aACtB,CAAC;SACH;QAED,KAAK,QAAQ,CAAC,iBAAiB,CAAC;AAChC,QAAA,KAAK,QAAQ,CAAC,KAAK,EAAE;YACnB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE5C,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACxC,gBAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAE9C,IAAI,CAAC,IAAI,CAAC;AACR,oBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACf,yBAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,yBAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACvB,oBAAA,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACpB,iBAAA,CAAC,CAAC;AAEH,gBAAA,OAAO,IAAI,CAAC;aACb,EAAE,EAAE,CAAC,CAAC;SACR;QAED,SAAS;AACP,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,KAAK,EAAA;IAC7C,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,EAAE,CAAC;KACX;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEhC,IAAA,OAAO,MAAM,CAAC;AAChB;;MCjEsB,QAAQ,CAAA;AA2BhB,IAAA,OAAA,CAAA;AAzBL,IAAA,IAAI,CAAS;AACb,IAAA,KAAK,CAAM;AACX,IAAA,SAAS,CAAoB;AAC7B,IAAA,cAAc,CAAmB;AACjC,IAAA,YAAY,CAAM;AAClB,IAAA,SAAS,CAAU;AACnB,IAAA,WAAW,CAAS;AACpB,IAAA,mBAAmB,CAAU;AAC7B,IAAA,mBAAmB,CAAU;AAC7B,IAAA,OAAO,CAAU;AACjB,IAAA,SAAS,CAAU;AACnB,IAAA,cAAc,CAAuD;AACrE,IAAA,YAAY,CAAuC;AAEvC,IAAA,KAAK,CAAY;AAC1B,IAAA,SAAS,CAA0E;AAErF,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACtC,IAAA,OAAO,GAAG,IAAI,eAAe,CAAsC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3G,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAyC,IAAI,CAAC,CAAC;AAC7E,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAExC,WACE,CAAA,UAAa,EACH,OAAwB,EAAA;QAAxB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAElC,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KAC9B;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpC;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC/C;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;KAC3C;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;KACxE;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CACzB,CAAC;KACL;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,YAAY,CAAC;KAC5C;AAED,IAAA,IAAW,uBAAuB,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,iBAAiB,CAAC;KACjD;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC;KACxC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC;KACtC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;KACpC;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,CAAC;KACzC;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;KAC7C;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC;KACxC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC;KACvC;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;KACxD;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM;AACf,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC1B,CAAC;KACL;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM;aACf,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC;KACL;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,MAAM;AACf,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAC5B,CAAC;KACL;IAED,IAAW,MAAM,CAAC,MAAM,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC/B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAC5B,CAAC;KACL;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;KACtC;IAED,IAAW,KAAK,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;AAED;;AAEG;IACH,IAAW,KAAK,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAEM,IAAA,QAAQ,CAAC,KAAc,EAAE,UAAA,GAAsB,IAAI,EAAA;QACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;KAC1C;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAEM,IAAI,GAAA;AACT,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;IAEM,IAAI,GAAA;AACT,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;SACxB,CAAC;KACH;AAEM,IAAA,IAAI,CAAC,KAAc,EAAA;AACxB,QAAA,OAAO,QAAQ,CAAC;YACd,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE;SAClB,CAAC;AACC,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACjC,CAAC;KACL;IAEM,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE;AACzB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B,CAAC,CACH,CAAC;KACL;IAEM,UAAU,GAAA;QACf,OAAO,EAAE,CAAC,IAAI,CAAC;AACZ,aAAA,IAAI,CACH,SAAS,CAAC,MAAK;AACb,YAAA,KAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,iBAAiB,GAAG;AACpF,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACf;AAED,YAAA,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE;AACxC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAEhC,gBAAA,OAAO,MAAM,YAAY,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;aAC3D;AAED,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE;AACxB,iBAAA,GAAG,CAAC,CAAC,IAAI,MAAM;AACd,gBAAA,GAAG,IAAI;gBACP,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAE,CAAA;AAC9D,aAAA,CAAC,CAAC,CAAC;SACP,CAAC,CACH,CAAC;KACL;AAEM,IAAA,SAAS,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;KAChE;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KACtC;;AAGM,IAAA,WAAW,CAAC,IAAY,EAAE,UAAA,GAAsB,IAAI,EAAA;;KAE1D;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,KAAK,GAAA;AACV,QAAA,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAC1C,IAAI,CACL,CAAC;KACH;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACxC;KACF;AAEO,IAAA,WAAW,CAAC,IAAO,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;AACtD,YAAA,IAAI,CAAC,OAA2B,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE5D,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SACrC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,MAAK;;AAEvC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,KAAK,MAAK;;AAE3C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;SAC9B;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3B;KACF;AAIF;;ACtVK,MAAgB,iBAAkB,SAAQ,QAAoC,CAAA;AAElF,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,CAAC;KACzC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;KAC7C;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,IAAI,CAAC;KAC3E;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;AACtC,QAAA,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;AACvB,QAAA,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC;QAEnB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,gBAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;aACvB;AACD,YAAA,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;AACvC,gBAAA,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;aACnB;SACF;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;KAC1C;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,MAAM,KAAK,GAA+B,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAElD,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QAC9E,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AAExE,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAA+B,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAElD,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxC;AAED,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;YAChB,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SACpC;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;QAC3E,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YACpB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC1C,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;KAC/B;AAEM,IAAA,WAAW,CAAC,IAAY,EAAE,UAAA,GAAsB,IAAI,EAAA;AACzD,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC;gBACZ,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,IAAI,EAAE,IAAI;aACX,EAAE,UAAU,CAAC,CAAC;SAChB;AAAM,aAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC;gBACZ,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,EAAE,EAAE,IAAI;aACT,EAAE,UAAU,CAAC,CAAC;SAChB;KACF;AAEF;;AC9GK,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAE3C,IAAA,OAAO,MAAM,CAAC,MAAkC,EAAE,MAAuB,EAAA;AAC9E,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C;AAEF;;ACNK,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAE/C,IAAA,OAAO,MAAM,CAAC,MAAkC,EAAE,MAAuB,EAAA;AAC9E,QAAA,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9C;AAEF;;ACEK,MAAO,SAAU,SAAQ,QAAgC,CAAA;AAQjD,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAkC,EACxB,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;KACjC;AAEM,IAAA,OAAO,MAAM,CAAC,MAA8B,EAAE,MAAuB,EAAA;AAC1E,QAAA,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC;YAC9C,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC;SAC/C;aAAM;AACL,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AACjC,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;SAClC;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,IAAW,KAAK,GAAA;QACd,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AACtB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AACtB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;KAC/B;AAEM,IAAA,WAAW,CAAC,IAAY,EAAE,UAAA,GAAsB,IAAI,EAAA;AACzD,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;SAC9D;AAAM,aAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;SAC9D;KACF;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC;KACxE;AAEM,IAAA,QAAQ,CAAC,KAAqC,EAAE,UAAA,GAAsB,IAAI,EAAA;QAC/E,KAAK,CAAC,QAAQ,CAAC;YACb,GAAG,EAAE,KAAK,EAAE,GAAG;YACf,GAAG,EAAE,KAAK,EAAE,GAAG;SAChB,EAAE,UAAU,CAAC,CAAC;KAChB;AAEM,IAAA,IAAI,CAAC,KAAc,EAAA;AACxB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC7B;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;aACtC;SACF,CAAC,CACH,CAAC;KACL;AACF;;ACpGK,MAAO,QAAS,SAAQ,QAA+B,CAAA;AAM/C,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAiC,EACvB,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;KACrC;AAEM,IAAA,OAAO,MAAM,CAAC,MAA6B,EAAE,MAAuB,EAAA;AACzE,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;QACtC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/B,YAAA,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;SACxD;AAED,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,QAAA,MAAM,eAAe,GAAG,CAAG,EAAA,IAAI,QAAQ,CAAC;QAExC,OAAO;AACL,YAAA,CAAC,aAAa,GAAG,KAAK,EAAE,IAAI,IAAI,SAAS;AACzC,YAAA,CAAC,WAAW,GAAG,KAAK,EAAE,EAAE,IAAI,SAAS;AACrC,YAAA,CAAC,eAAe,GAAG,KAAK,EAAE,MAAM,IAAI,SAAS;SAC9C,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AACF;;ACtDD;;;;;;;;;;AAUG;AACa,SAAA,YAAY,CAAC,MAAM,EAAE,KAAK,EAAA;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAChB,SAAA,OAAO,CAAC,CAAC,IAAI,KAAI;QAChB,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC5D;AACH,KAAC,CAAC,CAAC;AAEL,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAA;AACpC,IAAA,OAAO,KAAK;AACT,SAAA,IAAI,CAAC,CAAC,UAAU,KAAI;AACnB,QAAA,IAAI,UAAU,YAAY,SAAS,EAAE;YACnC,OAAQ,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBACnD,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7C,gBAAA,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,UAAU,YAAY,aAAa,IAAI,UAAU,YAAY,iBAAiB,EAAE;YACzF,OAAO,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;gBACnD,IAAI,KAAM,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACjD;AAAM,aAAA,IAAI,UAAU,YAAY,QAAQ,EAAE;YACzC,OAAO,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;mBAChD,IAAI,KAAM,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7C,mBAAA,IAAI,KAAM,CAAG,EAAA,UAAU,CAAC,IAAI,QAAQ,CAAC;SAC3C;AAED,QAAA,OAAO,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;AAClC,KAAC,CAAC,CAAC;AACP;;AC7CM,MAAgB,oBAAiD,SAAQ,QAAW,CAAA;AAY5E,IAAA,OAAA,CAAA;AAVL,IAAA,MAAM,CAAS;AAItB,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,WACE,CAAA,UAAa,EACH,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAGlC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC;KACrD;AAEF;;AClBK,MAAO,qBACX,SAAQ,oBAAwD,CAAA;AAepD,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAA8C,EACpC,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAGlC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,OAAO,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;KACnD;AAEM,IAAA,OAAO,MAAM,CAAC,MAA0C,EAAE,MAAuB,EAAA;AACtF,QAAA,OAAO,IAAI,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClD;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;iBACpB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,gBAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,CAAI,CAAA,EAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACxD,aAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC;SACb,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK;iBACtB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;iBAC9B,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;SACd;aAAM;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;SACtB;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG;AACrB,YAAA;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK;AACf,qBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACjB,oBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/B,oBAAA,OAAO,GAAG,CAAC;iBACZ,EAAE,EAAE,CAAC;qBACL,IAAI,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,GAAG,EAAE,CAAC;KACR;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAC7D;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;QACtC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;KAC/D;AAEF;;ACzFK,MAAO,gBAAiB,SAAQ,oBAAmD,CAAA;AAEhF,IAAA,OAAO,MAAM,CAAC,MAAqC,EAAE,MAAuB,EAAA;AACjF,QAAA,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7C;AAED,IAAA,IAAW,KAAK,GAAA;QACd,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;AACnD,YAAA,OAAO,SAAS,CAAC;SAClB;AAED,QAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAE1B,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,CAAC,IAAI,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAE,CAAA;SACxE,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACxC,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACxB,aAAA;SACF,CAAC;KACH;AACF;;ACzCK,MAAO,YAAa,SAAQ,QAAmC,CAAA;AAOvD,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAqC,EAC3B,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpF,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;KACxC;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,IAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAClD,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;SACxD,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM;SACpB,CAAC;KACH;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAClC;AAEF;;AChEK,MAAO,SAAU,SAAQ,QAAgC,CAAA;AAMjD,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAkC,EACxB,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAGlC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC;KAC7C;AAEM,IAAA,OAAO,MAAM,CAAC,MAA8B,EAAE,MAAuB,EAAA;AAC1E,QAAA,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AACpB,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC;SACb,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;iBACpB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC;SACb,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACrB,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACjB,YAAA,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/B,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC;aACL,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,QAAA,OAAO,CAAC;AACN,gBAAA,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC,CAAC;KACJ;AAGM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;QACtC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;KAC/D;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;KAC/B;AAEF;;ACvEK,MAAgB,YAAa,SAAQ,QAA+B,CAAA;AAO5D,IAAA,OAAA,CAAA;AALL,IAAA,OAAO,CAAS;AAChB,IAAA,IAAI,CAAe;IAE1B,WACE,CAAA,UAAe,EACL,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC;KACtD;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;QACtC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACzB;SACF;AAED,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACnC;AAEF;;ACxBK,MAAO,QAAS,SAAQ,YAAY,CAAA;AAEjC,IAAA,OAAO,MAAM,CAAC,MAA6B,EAAE,MAAuB,EAAA;AACzE,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SAClC,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,IAAI,UAAU,GAAG,MAAM,CAAC;QAExB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,EAAE;YAC9C,UAAU,GAAG,mBAAmB,CAAC;SAClC;QAED,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;gBACtC,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AACF;;ACpCK,MAAO,YAAa,SAAQ,YAAY,CAAA;AAErC,IAAA,OAAO,MAAM,CAAC,MAA6B,EAAE,MAAuB,EAAA;AACzE,QAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,EAAE,CAAC;KACX;AACF;;ACRK,MAAO,QAAS,SAAQ,QAA+B,CAAA;AAO/C,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAiC,EACvB,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;KACjC;AAEM,IAAA,OAAO,MAAM,CAAC,MAA6B,EAAE,MAAuB,EAAA;AACzE,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;KAC7E;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAErB,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,IAAW,KAAK,GAAA;QACd,IAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;YACd,KAAK,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAG,CAAA,CAAA,GAAG,IAAI,CAAC,MAAM,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;SAC/E;AAED,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;YACd,KAAK,GAAG,CAAG,EAAA,KAAK,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;SAC/E;QAED,OAAO;AACL,YAAA;gBACE,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AACF;;AC5DK,MAAO,WAAY,SAAQ,QAAQ,CAAA;AAM3B,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAoC,EAC1B,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAGlC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;KACvC;AAEM,IAAA,OAAO,MAAM,CAAC,MAAgC,EAAE,MAAuB,EAAA;AAC5E,QAAA,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAChE;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAErB,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,IAAW,KAAK,GAAA;QACd,IAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AACF;;AC3CK,MAAO,UAAW,SAAQ,QAAiC,CAAA;AAWnD,IAAA,OAAA,CAAA;IAFZ,WACE,CAAA,UAAmC,EACzB,OAAwB,EAAA;AAElC,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAFjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAGlC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC;AAE5C,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1D,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAY,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAChE;KACF;AAEM,IAAA,OAAO,MAAM,CAAC,UAAmC,EAAE,MAAuB,EAAA;AAC/E,QAAA,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC3C;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;KAC3D;AAEM,IAAA,IAAI,CAAC,KAAc,EAAA;AACxB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;AACP,YAAA,IAAG,IAAI,CAAC,OAAO,EAAE;AACf,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAI;oBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAW,CAAC,CAAC;AAClD,iBAAC,CAAC,CAAC;aACJ;SACF,CAAC,CACH,CAAC;KACL;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,KAAK,CAAC,OAAO;AACjB,aAAA,IAAI,CACHC,KAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,OAAO,MAAM,CAAC;aACf;AAED,YAAA,OAAO,MAAM;AACV,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAI;gBAChB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAc,CAAC,CAAC;AAC5D,aAAC,CAAC,CAAC;SACN,CAAC,CACH,CAAC;KACL;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAA;AACtC,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;SAC3C;aAAM;AACL,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACjD;AAED,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;SAC/D,CAAC;KACH;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,IAAI,GAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;SAC5E,CAAC;KACH;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7D;QAED,OAAO,KAAK,CAAC,QAAQ,CAAC;KACvB;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACtC,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;aAC9C,EAAE,EAAE,CAAC,CAAC;SACR;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;AACjC,aAAA,MAAM,CAAC,CAAC,IAAI,KAAI;YACf,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC9B,iBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChE,SAAC,CAAC;AACD,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,SAAC,CAAC,CAAC;QAGL,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA;SACF,CAAC;KACH;AACF;;ACzHe,SAAA,gBAAgB,CAAC,IAAuB,EAAE,MAAuB,EAAA;AAC/E,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,QAAQ,CAAC,MAAM,EAAE;YACpB,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACxC;AAED,QAAA,KAAK,QAAQ,CAAC,KAAK,EAAE;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACvC;AAED,QAAA,KAAK,QAAQ,CAAC,KAAK,EAAE;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACvC;AAED,QAAA,KAAK,QAAQ,CAAC,SAAS,EAAE;YACvB,OAAO,aAAa,CAAC,MAAM,CAAC,IAAkC,EAAE,MAAM,CAAC,CAAC;SACzE;AAED,QAAA,KAAK,QAAQ,CAAC,aAAa,EAAE;YAC3B,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAkC,EAAE,MAAM,CAAC,CAAC;SAC7E;AAED,QAAA,KAAK,QAAQ,CAAC,IAAI,EAAE;YAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,IAA6B,EAAE,MAAM,CAAC,CAAC;SAC/D;AAED,QAAA,KAAK,QAAQ,CAAC,IAAI,EAAE;YAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,IAA6B,EAAE,MAAM,CAAC,CAAC;SAC/D;AAED,QAAA,KAAK,QAAQ,CAAC,QAAQ,EAAE;YACtB,OAAO,YAAY,CAAC,MAAM,CAAC,IAA6B,EAAE,MAAM,CAAC,CAAC;SACnE;AAED,QAAA,KAAK,QAAQ,CAAC,YAAY,EAAE;YAC1B,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC9C;AAED,QAAA,KAAK,QAAQ,CAAC,iBAAiB,EAAE;YAC/B,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACnD;AAED,QAAA,KAAK,QAAQ,CAAC,QAAQ,EAAE;AACtB,YAAA,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACvC;AAED,QAAA,KAAK,QAAQ,CAAC,OAAO,EAAE;YACrB,OAAO,WAAW,CAAC,MAAM,CAAC,IAAgC,EAAE,MAAM,CAAC,CAAC;SACrE;AAED,QAAA,KAAK,QAAQ,CAAC,IAAI,EAAE;YAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACtC;KACF;AACH;;MClEa,iBAAiB,CAAA;AAEpB,IAAA,aAAa,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,CAAC;AACvD,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAElC,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,aAAa;aACf,IAAI;;QAEHC,WAAS,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;;AAErD,QAAAC,sBAAoB,EAAE,EACtBH,KAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAErD,QAAA,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CACHC,KAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC;;AAEhC,QAAAE,sBAAoB,EAAE,EACtBH,KAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;AAE3D,QAAA,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;KACjC;IAED,IAAW,WAAW,CAAC,IAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEM,KAAK,CAAC,aAAsB,IAAI,EAAA;QACrC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;KAC5C;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;KAC1B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;KAC1B;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC/C;wGA9DU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCWE,qBAAqB,CAAA;AAExB,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,IAAA,iBAAiB,CAAmB;AACpC,IAAA,KAAK,CAAS;IACd,KAAK,GAAQ,EAAE,CAAC;AACP,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,GAAG,mBAAmB,CAAC;IAChC,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjD,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,CAAC,IAAI,CAAC,UAAU;YACrB,CAAC,IAAI,CAAC,UAAU;YAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS;AACtD,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;KACzC;AAEM,IAAA,IAAI,CAAC,gBAAkC,EAAA;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAEpC,YAAA,IAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,KAAK,OAAO,EAAE;AACvD,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACf;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAE/B,IAAI,CAAC,iBAAiB,CAAC,OAAO;AAC3B,iBAAA,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;iBACA,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC3C,aAAC,CAAC,CAAC;SACN;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAEM,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;KAC/B;AAEO,IAAA,IAAI,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC5C;IAEO,IAAI,GAAA;AACV,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAEO,IAAA,WAAW,CAAC,MAA2B,EAAA;QAC7C,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAG,iBAAiB,EAAE;AACpB,YAAA,iBAAiB,GAAG;gBAClB,IAAI,EAAE,iBAAiB,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AACjE,gBAAA,GAAG,iBAAiB;aACrB,CAAC;SACH;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAEO,IAAA,UAAU,CAAC,MAA2B,EAAA;QAC5C,IAAG,MAAM,EAAE;YACT,OAAO;AACL,gBAAA,IAAI,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;aACnC,CAAC;SACH;AAED,QAAA,OAAO,IAAI,CAAC;KACb;wGAxFU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MCJE,cAAc,CAAA;IAEjB,KAAK,GAAG,IAAI,CAAC;IACb,UAAU,GAAG,IAAI,CAAC;AAClB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAuC,CAAC;AAC9D,IAAA,iBAAiB,CAAmB;AACpC,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjC,IAAA,IAAI,CAAC,gBAAkC,EAAA;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE1C,IAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AACvD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;SAClE;KACF;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,aAAa,EAAE,IAAI,CAAC,SAAS;SAC9B,CAAC;KACH;IAEM,KAAK,GAAA;AACV,QAAA,IAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAE,CAAA;SACxC,CAAC;KACH;IAEM,OAAO,GAAA;QACZ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;KACH;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;KACjC;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAEM,IAAA,UAAU,CAAC,IAAyB,EAAE,UAAA,GAAsB,IAAI,EAAA;AACrE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAErE,IAAG,UAAU,EAAE;YACb,IAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE;AAC3C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aACxF;AAED,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;SACjC;KACF;wGA1EU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCKE,oBAAoB,CAAA;AAEvB,IAAA,iBAAiB,CAAmB;AAC3B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACzC,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAChC,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpE,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,CAAC,IAAI,CAAC,UAAU;YACrB,CAAC,IAAI,CAAC,UAAU;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;KAC5C;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAChC,SAAA;aACE,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B,QAAA,OAAO,YAAY,CACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,KAAK,CACN,CAAC;KACH;AAEM,IAAA,IAAI,CAAC,gBAAkC,EAAA;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,CACH,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAC7B;AACE,iBAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAC1BA,KAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EACnC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,iBAAA,SAAS,EAAE,CAAC;SAChB;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,OAAO;AACL,YAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU;AACpC,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU;SACnC,CAAC;KACH;IAEM,iBAAiB,GAAA;AACtB,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAC5B,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;gBACpB,OAAO;AACL,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;iBACvB,CAAC;aACH,EAAE,EAAE,CAAC;YACR,GAAG,IAAI,CAAC,WAAW,EAAE;SACtB,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KACjC;AAEO,IAAA,aAAa,CAAC,IAAI,EAAA;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACxC,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC/B;iBAAM;gBACL,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACnC;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/E;wGA1FU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAApB,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;MCME,gBAAgB,CAAA;AAEpB,IAAA,MAAM,CAAkB;AAEvB,IAAA,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACrC,IAAA,MAAM,GAAG,IAAI,GAAG,EAAuC,CAAC;AACxD,IAAA,OAAO,CAAiB;AACxB,IAAA,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC7B,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAiC,CAAC;AACxD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvD,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvD,IAAA,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACrD,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjD,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KACzC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,CACjB,CAAC;KACL;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,IAAI,CAAC,MAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC;aACL,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EACnD,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EACzC,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC1C,SAAS,CAAC,MAAM,QAAQ,CAAC;YACvB,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;SACnD,CAAC,CAAC,EACH,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,EAClC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,EAC9B,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5E;SACF,CAAC,EACF,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC9B;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC;AAChC,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;YACtB,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,GAAG,IAAI,CAAC,UAAU;aACnB,CAAC;SACH,EAAE,EAAE,CAAC,CAAC;KACV;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;iBACV,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;AAC9B,iBAAA,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACtB,OAAO;AACL,oBAAA,GAAG,KAAK;oBACR,GAAG,IAAI,CAAC,KAAK;iBACd,CAAC;aACH,EAAE,EAAE,CAAC;AACR,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;SAChC,CAAC;KACH;IAED,IAAW,MAAM,CAAC,MAA+B,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACpB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAEzB,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aACxB;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACV;IAEO,cAAc,GAAA;QACpB,IAAI,MAAM,GAAa,EAAE,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE;AACnF,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,iBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;gBACnB,OAAO;AACL,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;iBACnB,CAAC;aACH,EAAE,EAAE,CAAC,CAAC;AAET,YAAA,MAAM,GAAG;AACP,gBAAA,GAAG,KAAK;AACR,gBAAA,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB;aAChD,CAAC;SAEH;aAAM;AACL,YAAA,MAAM,GAAG;AACP,gBAAA,GAAG,MAAM;AACT,gBAAA,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;aAC1C,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,gBAAA,MAAM,GAAG;AACP,oBAAA,GAAG,MAAM;AACT,oBAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM;iBACrC,CAAC;aACH;SACF;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,UAAU,GAAA;AAChB,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAErC,QAAA,OAAO,QAAQ,CACb,IAAI,CAAC,KAAK;AACP,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,SAAC,CAAC,CACL;AACE,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK;AACjB,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACtC,CAAC,CAAC,CACN,CAAC;KACL;IAEO,iBAAiB,GAAA;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,QAAA,IAAI,CAAC,KAAK;AACP,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;aACF;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,KAAK;AACP,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAG,IAAI,CAAC,gBAAgB,EAAE;AACxB,oBAAA,OAAO,EAAE,CAAC;iBACX;qBAAM,IAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,oBAAA,OAAO,EAAE,CAAC;iBACX;aACF;AACH,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,SAAS,CAAC,WAAgC,EAAA;QAChD,IAAI,kBAAkB,GAAG,WAAW;AACjC,aAAA,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC;AACnE,aAAA,MAAM,CAAC;QAEV,MAAM,OAAO,GAAG,WAAW;AACxB,aAAA,MAAM,CAAC,CAAC,UAAU,KAAI;YACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAA,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;aAC9D;AAED,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;AACD,aAAA,GAAG,CAAC,CAAC,UAAU,KAA2C;YACzD,IACE,CAAC,UAAU,CAAC,OAAO;gBACnB,CAAC,UAAU,CAAC,SAAS;AACrB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EACnD;AACA,gBAAA,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,gBAAA,kBAAkB,EAAE,CAAC;aACtB;YAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAE7D,YAAA,IAAI,UAAU,YAAY,WAAW,EAAE;AACrC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,UAAU,CAAC;aAClD;AAED,YAAA,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;QAGL,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KAChC;IAEO,YAAY,GAAA;AAClB,QAAA,KAAK,CACH,GAAG,IAAI,CAAC,KAAK;aACV,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW;aAC5B,IAAI,CACHI,QAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,EACnC,GAAG,CAAC,MAAM,IAAI,CAAC,CAChB,CAAC,CACP;aACE,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,QAAQ;AACV,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAoC,KAAI;AAC3C,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;aACjE;AAED,YAAA,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;iBACxC;AACH,aAAC,CAAC,CAAC;SACJ,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;wGApSU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCdE,sBAAsB,CAAA;AAEzB,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAuC,IAAI,CAAC,CAAC;AAEnF,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAEM,KAAK,CAAC,IAAmB,EAAE,IAAY,EAAA;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;IAEM,eAAe,CAAC,UAAyB,EAAE,UAAkB,EAAA;QAClE,OAAO,IAAI,CAAC,QAAQ;aACjB,IAAI,CACHA,QAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAC1BA,QAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAI;AACxB,YAAA,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC;AACpD,SAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAC7B,CAAC;KACL;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;wGAzBU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;MCFE,0BAA0B,CAAA;IAE9B,aAAa,GAAG,CAAC,CAAC;wGAFd,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC4BY,6BAA6B,CAAA;IAEjC,WAAW,GAAG,WAAW,CAAC;AAG1B,IAAA,MAAM,CAAS;wGALX,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjC1C,80EAkEe,EAAA,MAAA,EAAA,CAAA,mcAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhDP,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,aAAa,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,YAAY,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACP,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGJ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAvBzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAG7B,IAAA,EAAA,EAAE,KAAK,EAAE,eAAe,EAAE,EACf,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACL,QAAQ;wBACR,YAAY;wBACZ,aAAa;wBACb,OAAO;wBACP,gBAAgB;wBAChB,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,SAAS;wBACT,YAAY;wBACZ,IAAI;wBACJ,OAAO;wBACP,SAAS;AACZ,qBAAA,EAAA,QAAA,EAAA,80EAAA,EAAA,MAAA,EAAA,CAAA,mcAAA,CAAA,EAAA,CAAA;8BAOI,MAAM,EAAA,CAAA;sBADZ,KAAK;;;MEfK,mCAAmC,CAAA;AAGvC,IAAA,YAAY,CAAW;IAEvB,WAAW,CAAC,MAAM,EAAE,KAAiB,EAAA;AAC1C,QAAA,IAAG,MAAM,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;KACF;wGATU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBhD,+5FA8EA,ED9DQ,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,4FACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACP,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGJ,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAb/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,mBAGzB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACL,aAAa;wBACb,YAAY;wBACZ,OAAO;wBACP,SAAS;AACZ,qBAAA,EAAA,QAAA,EAAA,+5FAAA,EAAA,CAAA;8BAKI,YAAY,EAAA,CAAA;sBADlB,KAAK;;;MEqBK,wBAAwB,CAAA;IAG5B,YAAY,GAAa,EAAE,CAAC;IAG5B,OAAO,GAAa,EAAE,CAAC;IAEvB,WAAW,GAAG,WAAW,CAAC;IAC1B,UAAU,GAAG,UAAU,CAAC;AAExB,IAAA,YAAY,CAAC,MAAc,EAAE,KAAU,EAAE,YAAuB,EAAA;AACrE,QAAA,IAAG,MAAM,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAErB,YAAA,IAAG,MAAM,CAAC,QAAQ,EAAE;AAClB,gBAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC/B;SACF;KACF;IAEM,WAAW,CAAC,MAAM,EAAE,KAAiB,EAAA;AAC1C,QAAA,IAAG,MAAM,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;KACF;wGAzBU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CrC,41LA0JA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5HQ,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC7B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,mCAAmC,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,mBAGZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACL,6BAA6B;wBAC7B,eAAe;wBACf,YAAY;wBACZ,OAAO;wBACP,SAAS;wBACT,oBAAoB;wBACpB,OAAO;wBACP,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,YAAY;wBACZ,mCAAmC;wBACnC,SAAS;AACZ,qBAAA,EAAA,QAAA,EAAA,41LAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,CAAA;8BAKI,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,KAAK;;;MEhDK,gBAAgB,GAAG,IAAI,cAAc,CAAM,kBAAkB;;ACKnE,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAuF,uBAAuB,CAAC;;ACH5J,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAa,0BAA0B,CAAC;;MCWlF,iBAAiB,CAAA;AAEZ,IAAA,IAAI,CAAI;AACR,IAAA,UAAU,CAAa;IACvB,eAAe,GAAuB,OAAO,CAAC;IAEvD,KAAK,GAAA;AACV,QAAA,IAAG,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;KACF;wGAZU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,6JAJlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAGiB,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;;;ACMF,MAAO,qBAAsB,SAAQ,iBAAmC,CAAA;IAE5D,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,WAAW,GAAG,CAAC,IAAI,KAAI;QAC5B,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC,KAAC,CAAC;AAEK,IAAA,KAAK,GAAG,CAAC,OAAO,KAAqB;AAC1C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAoB,CAAC;AAC1E,KAAC,CAAC;wGAXS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBlC,waAckB,EDKd,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,oBAAoB,gcACpB,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,mBAEnB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,oBAAoB;wBACpB,oBAAoB;wBACpB,WAAW;wBACX,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,waAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AEMF,MAAO,0BACX,SAAQ,iBAAwC,CAAA;IAGhC,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,KAAK,CAAQ;AAEZ,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE9B,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;IAEM,OAAO,GAAA;AACZ,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;AAEM,IAAA,KAAK,GAAG,CAAC,OAAO,KAAI;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,KAAC,CAAC;IAEK,YAAY,CAAC,KAAK,EAAE,KAAK,EAAA;AAC9B,QAAA,OAAO,KAAK,EAAE,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC;KACtC;AAEM,IAAA,WAAW,CAAC,MAAW,EAAA;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KAC/B;wGAhDU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCvC,uhCAkCwB,EDNpB,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,yBAAyB,+gCACzB,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,mBAGxB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,yBAAyB;wBACzB,oBAAoB;wBACpB,WAAW;wBACX,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,uhCAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,CAAA;8BAMe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AETF,MAAO,iBAAkB,SAAQ,iBAA+B,CAAA;AAE7D,IAAA,KAAK,CAAU;IAEf,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;wGAXU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B9B,oJAKmB,EDmBf,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,+BACb,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,cAAc;wBACd,WAAW;wBACX,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,oJAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,CAAA;;;AEQG,MAAO,cAAe,SAAQ,iBAA4B,CAAA;AAEvD,IAAA,KAAK,CAAM;AAEV,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEpC,QAAQ,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;AACb,aAAA,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC9B;AAEM,IAAA,SAAS,GAAG,CAAC,UAAU,EAAE,SAAS,KAAI;AAC3C,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9D,KAAC,CAAC;wGAxBS,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC3B,ueAkBC,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWG,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACZ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGA,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,mBAGZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,YAAY;wBACZ,WAAW;wBACX,YAAY;wBACZ,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,ueAAA,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,CAAA;;;AEMG,MAAQ,kBACZ,SAAQ,iBAAoD,CAAA;AAE5C,IAAA,aAAa,CAAS;IACtB,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;AAC/B,IAAA,IAAI,CAAO;AACX,IAAA,EAAE,CAAO;IAET,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,aAAa;YACvD,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;AAEhD,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;SAChD;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;KAC/B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC;KACH;wGAvCW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,ECxChC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m8BAoCM,EDLF,MAAA,EAAA,CAAA,qGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,4LACZ,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,oBAAoB,EACpB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,8WAClB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,QAAQ;wBACR,QAAQ;wBACR,WAAW;wBACX,oBAAoB;wBACpB,kBAAkB;wBAClB,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,m8BAAA,EAAA,MAAA,EAAA,CAAA,qGAAA,CAAA,EAAA,CAAA;8BAKe,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AEJF,MAAO,aAAc,SAAQ,iBAA0C,CAAA;IAE3D,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;IAE/B,YAAY,GAAG,YAAY,CAAC;IAC5B,QAAQ,GAAG,IAAI,CAAC;IAChB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,IAAI,CAAC;AACf,IAAA,KAAK,CAAM;IAEX,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ;YAClD,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QAEhD,IAAK,IAAI,CAAC,IAAqB,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,EAAE;AACrE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B;AAEM,IAAA,MAAM,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;wGA3BU,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,ECxC1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0uCAyCC,EDVG,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,4LACZ,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oGACpB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,mBAEX,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,QAAQ;wBACR,QAAQ;wBACR,WAAW;wBACX,kBAAkB;wBAClB,oBAAoB;wBACpB,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,0uCAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AENF,MAAO,cAAe,SAAQ,iBAA4B,CAAA;AAE9C,IAAA,aAAa,CAAS;IACtB,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,GAAG,CAAS;AACZ,IAAA,GAAG,CAAS;IAEZ,QAAQ,GAAA;QACb,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;KACjC;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;YAChB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC;KACH;AAEM,IAAA,KAAK,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAG,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;wGAxBU,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,0KCrC3B,y5CA2DM,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCF,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EACT,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,gUACR,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EACX,oBAAoB,EACpB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,0gBACZ,SAAS,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGA,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,mBAGZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,QAAQ;wBACR,SAAS;wBACT,QAAQ;wBACR,WAAW;wBACX,oBAAoB;wBACpB,YAAY;wBACZ,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,y5CAAA,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA,CAAA;8BAIe,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AEOF,MAAO,eAAgB,SAAQ,iBAA6B,CAAA;IAEhD,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAGhD,IAAA,MAAM,CAAY;AAElB,IAAA,KAAK,CAAM;AAEV,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAElC,OAAO,GAAA;AACZ,QAAA,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;AAEM,IAAA,kBAAkB,CAAC,MAAe,EAAA;QACvC,IAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,IAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACzB,oBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC;AAC7D,iBAAC,CAAC,CAAC;aACJ;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC5B;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACzB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC5B;KACF;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;AAEM,IAAA,aAAa,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAG,KAAK,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACxF;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;SAC7C;KACF;wGA/DU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKf,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDtB,09CAgDC,EAAA,MAAA,EAAA,CAAA,ofAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdG,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,weACT,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGA,eAAe,EAAA,UAAA,EAAA,CAAA;kBApB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,mBAGb,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,OAAO;wBACP,QAAQ;wBACR,SAAS;wBACT,oBAAoB;wBACpB,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,WAAW;wBACX,WAAW;wBACX,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,09CAAA,EAAA,MAAA,EAAA,CAAA,ofAAA,CAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBAGC,MAAM,EAAA,CAAA;sBADZ,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEdlC,MAAO,aAAc,SAAQ,iBAA2B,CAAA;IAE5C,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,KAAK,CAAS;IAEd,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;KACF;AAEM,IAAA,KAAK,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAG,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;AACnC,YAAA,IAAG,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;gBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;KACF;wGA7BU,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,iKCtC1B,8jBAyBiB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEb,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,sDACR,SAAS,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EACR,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,onBACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,EACpB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oHACT,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGL,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,QAAQ;wBACR,SAAS;wBACT,QAAQ;wBACR,WAAW;wBACX,mBAAmB;wBACnB,oBAAoB;wBACpB,SAAS;wBACT,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,8jBAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;AENF,MAAO,aAAc,SAAQ,iBAA2B,CAAA;IAE5C,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AAEhD,IAAA,KAAK,CAAO;IAEZ,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B;wGATU,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,ECnC1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2bAgBiB,EDUb,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,4LACZ,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oGACpB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,mBAEX,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,QAAQ;wBACR,QAAQ;wBACR,WAAW;wBACX,kBAAkB;wBAClB,oBAAoB;wBACpB,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,2bAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;;;MEiBK,mBAAmB,CAAA;IAEd,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAsB,MAAM,CAAC;AACvC,IAAA,aAAa,CAAS;AACtB,IAAA,UAAU,CAAa;AACvB,IAAA,IAAI,CAAgB;AACpB,IAAA,IAAI,CAAS;IACb,eAAe,GAAuB,OAAO,CAAC;IAEvD,QAAQ,GAAG,QAAQ,CAAC;AAE3B,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,IAAgB,CAAC;KAC9B;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,IAAkB,CAAC;KAChC;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,IAAiB,CAAC;KAC/B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,IAAiB,CAAC;KAC/B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,IAAwB,CAAC;KACtC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,IAA6B,CAAC;KAC3C;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,IAAgB,CAAC;KAC9B;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,IAAqB,CAAC;KACnC;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,IAAoB,CAAC;KAClC;AAED,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO,IAAI,CAAC,IAAyB,CAAC;KACvC;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,IAAgB,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,IAAoB,CAAC;KAClC;AAEO,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEjC,QAAQ,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;AACb,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;wGA5EU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDhC,ulIA0HC,EDhFG,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,kGACb,eAAe,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,cAAc,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,qBAAqB,EACrB,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,4GAClB,aAAa,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,iBAAiB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACjB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,mBAGN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,qBAAqB;wBACrB,0BAA0B;wBAC1B,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,iBAAiB;wBACjB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,ulIAAA,EAAA,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,CAAA;8BAIe,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;;;MEhCK,yBAAyB,CAAA;AAE7B,IAAA,IAAI,GAAgC,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;AACrE,IAAA,aAAa,GAAW,MAAM,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC;AAClE,IAAA,UAAU,GAAe,MAAM,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;wGAJ5D,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BtC,iQASM,EDgBF,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8BACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGV,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,WAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EAAA,iQAAA,EAAA,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA,CAAA;;;MEFU,iCAAiC,CAAA;AAE5B,IAAA,WAAW,CAAqB;IAEzC,KAAK,GAAkC,EAAE,CAAC;AAEzC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE9C,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC3C,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,aAAA,GAAG,CAAC,CAAC,IAAiC,KAAiC;AAEtE,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK;AACnC,qBAAA,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC;aACvD,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC3E,YAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,YAAA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1D,YAAA,OAAO,UAAU,CAAC;AACpB,SAAC,CAAC,CAAC;KACN;wGAxBU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B9C,0QAQM,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDgBF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAV7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,mBAGhB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,0QAAA,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,CAAA;8BAIe,WAAW,EAAA,CAAA;sBAA1B,KAAK;;;MEKK,kCAAkC,CAAA;AAEtC,IAAA,YAAY,CAAuB;AAElC,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvD,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnC,QAAQ,GAAA;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;KAC9D;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;KAChD;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;KAC9C;AAEM,IAAA,YAAY,CAAC,WAA+B,EAAA;AACjD,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;AAEM,IAAA,MAAM,CAAC,WAA+B,EAAA;AAC3C,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC;aAC5C,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AAC7D,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,KAAK,CAAC,YAAkC,EAAA;AAC7C,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC;AAC5C,aAAA,SAAS,EAAE,CAAC;KAChB;wGAzCU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClC/C,gnCAiDM,EDrBF,MAAA,EAAA,CAAA,y5DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,woBACf,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,iCAAiC,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGH,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAZ9C,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,SAAS;wBACT,iCAAiC;wBACjC,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,gnCAAA,EAAA,MAAA,EAAA,CAAA,y5DAAA,CAAA,EAAA,CAAA;;;MEeU,sBAAsB,CAAA;AAG1B,IAAA,KAAK,CAA6B;IAElC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAkC,EAAE,CAAC;AAElD,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B,IAAA,WAAW,CAAa;AACxB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAEzD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;aAChC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC1C;AAEM,IAAA,SAAS,CAAC,KAAsB,EAAA;AACrC,QAAA,MAAM,IAAI,GAAgC,KAAK,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,OAAO;AACf,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,GAAG,CAAC,EACVL,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrB,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChF;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAChD;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAChC,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnE;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;aAC7B,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEM,KAAK,GAAA;QACV,IAAI,CAAC,iBAAiB,CAAC,KAAK;aACzB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC;AAChC,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAG,CAAC,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KACnD;AAEM,IAAA,QAAQ,CAAC,IAAiC,EAAE,IAAA,GAAe,IAAI,EAAA;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AACtC,aAAA,aAAa,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAEtD,QAAA,MAAM,SAAS,GAAwB;AACrC,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,EAAE,CAAC,YAAY,GAAG,CAAC;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;SACF,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC3B,aAAA,QAAQ,EAAE;aACV,mBAAmB,CAAC,EAAE,CAAC;aACvB,aAAa,CAAC,SAAS,CAAC,CAAC;AAE5B,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACtC,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;AACjD,YAAA,UAAU,EAAE,8BAA8B;AAC3C,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CACnC,IAAI,CAAC,CAAC,CAAC,EACPA,KAAG,CAAC,MAAK;YACP,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,SAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,EAAE,CAAC;QAEd,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KACrD;IAEM,gBAAgB,CAAC,EAAO,EAAE,SAAiB,EAAA;QAChD,IAAG,EAAE,EAAE;YACL,IAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACnC,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SAC3D;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AAC9C,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAA,CAAE,CAAC,CAAC;AAC9E,SAAC,CAAC,CACH;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE;AACjC,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ;iBACV,OAAO,CAAC,WAAW,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAE,CAAA,CAC9D,CAAC;AACN,SAAC,CAAC,CACH;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB;AACxB,aAAA,MAAM,EAAE;AACR,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAA,CAAE,CAAC,CAAC;AAC9E,SAAC,CAAC,CACH;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;IAEM,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO;aACT,IAAI,CAAC,kCAAkC,EAAE;YACxC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,YAAA,YAAY,EAAE,KAAK;AACpB,SAAA,CAAC,CAAC;KACN;IAEM,eAAe,GAAA;AACpB,QAAA,IAAG,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;KACF;IAEM,UAAU,CACf,IAAiC,EACjC,IAAqD,EAAA;AAErD,QAAA,IAAG,CAAC,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;AAED,QAAA,IAAG,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;AAEO,IAAA,gBAAgB,CAAC,UAAsB,EAAE,IAAiC,EAAE,IAAY,EAAA;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,yBAAyB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5F,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAA4B,eAAe,CAAC,CAAC;QAEnF,OAAO,YAAY,CAAC,QAAQ,CAAC;KAC9B;IAEO,eAAe,CAAC,IAAiC,EAAE,aAAqB,EAAA;AAC9E,QAAA,MAAM,SAAS,GAAqB;AAClC,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE;SACjG,CAAC;QAEF,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,SAAS;AACvB,SAAA,CAAC,CAAC;KACJ;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,iBAAiB,CAAC,OAAO;AAC3B,aAAA,IAAI,CACHA,KAAG,CAAC,MAAK;YACP,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACvD,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;wGA5OU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,qGAEnB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjD/B,49FA4FC,EDvDG,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,SAAS,EACT,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,WAAS,oJACT,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,oJACjB,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,mBAGV,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,SAAS;wBACT,YAAY;wBACZ,SAAS;wBACTI,WAAS;wBACT,oBAAoB;wBACpB,eAAe;wBACf,iBAAiB;wBACjB,WAAW;AACZ,qBAAA,EAAA,QAAA,EAAA,49FAAA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA,CAAA;8BAKM,KAAK,EAAA,CAAA;sBADX,YAAY;uBAAC,eAAe,CAAA;;;MEFlB,qBAAqB,CAAA;AAGzB,IAAA,eAAe,CAAW;IAEjB,SAAS,GAAG,KAAK,CAAC;IAE3B,iBAAiB,GAAG,QAAQ,CAAC;IAC7B,OAAO,GAAG,EAAE,CAAC;AAEZ,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE3C,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;KAChD;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;KAC/B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;IAEM,KAAK,CAAC,KAAK,GAAG,IAAI,EAAA;QACvB,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;AAEM,IAAA,aAAa,CAAC,OAAO,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,SAAS;AACX,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;AACpD,SAAC,CAAC,CAAC;KACN;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM;AACvC,aAAA,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAEO,cAAc,GAAA;;QAEpB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;AACH,SAAC,CAAC,CAAC;KACJ;wGArFU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEM,QAAQ,ECjDhD,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+hBAoBC,+PDgBG,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,qHACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,EACR,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,onBACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGA,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,OAAO;wBACP,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,WAAW;wBACX,YAAY;wBACZ,aAAa;wBACb,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,+hBAAA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,CAAA;8BAKM,eAAe,EAAA,CAAA;sBADrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;gBAGhC,SAAS,EAAA,CAAA;sBAAxB,KAAK;;;MEoCK,eAAe,CAAA;AAGnB,IAAA,YAAY,CAAwB;IAE3C,IAA4B,eAAe,CAAC,KAAmB,EAAA;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAEgB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AACjC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AACjC,IAAA,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;AAG3C,IAAA,SAAS,CAA2B;AAGpC,IAAA,eAAe,CAAmB;AAGlC,IAAA,QAAQ,CAAa;IAGrB,cAAc,GAAG,KAAK,CAAC;IAGvB,aAAa,GAAG,KAAK,CAAC;IAGtB,aAAa,GAAG,IAAI,CAAC;AAEpB,IAAA,OAAO,CAAiB;AACxB,IAAA,aAAa,CAAe;AAC5B,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAChC,cAAc,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACzC,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvD,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEvD,IAAA,WAAA,GAAA;AAEE,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;KAC1C;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDG;IACH,IAAW,MAAM,CAAC,MAAM,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;KACxC;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;KAClD;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACjC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KACxD;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACpD,YAAA,eAAe,EAAE,EAAE,CACjB,IAAI,CAAC,KAAK;AACP,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CACvD;SACF,CAAC;aACC,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,KAAI;YAC1C,OAAO,cAAc,IAAI,eAAe,CAAC;SAC1C,CAAC,CACH,CAAC;KACL;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;KAChD;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;KAClD;AAED,IAAA,IAAW,qBAAqB,GAAA;AAC9B,QAAA,OAAO,aAAa,CAAC;YACnB,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;SAChF,CAAC;aACC,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAI;YAC7C,OAAO,cAAc,IAAI,kBAAkB,CAAC;SAC7C,CAAC,CACH,CAAC;KACL;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;KACzC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;KACzC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;KAC7C;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAEM,QAAQ,GAAA;AACb,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;YAC9B,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;KAC5B;AAEM,IAAA,UAAU,CAAC,IAAyB,EAAE,UAAA,GAAsB,IAAI,EAAA;QACrE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACnD;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK;aACd,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;aAC1C,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;KAC7C;AAEM,IAAA,YAAY,CAAC,IAAY,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;AACpB,aAAA,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAExC,OAAO,IAAI,EAAE,KAAK,CAAC;KACpB;AAEM,IAAA,QAAQ,CAAC,IAAY,EAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;KAC5B;AAEM,IAAA,QAAQ,CAAC,IAAY,EAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;KAC5B;AAEM,IAAA,SAAS,CAAC,IAAY,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAEM,gBAAgB,CACrB,IAAY,EACZ,MAA+B,EAAA;QAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;KACrD;IAEM,KAAK,CAAC,KAAK,GAAG,IAAI,EAAA;QACvB,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACrB;AAED,QAAA,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;KAC5B;IAEM,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACxB,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;AAED,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;QAExC,IAAG,EAAE,EAAE;AACL,YAAA,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC;AACvC,YAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAEtC,UAAU,CAAC,MAAK;AACd,gBAAA,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,gBAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;aAC3B,EAAE,IAAI,CAAC,CAAC;SACV;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAEM,IAAA,OAAO,CAAC,IAAI,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;KACvC;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,IAAY,EAAA;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;KAClC;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,OAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC9C;AAED;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;AAED;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED;;AAEG;IACI,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;AAEG;IACI,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;AAEG;IACI,uBAAuB,GAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;KACnD;AAED;;AAEG;IACI,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;KAC/C;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;KAC/C;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxB,iBAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;oBAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1C;IAEO,eAAe,GAAA;AACrB,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;iBAC5C,IAAI,CACHF,QAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;SACN;KACF;wGAhaU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA5Bf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT,qBAAqB;YACrB,oBAAoB;YACpB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,cAAc;AACf,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgCa,wBAAwB,EAGxB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,2EAd9C,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiBD,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3G3C,mhHAiHc,EDxCV,MAAA,EAAA,CAAA,qgFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,+JACnB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,gaAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,+BACb,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,aAAa,EACb,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CACT,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhC3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA;wBACT,qBAAqB;wBACrB,oBAAoB;wBACpB,sBAAsB;wBACtB,gBAAgB;wBAChB,qBAAqB;wBACrB,iBAAiB;wBACjB,iBAAiB;wBACjB,cAAc;AACf,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,OAAO;wBACP,OAAO;wBACP,WAAW;wBACX,YAAY;wBACZ,aAAa;wBACb,sBAAsB;wBACtB,wBAAwB;wBACxB,aAAa;wBACb,cAAc;wBACd,SAAS;wBACT,qBAAqB;AACtB,qBAAA,EAAA,QAAA,EAAA,mhHAAA,EAAA,MAAA,EAAA,CAAA,qgFAAA,CAAA,EAAA,CAAA;wDAKM,YAAY,EAAA,CAAA;sBADlB,SAAS;uBAAC,qBAAqB,CAAA;gBAGJ,eAAe,EAAA,CAAA;sBAA1C,KAAK;uBAAC,QAAQ,CAAA;gBAIE,MAAM,EAAA,CAAA;sBAAtB,MAAM;gBACU,MAAM,EAAA,CAAA;sBAAtB,MAAM;gBACU,KAAK,EAAA,CAAA;sBAArB,MAAM;gBAGA,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,wBAAwB,CAAA;gBAI/B,eAAe,EAAA,CAAA;sBADrB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAIpD,QAAQ,EAAA,CAAA;sBADd,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAIpC,cAAc,EAAA,CAAA;sBADpB,WAAW;uBAAC,oBAAoB,CAAA;gBAI1B,aAAa,EAAA,CAAA;sBADnB,WAAW;uBAAC,sBAAsB,CAAA;gBAI5B,aAAa,EAAA,CAAA;sBADnB,WAAW;uBAAC,iBAAiB,CAAA;;;ME1FnB,cAAc,CAAA;AAClB,IAAA,OAAO,OAAO,CAAC,MAAA,GAAuB,EAAE,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,QAAQ,EAAE;AACR,wBAAA,MAAM,EAAE;AACN,4BAAA,KAAK,EAAE,EAAE;AACV,yBAAA;AACD,wBAAA,GAAG,MAAM;AACM,qBAAA;AAClB,iBAAA;AACF,aAAA;SACF,CAAC;KACH;wGAhBU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAdvB,eAAe;YACf,wBAAwB;YACxB,sBAAsB;AACtB,YAAA,oBAAoB,aAMpB,eAAe;YACf,wBAAwB;YACxB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EATd,SAAA,EAAA;YACT,OAAO;AACR,SAAA,EAAA,OAAA,EAAA,CAPC,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAcN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,wBAAwB;wBACxB,sBAAsB;wBACtB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,OAAO;AACR,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,wBAAwB;wBACxB,sBAAsB;AACvB,qBAAA;AACF,iBAAA,CAAA;;;ACzBD;;AAEG;;;;"}
|