{"version":3,"file":"tql-component.mjs","sources":["../../../projects/tql-component/src/lib/pipes/tql-url-safe/tql-url-safe.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-highlight/tql-highlight.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-order-by/tql-order-by.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-key-value-order/tql-key-value-order.pipe.ts","../../../projects/tql-component/src/lib/pipes/pipes.module.ts","../../../projects/tql-component/src/lib/constants/error-type.constant.ts","../../../projects/tql-component/src/lib/constants/interface/i-router-data.ts","../../../projects/tql-component/src/lib/constants/values/actions.constant.ts","../../../projects/tql-component/src/lib/constants/values/mics.constant.ts","../../../projects/tql-component/src/lib/constants/models/code-editor.model.ts","../../../projects/tql-component/src/lib/components/basic/tql-input/tql-input.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-input/tql-input.component.html","../../../projects/tql-component/src/lib/components/basic/tql-select/tql-select.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-select/tql-select.component.html","../../../projects/tql-component/src/lib/controllers/tql-header/tql-header-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-navbar/tql-navbar-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-collapse/tql-collapse-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-dynamic-component/tql-dynamic-controller.service.ts","../../../projects/tql-component/src/lib/components/basic/tql-collapse/tql-collapse.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-collapse/tql-collapse.component.html","../../../projects/tql-component/src/lib/components/basic/tql-loading-bar/tql-loading-bar.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-loading-bar/tql-loading-bar.component.html","../../../projects/tql-component/src/lib/components/basic/tql-tab/tql-tab.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-tab/tql-tab.component.html","../../../projects/tql-component/src/lib/components/basic/tql-resizable/tql-resizable.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-resizable/tql-resizable.component.html","../../../projects/tql-component/src/lib/components/basic/tql-spinner/tql-spinner.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-spinner/tql-spinner.component.html","../../../projects/tql-component/src/lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component.html","../../../projects/tql-component/src/lib/components/basic/basic.module.ts","../../../projects/tql-component/src/lib/directives/ng-var/ng-var.directive.ts","../../../projects/tql-component/src/lib/controllers/tql-helper/tql-helper.service.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar-menu/tql-action-bar-menu.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar-menu/tql-action-bar-menu.component.html","../../../projects/tql-component/src/lib/components/template/tql-action-bar/tql-action-bar.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar/tql-action-bar.component.html","../../../projects/tql-component/src/lib/components/template/tql-simple-list/tql-simple-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-list/tql-simple-list.component.html","../../../projects/tql-component/src/lib/directives/tql-collapse/tql-collapse.directive.ts","../../../projects/tql-component/src/lib/directives/tql-resizable/tql-resizable.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-action-drawer/tql-action-drawer.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-drawer/tql-action-drawer.component.html","../../../projects/tql-component/src/lib/components/template/tql-panel/tql-panel.component.ts","../../../projects/tql-component/src/lib/components/template/tql-panel/tql-panel.component.html","../../../projects/tql-component/src/lib/components/template/tql-breadcrumb/tql-breadcrumb.component.ts","../../../projects/tql-component/src/lib/components/template/tql-breadcrumb/tql-breadcrumb.component.html","../../../projects/tql-component/src/lib/directives/tql-click-outside/tql-click-outside.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar/tql-navbar.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar/tql-navbar.component.html","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-logo/tql-navbar-logo.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-logo/tql-navbar-logo.component.html","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-title/tql-navbar-title.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-title/tql-navbar-title.component.html","../../../projects/tql-component/src/lib/directives/tql-dynamic-component-host/tql-dynamic-component-host.directive.ts","../../../projects/tql-component/src/lib/directives/tql-hover-class/tql-hover-class.directive.ts","../../../projects/tql-component/src/lib/directives/tql-table-filter-widget/tql-table-filter-widget.directive.ts","../../../projects/tql-component/src/lib/directives/tql-resized/tql-resized.event.ts","../../../projects/tql-component/src/lib/directives/tql-resized/tql-resized.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-card/tql-simple-card.component.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-card/tql-simple-card.component.html","../../../projects/tql-component/src/lib/components/template/tql-header/tql-header.component.ts","../../../projects/tql-component/src/lib/components/template/tql-header/tql-header.component.html","../../../projects/tql-component/src/lib/components/template/tql-collapse-group/tql-collapse-group.component.ts","../../../projects/tql-component/src/lib/components/template/tql-collapse-group/tql-collapse-group.component.html","../../../projects/tql-component/src/lib/components/template/tql-highlight-list/tql-highlight-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-highlight-list/tql-highlight-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-status-list/tql-status-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-status-list/tql-status-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-tree/tql-tree.component.ts","../../../projects/tql-component/src/lib/components/template/tql-tree/tql-tree.component.html","../../../projects/tql-component/src/lib/components/template/tql-image-card/tql-image-card.component.ts","../../../projects/tql-component/src/lib/components/template/tql-image-card/tql-image-card.component.html","../../../projects/tql-component/src/lib/components/template/tql-tabs-header/tql-tabs-header.component.ts","../../../projects/tql-component/src/lib/components/template/tql-tabs-header/tql-tabs-header.component.html","../../../projects/tql-component/src/lib/components/template/tql-code-editor/tql-code-editor.component.ts","../../../projects/tql-component/src/lib/components/template/tql-code-editor/tql-code-editor.component.html","../../../projects/tql-component/src/lib/components/template/tql-nested-list/tql-nested-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-nested-list/tql-nested-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-dynamic-component/tql-dynamic-component.component.ts","../../../projects/tql-component/src/lib/components/template/tql-dynamic-component/tql-dynamic-component.component.html","../../../projects/tql-component/src/lib/components/template/tql-progress-list/tql-progress-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-progress-list/tql-progress-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-table/tql-table.component.ts","../../../projects/tql-component/src/lib/components/template/tql-table/tql-table.component.html","../../../projects/tql-component/src/lib/components/template/tql-listed-tree/tql-listed-tree.component.ts","../../../projects/tql-component/src/lib/components/template/tql-listed-tree/tql-listed-tree.component.html","../../../projects/tql-component/src/lib/components/template/tql-spin/tql-spin.component.ts","../../../projects/tql-component/src/lib/components/template/tql-spin/tql-spin.component.html","../../../projects/tql-component/src/lib/directives/tql-spin/tql-spin.directive.ts","../../../projects/tql-component/src/lib/directives/directives.module.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar.module.ts","../../../projects/tql-component/src/lib/components/template/template.module.ts","../../../projects/tql-component/src/lib/components/layouts/tql-empty-layout/tql-empty-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-empty-layout/tql-empty-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-header-layout/tql-header-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-header-layout/tql-header-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-navbar-layout/tql-navbar-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-navbar-layout/tql-navbar-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-main-layout/tql-main-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-main-layout/tql-main-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/layouts.module.ts","../../../projects/tql-component/src/lib/components/components.module.ts","../../../projects/tql-component/src/lib/tql-component.module.ts","../../../projects/tql-component/src/lib/validators/funtions.ts","../../../projects/tql-component/src/lib/validators/email.validator.ts","../../../projects/tql-component/src/lib/validators/no-white-space.validator.ts","../../../projects/tql-component/src/public-api.ts","../../../projects/tql-component/src/tql-component.ts"],"sourcesContent":["import {Pipe, PipeTransform} from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'tqlUrlSafe'\r\n})\r\nexport class TqlUrlSafePipe implements PipeTransform {\r\n\r\n    constructor(private sanitizer: DomSanitizer) {\r\n    }\r\n\r\n    transform(url) {\r\n        return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n    }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'tqlHighlight'\r\n})\r\nexport class TqlHighlightPipe implements PipeTransform {\r\n\r\n    transform(value: any, args: any, position: any): any {\r\n        console.log(value, args);\r\n\r\n        if (!args) {\r\n            return value;\r\n        }\r\n\r\n        if (position === -1) {\r\n            return this.replaceLast(value, args, '<mark>$&</mark>');\r\n        }\r\n        let re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\r\n        // console.log(re);\r\n        return value.replace(re, '<mark>$&</mark>');\r\n    }\r\n\r\n    replaceLast(value, search, replace) {\r\n        /**\r\n         * @author harry\r\n         * @description fix can't highlight text contain especial character\r\n         */\r\n        return value.replace(value === search ? value : new RegExp(search + '(?!.*' + search + ')'), replace);\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport _ from 'lodash';\nimport { TqlUtilsService } from 'tql-service';\n\n@Pipe({\n    name: 'tqlOrderBy',\n})\nexport class TqlOrderByPipe implements PipeTransform {\n    transform(value: any[], key: string | string[]): any[] {\n        return _.orderBy(value, TqlUtilsService.toArray(key));\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'tqlKeyValueOrder'\n})\nexport class TqlKeyValueOrderPipe implements PipeTransform {\n\n    transform(value: any, excludes: string[] = [], topProps: string[] = [], isOrderByValue: boolean = false, orderBy: string = ''): any {\n        if (!value) {\n            return;\n        }\n\n        let values: any[] = [];\n        let objectKeys = Object.keys(value);\n        let referenceValue = this.createReferenceValue(value);\n\n        excludes.map((el, index) => {\n            excludes[index] = el.toLowerCase();\n        });\n\n        topProps.map((el, index) => {\n            let lowerCaseElement = el.toLowerCase();\n            topProps[index] = lowerCaseElement;\n            if (referenceValue[lowerCaseElement]) {\n                values.push({key: referenceValue[lowerCaseElement], value: value[referenceValue[lowerCaseElement]]});\n            }\n        });\n\n        objectKeys.sort().forEach(e => {\n            if (topProps.indexOf(e.toLowerCase()) < 0) {\n                if (!excludes.length || excludes.indexOf(e.toLowerCase()) < 0) {\n                    values.push({key: e, value: value[e], keys: objectKeys});\n                }\n            }\n        });\n\n        if (isOrderByValue) {\n            values = _.orderBy(values, (el) => el.value);\n        }\n\n        if (orderBy) {\n            values = _.orderBy(values, (el) => el.value[orderBy]);\n        }\n        return values;\n    }\n\n    createReferenceValue(obj: object): any {\n        let objects = Object.keys(obj).map(function (key) {\n            return [key.toLowerCase(), key];\n        });\n        return objects.reduce((obj: any, item) => {\n            obj[item[0]] = item[1];\n            return obj;\n        }, {});\n    }\n}\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TqlUrlSafePipe} from './tql-url-safe/tql-url-safe.pipe';\r\nimport {TqlHighlightPipe} from './tql-highlight/tql-highlight.pipe';\r\nimport {TqlOrderByPipe} from './tql-order-by/tql-order-by.pipe';\r\nimport {TqlKeyValueOrderPipe} from './tql-key-value-order/tql-key-value-order.pipe';\r\n\r\n\r\n@NgModule({\r\n    declarations: [\r\n        TqlUrlSafePipe,\r\n        TqlHighlightPipe,\r\n        TqlOrderByPipe,\r\n        TqlKeyValueOrderPipe\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    exports: [\r\n        TqlUrlSafePipe,\r\n        TqlHighlightPipe,\r\n        TqlOrderByPipe,\r\n        TqlKeyValueOrderPipe\r\n    ]\r\n})\r\nexport class PipesModule {\r\n}\r\n","export enum ENUM_ERROR_TYPES {\n    REQUIRED = 'required',\n    WHITESPACE = 'whitespace',\n    EMAIL_ERROR = 'email',\n}\n\nexport const ERROR_INFO = {\n    [ENUM_ERROR_TYPES.REQUIRED]: 'Field is required!',\n    [ENUM_ERROR_TYPES.EMAIL_ERROR]: 'Email is invalid',\n    [ENUM_ERROR_TYPES.WHITESPACE]: \"Can't contain whitespace\",\n    max(value: number) {\n        return 'Max value: ' + value;\n    },\n    min(value: number) {\n        return 'Min value: ' + value;\n    },\n};\n","import {Component} from '@angular/core';\r\n\r\nexport interface IRouterData {\r\n    [ENUM_ROUTER_KEYS.BREADCRUMB]?: string;\r\n    [ENUM_ROUTER_KEYS.BREADCRUMB_PARAM]?: string | string[];\r\n    [ENUM_ROUTER_KEYS.NAV_COMPONENT]?: Component;\r\n    [ENUM_ROUTER_KEYS.HEADER_COMPONENT]?: Component;\r\n    [ENUM_ROUTER_KEYS.DYNAMIC_COMPONENTS]?: Map<string, Component>;\r\n}\r\n\r\nexport enum ENUM_ROUTER_KEYS {\r\n    BREADCRUMB = 'BREADCRUMB',\r\n    BREADCRUMB_PARAM = 'BREADCRUMB_PARAM',\r\n    BREADCRUMB_STORE_TOKEN = 'BREADCRUMB_STORE_TOKEN',\r\n    BREADCRUMB_STORE_SELECTOR = 'BREADCRUMB_STORE_SELECTOR',\r\n    BREADCRUMB_KEY = 'BREADCRUMB_KEY',\r\n    NAV_COMPONENT = 'NAV_COMPONENT',\r\n    SUB_MENU_NAVBAR = 'SUB_MENU_NAVBAR',\r\n    NAV_RESOLVER = 'NAV_RESOLVER',\r\n    HEADER_COMPONENT = 'HEADER_COMPONENT',\r\n    HEADER_RESOLVER = 'HEADER_RESOLVER',\r\n    DYNAMIC_COMPONENTS = 'DYNAMIC_COMPONENTS',\r\n    DYNAMIC_RESOLVER = 'DYNAMIC_RESOLVER',\r\n    CHILDREN = 'children',\r\n}\r\n","import {IListItemOption} from '../interface/i-list-item-option';\r\n\r\nexport enum ENUM_ACTION_KEYS {\r\n    COLLAPSE_ALL = 'Collapse All',\r\n    EXPAND_ALL = 'Expand All',\r\n    COLLAPSE = 'Collapse',\r\n    EXPAND = 'Expand',\r\n    REFRESH = 'Refresh',\r\n    REPLACE = 'Replace',\r\n    UPLOAD = 'Upload',\r\n    DOWNLOAD = 'Download',\r\n    DUPLICATE = 'Duplicate',\r\n    DELETE = 'Delete',\r\n    HIDE = 'Hide',\r\n    SHOW = 'Show',\r\n    NEW = 'New',\r\n    NEW_FILE = 'New File',\r\n    NEW_FOLDER = 'New Folder',\r\n    MORE = 'More',\r\n    INFO = 'More Information',\r\n    SAVE = 'Save',\r\n    FORMAT = 'Format',\r\n    CLOSE = 'Close',\r\n    EDIT = 'Edit',\r\n    PARSE = 'Parse',\r\n}\r\n\r\nexport const ActionsConstant: { [key in ENUM_ACTION_KEYS]: IListItemOption } = {\r\n    [ENUM_ACTION_KEYS.COLLAPSE_ALL]: {\r\n        name: ENUM_ACTION_KEYS.COLLAPSE_ALL,\r\n        iconClassName: 'fal fa-angle-double-up',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.EXPAND_ALL]: {\r\n        name: ENUM_ACTION_KEYS.EXPAND_ALL,\r\n        iconClassName: 'fal fa-angle-double-down',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.COLLAPSE]: {\r\n        name: ENUM_ACTION_KEYS.COLLAPSE,\r\n        iconClassName: 'fal fa-angle-up',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.EXPAND]: {\r\n        name: ENUM_ACTION_KEYS.EXPAND,\r\n        iconClassName: 'fal fa-angle-down',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.REFRESH]: {\r\n        name: ENUM_ACTION_KEYS.REFRESH,\r\n        iconClassName: 'fal fa-sync',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.REPLACE]: {\r\n        name: ENUM_ACTION_KEYS.REPLACE,\r\n        iconClassName: 'fal fa-retweet-alt',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.UPLOAD]: {\r\n        name: 'Upload',\r\n        iconClassName: 'fal fa-upload',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.DOWNLOAD]: {},\r\n    [ENUM_ACTION_KEYS.DUPLICATE]: {\r\n        name: ENUM_ACTION_KEYS.DUPLICATE,\r\n        iconClassName: 'fal fa-copy',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.DELETE]: {\r\n        name: ENUM_ACTION_KEYS.DELETE,\r\n        iconClassName: 'fal fa-trash-alt',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.HIDE]: {},\r\n    [ENUM_ACTION_KEYS.SHOW]: {},\r\n    [ENUM_ACTION_KEYS.NEW]: {},\r\n    [ENUM_ACTION_KEYS.NEW_FILE]: {\r\n        name: 'New',\r\n        iconClassName: 'fal fa-file-plus',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.NEW_FOLDER]: {},\r\n    [ENUM_ACTION_KEYS.MORE]: {\r\n        name: ENUM_ACTION_KEYS.MORE,\r\n        iconClassName: 'fal fa-ellipsis-v',\r\n        showWhenHover: true,\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.INFO]: {\r\n        name: ENUM_ACTION_KEYS.INFO,\r\n        iconClassName: 'fas fa-info-circle',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.SAVE]: {\r\n        name: ENUM_ACTION_KEYS.SAVE,\r\n        iconClassName: 'fal fa-save',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.FORMAT]: {\r\n        name: ENUM_ACTION_KEYS.FORMAT,\r\n        iconClassName: 'fal fa-align-left',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.CLOSE]: {\r\n        name: ENUM_ACTION_KEYS.CLOSE,\r\n        iconClassName: 'fal fa-times',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.EDIT]: {\r\n        name: ENUM_ACTION_KEYS.EDIT,\r\n        iconClassName: 'fal fa-pen',\r\n        onClick: () => {\r\n        }\r\n    },\r\n    [ENUM_ACTION_KEYS.PARSE]: {\r\n        name: ENUM_ACTION_KEYS.PARSE,\r\n        iconClassName: 'fal fa-window-maximize',\r\n        onClick: () => {\r\n        }\r\n    },\r\n};\r\n","export namespace MicsConstant {\n    export const EMPTY_FUNCTION: Function = () => {};\n    export const COLLAPSE_EXPAND_FUNCTION: Function = () => {\n        console.log('collapse expand');\n    };\n\n    export enum ENUM_TYPES {\n        COLLAPSE_EXPAND = 'Collapse Expand',\n    }\n}\n","import { FormControl } from '@angular/forms';\r\nimport { TemplateRef } from '@angular/core';\r\nimport { DefaultModel, TqlUtilsService } from 'tql-service';\r\nimport { Subscription } from 'rxjs';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport CodeMirror from 'codemirror';\r\n\r\nexport class CodeEditorModel extends DefaultModel {\r\n    name: string;\r\n\r\n    /**\r\n     * language mode of editor\r\n     * @param v\r\n     */\r\n    _mode: CodeEditorModel.ENUM_MODES;\r\n    set mode(v: CodeEditorModel.ENUM_MODES) {\r\n        this._mode = v;\r\n        const self = this;\r\n        const key = TqlUtilsService.getEnumKeyByEnumValue(CodeEditorModel.ENUM_MODES, this._mode) || '';\r\n        this.editorOptions['mode'] = key\r\n            ? CodeEditorModel.ENUM_CODEMIRROR_MODES[key]\r\n            : CodeEditorModel.ENUM_CODEMIRROR_MODES.NONE;\r\n    }\r\n\r\n    get mode() {\r\n        return this._mode;\r\n    }\r\n\r\n    /**\r\n     * content of editor\r\n     * @param v\r\n     */\r\n    _content: FormControl;\r\n    content$: Subscription;\r\n    contentData: any;\r\n\r\n    set content(v: FormControl) {\r\n        if (!!v) {\r\n            // fix if content has \\r\r\n            // https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator\r\n            this._content = v;\r\n            this._content?.setValue(TqlUtilsService.clearLineBreakR(this._content.value));\r\n            this.contentData = this._content.value;\r\n            if (this.content$) {\r\n                this.content$.unsubscribe();\r\n            }\r\n            this.content$ = this._content.valueChanges.subscribe((rs) => {\r\n                if (this.content?.dirty) {\r\n                    if (this.contentData.toString() === rs.toString()) {\r\n                        this.content.markAsPristine();\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    get content() {\r\n        return this._content;\r\n    }\r\n\r\n    /**\r\n     * custom template for editor\r\n     * @type {TemplateRef<any>}\r\n     */\r\n    template?: TemplateRef<any>;\r\n\r\n    /**\r\n     * specific data\r\n     * @type {any}\r\n     */\r\n    data: any;\r\n\r\n    /**\r\n     * editor\r\n     * @param v\r\n     */\r\n    editorOptions: any = {\r\n        mode: '',\r\n\r\n        // indent\r\n        tabSize: 4,\r\n        indentUnit: 4,\r\n        indentWithTabs: true,\r\n\r\n        // match highlight\r\n        highlightSelectionMatches: { showToken: /\\w/, annotateScrollbar: true },\r\n\r\n        // match tag\r\n        matchTags: { bothTags: true },\r\n\r\n        // placeholder\r\n        placeholder: 'Code goes here...',\r\n\r\n        lineNumbers: true,\r\n        lineWrapping: true,\r\n        styleActiveLine: true,\r\n        matchBrackets: true,\r\n        theme: CodeEditorModel.ENUM_THEMES.DARK,\r\n        autoCloseBrackets: true,\r\n        autoCloseTags: true,\r\n        foldGutter: true,\r\n        gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\r\n        extraKeys: {\r\n            'Ctrl-Space': 'autocomplete',\r\n            'Ctrl-J': 'toMatchingTag',\r\n            'Ctrl-Q': function (cm: any) {\r\n                cm.foldCode(cm.getCursor());\r\n            },\r\n        },\r\n        readOnly: null,\r\n        hintOptions: {},\r\n    };\r\n    _editorComponent: CodemirrorComponent;\r\n    set editorComponent(v: CodemirrorComponent) {\r\n        this._editorComponent = v;\r\n    }\r\n\r\n    get editorComponent() {\r\n        return this._editorComponent;\r\n    }\r\n\r\n    /**\r\n     * set read only\r\n     * @param v\r\n     */\r\n    set readOnly(v: boolean) {\r\n        this.editorOptions['readOnly'] = v;\r\n    }\r\n\r\n    _saveFn: Function;\r\n    set saveFn(v: ($event: CodeEditorModel) => Promise<boolean>) {\r\n        this._saveFn = () => {\r\n            v(this).then((flag) => {\r\n                if (flag) {\r\n                    this._setSaved();\r\n                }\r\n            });\r\n        };\r\n    }\r\n\r\n    constructor(_data: any = {}) {\r\n        super(_data, 'id');\r\n        this.setId(uuidv4());\r\n        this.name = this.getValue('name');\r\n        this.content = this.getValue('content');\r\n        this.mode = this.getValue('mode');\r\n        this.data = this.getValue('data');\r\n        this.template = this.getValue('template');\r\n        this.saveFn = this.getValue('saveFn');\r\n    }\r\n\r\n    hasUnsaved() {\r\n        return this.content && this.content.dirty;\r\n    }\r\n\r\n    isEmpty() {\r\n        return this.content?.value?.trim() === '';\r\n    }\r\n\r\n    save() {\r\n        if (!!this._saveFn) {\r\n            this._saveFn();\r\n        }\r\n    }\r\n\r\n    _setSaved() {\r\n        this.content.markAsPristine();\r\n        this.contentData = this.content.value;\r\n    }\r\n\r\n    format() {\r\n        if (this.editorComponent?.codeMirror) {\r\n            const first = CodeMirror.Pos(this.editorComponent?.codeMirror?.firstLine());\r\n            const last = CodeMirror.Pos(this.editorComponent?.codeMirror?.lastLine());\r\n            // @ts-ignore\r\n            this.editorComponent?.codeMirror?.autoFormatRange(first, last);\r\n        }\r\n    }\r\n\r\n    setName(name: string) {\r\n        this.name = name;\r\n    }\r\n\r\n    setData(data: any) {\r\n        this.data = data;\r\n    }\r\n\r\n    setMode(mode: CodeEditorModel.ENUM_MODES) {\r\n        this.mode = mode;\r\n    }\r\n}\r\n\r\nexport namespace CodeEditorModel {\r\n    export enum ENUM_MODES {\r\n        NONE = '',\r\n        HTML = 'html',\r\n        JSON = 'json',\r\n        XML = 'xml',\r\n        JS = 'js',\r\n        BML = 'bml',\r\n        IMAGE = 'image',\r\n        CDM = 'cdm',\r\n        TCL = 'tcl',\r\n    }\r\n\r\n    export enum ENUM_CODEMIRROR_MODES {\r\n        NONE = 'text/webassembly',\r\n        HTML = 'text/html',\r\n        JSON = 'application/ld+json',\r\n        XML = 'application/xml',\r\n        JS = 'application/javascript',\r\n        BML = 'text/x-yaml',\r\n        IMAGE = '',\r\n        CDM = 'text/x-yaml',\r\n        TCL = 'text/x-tcl',\r\n    }\r\n\r\n    export enum ENUM_THEMES {\r\n        DARK = 'ayu-dark custom',\r\n    }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { AbstractControl, FormControl } from '@angular/forms';\r\nimport * as _ from 'lodash';\r\nimport { ENUM_ERROR_TYPES, ERROR_INFO, IListItem } from '../../../constants';\r\n\r\n@Component({\r\n    selector: 'tql-input',\r\n    templateUrl: './tql-input.component.html',\r\n    styleUrls: ['./tql-input.component.scss'],\r\n})\r\nexport class TqlInputComponent implements OnInit {\r\n    @Input() icon: string;\r\n    @Input() readonly: boolean = false;\r\n    @Input() placeholder: string = '';\r\n    @Input() className: string;\r\n    @Input() wrapperClassName: string = 'w-100';\r\n    @Input() inputWrapperClassName: string = 'flex-grow-1';\r\n    @Input() type: string = TqlInputComponent.TYPE.TEXT;\r\n    @Input() theme: TqlInputComponent.THEME = TqlInputComponent.THEME.NORMAL;\r\n    @Input() disabled: boolean = false;\r\n    @Input() checkError: boolean = true;\r\n\r\n    // label\r\n    @Input() label: string;\r\n    @Input() labelClassName: string = 'font-weight-medium ';\r\n    @Input() labelCustomTemplate: TemplateRef<any>;\r\n\r\n    // file\r\n    @Input() fileContentFC: FormControl | null = null;\r\n    @Input() fileAccepts: string[] = [];\r\n    @Input() filePreviewTemplate: TemplateRef<any>;\r\n    @Input() isShowPreview: boolean = true;\r\n    @Output() onFileContentChange: EventEmitter<string> = new EventEmitter<string>();\r\n    @Output() onFileChange: EventEmitter<File> = new EventEmitter<File>();\r\n    @Output() blur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    // checkbox\r\n    @Input() checkboxLabel: string;\r\n\r\n    // Radio button\r\n    @Input() radioItems: IListItem[];\r\n    @Input() templateRadio: TemplateRef<any>;\r\n\r\n    // number\r\n    @Input() min: number;\r\n    @Input() max: number;\r\n\r\n    // Area\r\n    @Input() isAreaNonResize: boolean = false;\r\n\r\n    @Input() isPreventPaste: boolean = false;\r\n\r\n    // direction\r\n    private _direction: TqlInputComponent.DIRECTIONS = TqlInputComponent.DIRECTIONS.VERTICAL;\r\n    directionClassName: string = 'flex-column';\r\n\r\n    @Input()\r\n    set direction(v: TqlInputComponent.DIRECTIONS) {\r\n        this._direction = v;\r\n        switch (this._direction) {\r\n            case TqlInputComponent.DIRECTIONS.VERTICAL:\r\n                this.directionClassName = 'flex-column';\r\n                break;\r\n            case TqlInputComponent.DIRECTIONS.HORIZONTAL:\r\n                this.directionClassName = 'flex-row flex-gap-3';\r\n                break;\r\n        }\r\n    }\r\n\r\n    readonly TYPES: typeof TqlInputComponent.TYPE = TqlInputComponent.TYPE;\r\n    readonly THEMES: typeof TqlInputComponent.THEME = TqlInputComponent.THEME;\r\n\r\n    /**\r\n     * input data\r\n     * @type {FormControl | null}\r\n     * @private\r\n     */\r\n    @Output() changed: EventEmitter<any> = new EventEmitter<any>();\r\n    _input: FormControl = new FormControl('');\r\n\r\n    @Input()\r\n    set input(value: AbstractControl | undefined) {\r\n        this._input = !!value ? (value as FormControl) : new FormControl('');\r\n    }\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    /**\r\n     * get error list from input\r\n     * @returns {string[]}\r\n     */\r\n    getError() {\r\n        return _.keys(this._input?.errors);\r\n    }\r\n\r\n    /**\r\n     * check if input is required\r\n     * @returns {boolean}\r\n     */\r\n    get isRequired() {\r\n        if (!!this._input && _.isFunction(this._input!.validator)) {\r\n            return _.includes(_.keys(this._input!.validator('' as any)), ENUM_ERROR_TYPES.REQUIRED);\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * get error message\r\n     * @returns {any}\r\n     */\r\n    getErrorMessage(): string {\r\n        const key: string = _.keys(this._input!.errors).shift() as string;\r\n        // console.log(this._input!.errors);\r\n        return (\r\n            _.get(ERROR_INFO, key) ||\r\n            (typeof this._input!.errors?.[key] === 'string' ? this._input!.errors?.[key] : key)\r\n        );\r\n    }\r\n\r\n    /**\r\n     * handle browsing file\r\n     * @param $event\r\n     */\r\n    onBrowseFile($event: Event) {\r\n        if ($event?.target && $event?.target['files'] && $event?.target['files'].length) {\r\n            const file = $event?.target['files'][0];\r\n            this._input?.setValue(file.name);\r\n            // TODO check extension\r\n\r\n            this.readFileContent(file);\r\n            this.onFileChange.emit(file);\r\n            //     const extension = _.last(_.split(file.name, '.'));\r\n            //     if (extension.toLowerCase() === 'zip') {\r\n            //         this.file = file;\r\n            //         const path = this.URL_LOCAL_PREFIX + file.name;\r\n            //         this.setImportForm(file.name, path, file.name);\r\n            //     } else {\r\n            //         // error\r\n            //         console.error('only support zip file');\r\n            //         this._ToastService.openError('only support zip file');\r\n            //         this.setImportForm();\r\n            //     }\r\n        }\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param file\r\n     * @returns {Promise<unknown>}\r\n     */\r\n    readFileContent(file: File) {\r\n        const self = this;\r\n        this.fileContentFC = null;\r\n        return new Promise((resolve) => {\r\n            const reader = new FileReader();\r\n            // const start = 0;\r\n            // const stop = file.size - 1;\r\n            reader.onloadend = function (evt) {\r\n                if (evt?.target?.readyState == FileReader.DONE) {\r\n                    // DONE == 2\r\n                    let content: string = evt.target.result as string;\r\n                    const maxLine = 10;\r\n                    const totalLines = _.split(content, '\\n').length;\r\n                    let previewContent = content;\r\n                    if (totalLines > maxLine) {\r\n                        previewContent = _.split(previewContent, '\\n', 10).join('\\n');\r\n                        previewContent += `\\n... ${totalLines - maxLine} more line${\r\n                            totalLines - maxLine > 1 ? 's' : ''\r\n                        }`;\r\n                    }\r\n                    self.fileContentFC = new FormControl(previewContent);\r\n                    self.onFileContentChange.emit(content);\r\n                }\r\n            };\r\n            reader.readAsBinaryString(file);\r\n        });\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    noPaste() {\r\n        return !this.isPreventPaste;\r\n    }\r\n\r\n    onDataChanged($event: any) {\r\n        this.changed.emit($event);\r\n    }\r\n}\r\n\r\nexport namespace TqlInputComponent {\r\n    export enum TYPE {\r\n        TEXT = 'text',\r\n        NUMBER = 'number',\r\n        PASSWORD = 'password',\r\n        TEXT_AREA = 'textarea',\r\n        FILE_BROWSE = 'browseFile',\r\n        RADIO = 'radio',\r\n        DROPDOWN = 'dropdown',\r\n        CHECKBOX = 'checkbox',\r\n    }\r\n\r\n    export enum THEME {\r\n        NORMAL = 'normal',\r\n        DARK = 'dark',\r\n        DARKER = 'darker',\r\n    }\r\n\r\n    export enum STYLES {\r\n        SMALL = 'small',\r\n    }\r\n\r\n    export enum DIRECTIONS {\r\n        VERTICAL = 'vertical',\r\n        HORIZONTAL = 'horizontal',\r\n    }\r\n}\r\n","<div class=\" tql-input-wrapper d-flex flex-gap-2 {{directionClassName}} {{wrapperClassName}}\" [attr.type]=\"type\">\r\n    <ng-container *ngIf=\"label\">\r\n        <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\r\n    </ng-container>\r\n    <div #ref [class.d-none]=\"ref?.childNodes?.length == 0\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n    <ng-container [ngSwitch]=\"type\" *ngIf=\"ref?.childNodes?.length == 0\">\r\n        <div class=\"input-wrapper {{inputWrapperClassName}}\">\r\n            <ng-container *ngSwitchCase=\"[TYPES.TEXT, TYPES.PASSWORD].includes(type) ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"defaultType\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"TYPES.NUMBER === type ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"numberType\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"TYPES.TEXT_AREA === type ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"textarea\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"TYPES.FILE_BROWSE === type ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"browseFile\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"TYPES.CHECKBOX === type ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"TYPES.RADIO === type ? type : null\">\r\n                <ng-container *ngTemplateOutlet=\"radio\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngSwitchDefault>\r\n                <ng-container *ngTemplateOutlet=\"defaultType\"></ng-container>\r\n            </ng-container>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"_input && _input?.invalid && _input?.touched && checkError\">\r\n        <div class=\"font-size-12px text-left text-error\">{{ getErrorMessage() }}</div>\r\n    </ng-container>\r\n</div>\r\n<ng-template #labelTemplate>\r\n    <ng-container *ngIf=\"labelCustomTemplate\">\r\n        <ng-container\r\n            *ngTemplateOutlet=\"labelCustomTemplate;context:{label:label,isRequired:isRequired}\"></ng-container>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!labelCustomTemplate\">\r\n        <div class=\"label text-nowrap {{labelClassName}}\">{{ label }}<span\r\n            class=\"ml-1 color-radical-red\">{{ isRequired ? '*' : '' }}</span>\r\n        </div>\r\n    </ng-container>\r\n</ng-template>\r\n<ng-template #defaultType>\r\n    <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n           [class.has-icon]=\"icon\" [class.error]=\"_input?.invalid && _input?.touched\"\r\n           class=\"w-100 font-size-14px {{ className }} {{theme}}\" (paste)=\"noPaste()\" (drop)=\"noPaste()\"\r\n           (ngModelChange)=\"onDataChanged($event)\"\r\n           (blur)=\"blur.emit($event)\" autocomplete=\"{{!isPreventPaste?'on':'off'}}/\" [readonly]=\"readonly\" />\r\n    <ng-container *ngIf=\"icon\">\r\n        <i class=\"icon {{ icon }}\"></i>\r\n    </ng-container>\r\n</ng-template>\r\n<ng-template #numberType>\r\n    <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n           [class.has-icon]=\"icon\" [class.error]=\"_input?.invalid && _input?.touched\"\r\n           class=\"w-100 font-size-14px {{ className }} {{theme}}\" (paste)=\"noPaste()\" (drop)=\"noPaste()\"\r\n           (ngModelChange)=\"onDataChanged($event)\"\r\n           (blur)=\"blur.emit($event)\"\r\n           autocomplete=\"{{!isPreventPaste?'on':'off'}}/\"\r\n           [min]=\"min\"\r\n           [max]=\"max\" [readonly]=\"readonly\" />\r\n    <ng-container *ngIf=\"icon\">\r\n        <i class=\"icon {{ icon }}\"></i>\r\n    </ng-container>\r\n</ng-template>\r\n<ng-template #browseFile>\r\n    <div (click)=\"fileInput.value = null; fileInput.click()\" class=\"cursor-pointer\">\r\n        <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n               [class.has-icon]=\"true\" [class.error]=\"_input?.invalid && _input?.touched\" (blur)=\"blur.emit($event)\"\r\n               class=\"w-100 font-size-14px pointer-events-none {{ className }} {{theme}}\"\r\n               (ngModelChange)=\"onDataChanged($event)\" [readonly]=\"readonly\" />\r\n        <ng-container>\r\n            <i class=\"icon {{ icon || 'fal fa-upload'}}\"></i>\r\n        </ng-container>\r\n    </div>\r\n    <div *ngIf=\"!filePreviewTemplate && isShowPreview\">\r\n        <textarea *ngIf=\"fileContentFC\" [formControl]=\"fileContentFC\" class=\"w-100 font-size-14px mt-3 {{theme}}\"\r\n                  readonly></textarea>\r\n    </div>\r\n    <div *ngIf=\"filePreviewTemplate && isShowPreview\">\r\n        <ng-container *ngTemplateOutlet=\"filePreviewTemplate\"></ng-container>\r\n    </div>\r\n    <input type=\"file\" #fileInput (change)=\"onBrowseFile($event)\" accept=\"{{fileAccepts?.join('|')}}\" />\r\n</ng-template>\r\n<ng-template #textarea>\r\n    <textarea [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n              [class.error]=\"_input?.invalid && _input?.touched\" [class.textarea--resize-none]=\"isAreaNonResize\"\r\n              (blur)=\"blur.emit($event)\"\r\n              (ngModelChange)=\"onDataChanged($event)\"\r\n              class=\"w-100 font-size-14px {{ className }} {{theme}}\" [readonly]=\"readonly\"></textarea>\r\n</ng-template>\r\n<ng-template #checkbox>\r\n    <mat-checkbox [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n                  [class.error]=\"_input?.invalid && _input?.touched\"\r\n                  (ngModelChange)=\"onDataChanged($event)\"\r\n                  (blur)=\"blur.emit($event)\">{{checkboxLabel}}</mat-checkbox>\r\n</ng-template>\r\n\r\n<ng-template #radio>\r\n    <mat-radio-group [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\r\n                     (ngModelChange)=\"onDataChanged($event)\"\r\n                     [class.error]=\"_input?.invalid && _input?.touched\" (change)=\"blur.emit($event?.value)\">\r\n        <mat-radio-button class=\"mr-2\" [value]=\"item?.data\" *ngFor=\"let item of radioItems\">\r\n            <ng-container *ngIf=\"item?.template\">\r\n                <ng-container *ngTemplateOutlet=\"item?.template;context:{item:item}\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"!item?.template\">\r\n                {{item?.name}}\r\n            </ng-container>\r\n        </mat-radio-button>\r\n    </mat-radio-group>\r\n</ng-template>\r\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormControl } from '@angular/forms';\r\nimport * as _ from 'lodash';\r\nimport { ENUM_ERROR_TYPES, ERROR_INFO, IListItem } from '../../../constants';\r\nimport { DefaultComponent, TqlUtilsService } from 'tql-service';\r\nimport { pairwise, startWith } from 'rxjs/operators';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\n\r\n@Component({\r\n    selector: 'tql-select',\r\n    templateUrl: './tql-select.component.html',\r\n    styleUrls: ['./tql-select.component.scss'],\r\n})\r\nexport class TqlSelectComponent extends DefaultComponent implements OnInit, OnChanges {\r\n    @ViewChild(MatMenuTrigger) matMenuTrigger: MatMenuTrigger;\r\n\r\n    @Input() mappingName: string;\r\n    @Input() mappingValue: string;\r\n    @Input() disabled: boolean = false;\r\n    @Input() className: string;\r\n    @Input() placeholder: string;\r\n    @Input() icon: string;\r\n\r\n    _multiple: boolean = false;\r\n    @Input() set multiple(v: boolean) {\r\n        this._multiple = _.toString(v) === 'true';\r\n        if (this._multiple) {\r\n            this._originalInputValue = [];\r\n        } else {\r\n            this._originalInputValue = null;\r\n        }\r\n        // console.log(this._multiple);\r\n        // console.log(!this._multiple);\r\n        // console.log(this._originalInputValue);\r\n    }\r\n\r\n    get multiple() {\r\n        return this._multiple;\r\n    }\r\n\r\n    /**\r\n     * options for selections\r\n     * @type {any[]}\r\n     * @private\r\n     */\r\n    _options: any[] = [];\r\n    _optionsRaw: any[] = [];\r\n\r\n    @Input()\r\n    set options(list: any[]) {\r\n        this._optionsRaw = list;\r\n    }\r\n\r\n    get options() {\r\n        return this._options;\r\n    }\r\n\r\n    _originalInputValue: any = null;\r\n    _input: FormControl | null = null;\r\n\r\n    @Input()\r\n    set input(value: AbstractControl | undefined) {\r\n        this._input = !!value ? (value as FormControl) : null;\r\n        // console.log(value);\r\n        // console.log(this._input);\r\n    }\r\n\r\n    @Output() inputValueChanged: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    constructor(private _ChangeDetectorRef: ChangeDetectorRef) {\r\n        super();\r\n    }\r\n\r\n    ngOnInit(): void {}\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        this.generateOptions();\r\n    }\r\n\r\n    generateOptions() {\r\n        if (this._optionsRaw) {\r\n            if (this.mappingName) {\r\n                this._options = _.map(this._optionsRaw, (item) => {\r\n                    const value: any = this.mappingValue ? _.get(item, this.mappingValue) : item;\r\n                    return new TqlSelectComponent.SelectOption(\r\n                        _.get(item, this.mappingName),\r\n                        value,\r\n                        value === this._input?.value,\r\n                        item?.disabled,\r\n                        item,\r\n                    );\r\n                });\r\n            } else {\r\n                this._options = _.map(this._optionsRaw, (item) => new TqlSelectComponent.SelectOption(item, item));\r\n            }\r\n            // console.log(this._optionsRaw);\r\n            // console.log(this.options);\r\n        }\r\n        if (this._options?.length && this._input) {\r\n            // clear all saved observable\r\n            this.unsubscribeAll();\r\n            this.listenInputChange();\r\n\r\n            this.select(\r\n                true,\r\n                _.filter(this.options, (item) => TqlUtilsService.toArray(this._input?.value).includes(item?.value)),\r\n                true,\r\n            );\r\n\r\n            // this.select(true, _.find(this.options, item => item?.value === this._input?.value), true);\r\n            // _.map(this.options, x => {\r\n            //     console.log(x);\r\n            //     if (TqlUtilsService.toArray(this._input?.value).includes(x.value)) {\r\n            //         this.select(true, x, true);\r\n            //     }\r\n            // });\r\n        }\r\n    }\r\n\r\n    listenInputChange() {\r\n        if (this._input) {\r\n            this.addSubscribes(\r\n                // subscribe value change from input\r\n                this._input.valueChanges\r\n                    // pairwise to get the previous and next values in the subscription\r\n                    .pipe(startWith(null), pairwise())\r\n                    .subscribe(([prev, next]: [any, any]) => {\r\n                        // console.log(prev, next);\r\n                        if (!_.isEqual(prev, next)) {\r\n                            this.select(\r\n                                true,\r\n                                _.filter(this.options, (item) =>\r\n                                    TqlUtilsService.toArray(this._input?.value).includes(item?.value),\r\n                                ),\r\n                            );\r\n                        }\r\n                    }),\r\n            );\r\n        }\r\n    }\r\n\r\n    get isRequired() {\r\n        if (_.isFunction(this._input!.validator)) {\r\n            return _.includes(_.keys(this._input!.validator('' as any)), ENUM_ERROR_TYPES.REQUIRED);\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * get error message\r\n     * @returns {any}\r\n     */\r\n    getErrorMessage(): string {\r\n        return _.get(ERROR_INFO, _.keys(this._input!.errors).shift() as string);\r\n    }\r\n\r\n    // getErrorMessage(): string {\r\n    //     // TODO support custom error message\r\n    //     return _.get(ERROR_INFO, _.keys(this.input!.errors).shift() as string);\r\n    // }\r\n\r\n    // openMenu(event: Event = null as any) {\r\n    //     // stop event default\r\n    //     if (event) {\r\n    //         event.stopPropagation();\r\n    //     }\r\n    //\r\n    //     // resize panel width to parent\r\n    //     if (document.getElementById(this.id)) {\r\n    //         const width = document.getElementById(this.id)!.offsetWidth;\r\n    //         const elems = document.getElementsByClassName('mat-menu-panel');\r\n    //         for (let i = 0; i < elems.length; i++) {\r\n    //             elems[i]['style'].width = width + 'px';\r\n    //         }\r\n    //     }\r\n    // }\r\n\r\n    // @HostListener('window:resize', ['$event'])\r\n    // onResize(event) {\r\n    //     this.openMenu();\r\n    // }\r\n\r\n    /**\r\n     * select item\r\n     * @param status\r\n     * @param items\r\n     * @param isFirst\r\n     */\r\n    select(status: boolean, items: TqlSelectComponent.SelectOption[], isFirst: boolean = false) {\r\n        // prevent loop\r\n        this.unsubscribeAll();\r\n\r\n        if (!this.multiple) {\r\n            // single select\r\n            for (const i of this.options) {\r\n                i.changeCheck(false);\r\n            }\r\n\r\n            if (!!items && items[0]) {\r\n                items[0].changeCheck(true);\r\n                this._input?.setValue(items[0].value);\r\n            } else {\r\n                this._input?.setValue('');\r\n            }\r\n\r\n            setTimeout(() => {\r\n                this.matMenuTrigger.closeMenu();\r\n            });\r\n        } else {\r\n            // multi select\r\n            if (items?.length) {\r\n                _.map(items, (x) => x.changeCheck(status));\r\n                this._input?.setValue(\r\n                    _.map(\r\n                        _.filter(this.options, (x) => x.isChecked),\r\n                        (x) => x.value,\r\n                    ),\r\n                );\r\n            } else {\r\n                this._input?.setValue([]);\r\n            }\r\n        }\r\n\r\n        if (\r\n            this._originalInputValue === null ||\r\n            this._originalInputValue?.toString() !== this._input?.value.toString()\r\n        ) {\r\n            // no original value or value change\r\n            this._input?.markAsDirty();\r\n        } else {\r\n            this._input?.markAsPristine();\r\n            this._originalInputValue = this._input?.value;\r\n        }\r\n\r\n        // window.dispatchEvent(new Event('resize'));\r\n        this.listenInputChange();\r\n    }\r\n\r\n    get value() {\r\n        return _.join(\r\n            _.map(\r\n                _.filter(this.options, (item) => item.isChecked),\r\n                'label',\r\n            ),\r\n            ', ',\r\n        );\r\n    }\r\n\r\n    onClosed($event: any) {\r\n        // console.log(this._input?.dirty);\r\n        if (this._input?.dirty) {\r\n            this.inputValueChanged.emit(this._input?.value);\r\n            this._input.markAsPristine();\r\n            this._originalInputValue = this._input?.value;\r\n        }\r\n    }\r\n\r\n    onOpened() {\r\n        this._input?.markAsTouched();\r\n    }\r\n\r\n    // @ContentChild(SelectItemTemplateDirective, {read: TemplateRef})\r\n    // itemTemplate: TemplateRef<any>;\r\n    // @ContentChild(EmptyTemplateDirective, {read: TemplateRef})\r\n    // emptyTemplate: TemplateRef<any>;\r\n\r\n    // @Input() items: any[] = [];\r\n    // // 'simpleArray': array simple ['a', 'b']\r\n    // // default: object station...\r\n    // @Input() type: string;\r\n    // @Input() color: string;\r\n    // @Input() default: string;\r\n    // @Input() titleOfAll: string;\r\n    // @Input() bindLabel: string = '';\r\n    // @Input() placeHolder: string = 'Select';\r\n    // @Input() bindValue: string = '';\r\n    // @Input() classes: string = '';\r\n    // @Input() noMappingLabel: boolean = false;\r\n    // @Input() multiple: boolean = false;\r\n    // @Input() multipleSelect: boolean = true;\r\n    // @Input() border: boolean = false;\r\n    // @Input() disabled: boolean = false;\r\n    // @Input() icon: string;\r\n    // @Output() clearSearch: any = new EventEmitter();\r\n    // @Output() change = new EventEmitter<any>();\r\n\r\n    // selected: any;\r\n    // internalItems: any[] = [];\r\n    // private _hasChanged: boolean;\r\n    // private _value: any;\r\n\r\n    // searchControl: FormControl = new FormControl('');\r\n\r\n    // // multiSelectInterval: any;\r\n\r\n    // constructor(\r\n    //     public _changeDetector: ChangeDetectorRef,\r\n    //     // private _MappingLabelPipe: MappingLabelPipe,\r\n    //     // public _LoadingBarService: LoadingBarService\r\n    //     ) {\r\n    //         super();\r\n    //     }\r\n\r\n    // ngOnInit() {\r\n    //     this.clearSearch.next(() => {\r\n    //         this.searchControl.setValue('');\r\n    //     });\r\n    // }\r\n\r\n    // writeValue(value: string | string[]): void {\r\n    //     this._value = value;\r\n    //     this._findSelectedItem(this._value);\r\n    //     this.updateInternalValue();\r\n    //     this._changeDetector.markForCheck();\r\n    // }\r\n\r\n    // ngOnChanges(changes: SimpleChanges) {\r\n    //     const {items} = changes;\r\n    //     if (!!items && !!items.currentValue) {\r\n    //         this.updateInternalValue();\r\n    //         if (this.default == 'first') {\r\n    //             this.selected = this.internalItems[0].label;\r\n    //         }\r\n    //     }\r\n    // }\r\n\r\n    // updateInternalValue() {\r\n    //     if (this.items) {\r\n    //         if (this.type === 'simpleArray') {\r\n    //             this.internalItems = this.items.map(item => ({\r\n    //                 label: item,\r\n    //                 value: item,\r\n    //                 checked: this.multiple ? false : undefined,\r\n    //                 isHidden: item.isHidden\r\n    //             }));\r\n    //         } else {\r\n    //             this.internalItems = this.items.map(item => {\r\n    //                 return {\r\n    //                     label: this.bindLabel ? this._parseItemProp(item, this.bindLabel) : item,\r\n    //                     value: this.bindValue ? this._parseItemProp(item, this.bindValue) : item,\r\n    //                     checked: this.multiple ? false : undefined,\r\n    //                     item: item,\r\n    //                     isHidden: item.isHidden\r\n    //                 };\r\n    //             });\r\n    //         }\r\n    //         this._findSelectedItem(this._value);\r\n    //     }\r\n    // }\r\n\r\n    // private _findSelectedItem(value: any) {\r\n    //     if (this.multiple) {\r\n    //         if (Array.isArray(value)) {\r\n    //             this.selected = value.reduce((values, v) => {\r\n    //                 const found = this.internalItems.find(i => i.value.toString().toLocaleLowerCase() === v.toString().toLocaleLowerCase());\r\n    //                 if (!!found) {\r\n    //                     values.push(found.label);\r\n    //                     found.checked = true;\r\n    //                 }\r\n    //                 return values;\r\n    //             }, []);\r\n    //         } else {\r\n    //             this.selected = null;\r\n    //         }\r\n    //     } else {\r\n    //         if (!!value && !!this.internalItems) {\r\n    //             const found = this.internalItems.find(\r\n    //                 i => i.value.toString().toLocaleLowerCase() === value.toString().toLocaleLowerCase()\r\n    //             );\r\n    //             if (!!found) {\r\n    //                 this.selected = found.label;\r\n    //             } else {\r\n    //                 this.selected = null;\r\n    //             }\r\n    //         } else {\r\n    //             this.selected = null;\r\n    //         }\r\n    //     }\r\n    // }\r\n\r\n    // registerOnChange(fn: any): void {\r\n    // }\r\n\r\n    // registerOnTouched(fn: any): void {\r\n    // }\r\n\r\n    // setDisabledState?(isDisabled: boolean): void {\r\n    // }\r\n\r\n    // onChange(item) {\r\n    //     this.selected = item.label;\r\n    //     this.change.emit(item);\r\n    // }\r\n\r\n    // onItemCheck($event, item) {\r\n    //     $event.stopPropagation();\r\n    //     item.checked = !item.checked;\r\n    //     this.emitWhenSelect();\r\n    // }\r\n\r\n    // emitWhenSelect() {\r\n    //     const selectedItems = this.internalItems.filter(i => i.checked);\r\n    //     this.selected = selectedItems.map(s => s.label);\r\n    //     this._hasChanged = true;\r\n\r\n    //     // clearTimeout(this.multiSelectInterval);\r\n    //     // this.multiSelectInterval = setTimeout(() => {\r\n    //     //   this.change.emit(selectedItems.map(s => s.value));\r\n    //     // }, 500);\r\n    // }\r\n\r\n    // stopPropagation(event) {\r\n    //     event.stopPropagation();\r\n    // }\r\n\r\n    // get selectedLabel(): string | null {\r\n    //     return this._parseItemProp(this.selected, this.bindLabel);\r\n    // }\r\n\r\n    // private _parseItemProp(item: any, prop: string): string | null {\r\n    //     if (prop.includes('_data')) {\r\n    //         prop = prop.toLowerCase();\r\n    //     }\r\n    //     const props = prop.split('.');\r\n    //     if (item) {\r\n    //         const result = props.reduce((label, prop) => {\r\n    //             if (typeof label[prop] != undefined) {\r\n    //                 label = label[prop];\r\n    //             }\r\n    //             return label;\r\n    //         }, item);\r\n    //         return result;\r\n    //     }\r\n    //     return null;\r\n    // }\r\n\r\n    // selectAll($event: MouseEvent) {\r\n    //     if ($event) {\r\n    //         $event.stopPropagation();\r\n    //     }\r\n    //     this.internalItems.map(i => (i.checked = true));\r\n    //     this.searchControl.setValue('');\r\n    //     this.emitWhenSelect();\r\n    // }\r\n\r\n    // clearAll($event: MouseEvent) {\r\n    //     if ($event) {\r\n    //         $event.stopPropagation();\r\n    //     }\r\n    //     this.searchControl.setValue('');\r\n    // }\r\n\r\n    // unSelectAll($event: MouseEvent) {\r\n    //     if ($event) {\r\n    //         $event.stopPropagation();\r\n    //     }\r\n    //     this.internalItems.map(i => (i.checked = false));\r\n    //     this.emitWhenSelect();\r\n    // }\r\n\r\n    // onClose($event: void | 'click' | 'keydown' | 'tab') {\r\n    //     // console.log($event);\r\n    //     if (this.multiple && this._hasChanged) {\r\n    //         const selectedItems = this.internalItems.filter(i => i.checked);\r\n    //         this.change.emit(selectedItems.map(s => s.value));\r\n    //     }\r\n    // }\r\n\r\n    // menuOpened() {\r\n    //     this._hasChanged = false;\r\n    //     // console.log('open');\r\n    // }\r\n\r\n    // generatePlaceholder() {\r\n    //     if (!!this.selected && this.selected.length > 0) {\r\n    //         if (this.selected.length === this.internalItems.length) {\r\n    //             return !!this.titleOfAll ? `All of ${this.titleOfAll}` : 'All';\r\n    //         } else {\r\n    //             return this.selected.join(', ');\r\n    //         }\r\n    //     }\r\n    //     return this.placeHolder;\r\n    // }\r\n}\r\n\r\nexport namespace TqlSelectComponent {\r\n    export class SelectOption implements IListItem {\r\n        value: any;\r\n        label: string;\r\n        isChecked: boolean;\r\n        data: any;\r\n        disabled: boolean;\r\n\r\n        constructor(label: string, value: any, isChecked: boolean = false, disabled = false, data?: any) {\r\n            this.value = value;\r\n            this.label = label;\r\n            this.isChecked = isChecked;\r\n            this.data = data;\r\n            this.disabled = disabled;\r\n        }\r\n\r\n        changeCheck(status: boolean) {\r\n            this.isChecked = status;\r\n        }\r\n    }\r\n}\r\n\r\nfunction EmptyTemplateDirective(EmptyTemplateDirective: any, arg1: { read: typeof TemplateRef }) {\r\n    throw new Error('Function not implemented.');\r\n}\r\n\r\nfunction SelectItemTemplateDirective(SelectItemTemplateDirective: any, arg1: { read: typeof TemplateRef }) {\r\n    throw new Error('Function not implemented.');\r\n}\r\n","<div class=\"select-box-container w-100\"\r\n     matTooltip=\"No Data\"\r\n     [matTooltipDisabled]=\"options?.length > 0\"\r\n>\r\n    <div\r\n        class=\"w-100 select-box pl-10px pr-10px align-items-center d-flex cursor-pointer {{className}}\"\r\n        [class.disabled-half]=\"disabled || !options?.length\"\r\n        [class.error]=\"_input?.invalid && _input?.touched\"\r\n        [matMenuTriggerFor]=\"menu\"\r\n        (menuOpened)=\"onOpened()\"\r\n    >\r\n        <div *ngIf=\"!!icon\" class=\"input-icon mr-10px d-flex align-items-center\">\r\n            <i [class]=\"icon\"></i>\r\n            <div class=\"line ml-10px\"></div>\r\n        </div>\r\n        <div\r\n            class=\"d-flex flex-shrink-1 flex-grow-1 flex-gap-3 justify-content-between align-items-center overflow-hidden\">\r\n            <div class=\" color-soft-blue text-truncate\" *ngIf=\"value; else placeholderTemplate\"\r\n                 [title]=\"value\"\r\n                 [innerHTML]=\"value\"></div>\r\n            <i class=\"fas fa-caret-down color-soft-blue\"></i>\r\n        </div>\r\n    </div>\r\n    <mat-menu #menu=\"matMenu\" backdropClass=\"select-box-panel\" class=\"tql-select-menu-wrapper\"\r\n              (closed)=\"onClosed($event)\">\r\n        <button mat-menu-item *ngFor=\"let item of options\"\r\n                [disabled]=\"disabled || item?.disabled\"\r\n                [class.disabled-half]=\"disabled || item?.disabled\"\r\n                (click)=\"$event.stopPropagation();select(!item.isChecked, [item])\">\r\n            <div class=\"d-flex\">\r\n                <div class=\"color-soft-blue text-truncate\"\r\n                     [title]=\"item.label\"\r\n                     [innerHTML]=\"item.label\"></div>\r\n                <div class=\"flex-grow-1\"></div>\r\n                <div *ngIf=\"item?.isChecked\">\r\n                    <i class=\"fal fa-check font-size-16px color-white ml-3\"></i>\r\n                </div>\r\n            </div>\r\n        </button>\r\n    </mat-menu>\r\n    <ng-template #placeholderTemplate>\r\n        <span class=\" text-placeholder font-italic\">{{ placeholder }}</span>\r\n    </ng-template>\r\n    <ng-container *ngIf=\"_input && _input?.invalid && _input?.touched\">\r\n        <div class=\"font-size-12px mt-1 text-left text-error\">{{ getErrorMessage() }}</div>\r\n    </ng-container>\r\n</div>\r\n\r\n\r\n<!-- <div class=\"select-box d-flex justify-content-between align-items-center\" [ngClass]=\"classes\"\r\n     *ngIf=\"!icon\"\r\n     [matMenuTriggerFor]=\"menu\"\r\n     (menuOpened)=\"menuOpened()\"\r\n     [class.placeholder]=\"!selected || !selected.length\" [class.theme-blue]=\"color == 'blue'\"\r\n     [class.border-box]=\"border\">\r\n  <span class=\"selected-text\">\r\n    <ng-container *ngIf=\"!multiple\">{{ selected ? selected : placeHolder }}</ng-container>\r\n    <ng-container\r\n        *ngIf=\"multiple\">{{generatePlaceholder()}}</ng-container>\r\n  </span>\r\n    <i class=\"fa fa-chevron-down ml-3 icon mr-n2\"></i>\r\n</div>\r\n<ng-container *ngIf=\"icon\">\r\n    <button class=\"\" mat-icon-button [matMenuTriggerFor]=\"menu\"\r\n            (menuOpened)=\"menuOpened()\">\r\n        <i class=\"{{icon}}\"></i>\r\n    </button>\r\n</ng-container>\r\n<mat-menu #menu=\"matMenu\" class=\"select-box-menu mat-elevation-z2\" (closed)=\"onClose($event)\">\r\n    <ng-template [ngTemplateOutlet]=\"itemList\"></ng-template>\r\n</mat-menu>\r\n\r\n<ng-template #itemList>\r\n    <ng-container *ngIf=\"internalItems?.length >= 5\">\r\n        <div (click)=\"stopPropagation($event)\" class=\"input-search\" [class.disabled-half]=\"disabled\">\r\n            <input autofocus type=\"text\" [formControl]=\"searchControl\" (click)=\"stopPropagation($event)\"\r\n                   placeholder=\"Type to search\"/>\r\n        </div>\r\n        <div class=\"actions-group d-flex\" *ngIf=\"multiple && multipleSelect && internalItems.length > 1\"\r\n             [class.disabled-half]=\"disabled\">\r\n            <div class=\"action\" (click)=\"selectAll($event)\">\r\n                Select all\r\n            </div>\r\n            <div class=\"mx-1\">|</div>\r\n            <div class=\"action\" (click)=\"unSelectAll($event)\">\r\n                UnSelect all\r\n            </div>\r\n            <div class=\"flex-grow-1\"></div>\r\n            <div class=\"action\" (click)=\"clearAll($event)\" [class.disabled-half]=\"searchControl.value.length === 0\">\r\n                Clear\r\n            </div>\r\n        </div>\r\n        <div class=\"divider\"></div>\r\n    </ng-container>\r\n    <div class=\"item-list\" [class.disabled-half]=\"disabled\">\r\n        <ng-container *ngFor=\"let item of internalItems | searchBy: searchControl.value:'label'\">\r\n            <ng-template\r\n                [ngTemplateOutlet]=\"multiple ? defaultMultipleSelectTemplate : itemTemplate || defaultItemTemplate\"\r\n                [ngTemplateOutletContext]=\"{ item: item }\">\r\n            </ng-template>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"internalItems?.length == 0\">\r\n            <ng-template [ngTemplateOutlet]=\"emptyTemplate || defaultEmptyTemplate\"></ng-template>\r\n        </ng-container>\r\n        <ng-container\r\n            *ngIf=\"internalItems?.length != 0 && (internalItems | searchBy: searchControl.value:'label')?.length == 0\">\r\n            <ng-template [ngTemplateOutlet]=\"emptyTemplate || noSearchResultTemplate\"></ng-template>\r\n        </ng-container>\r\n    </div>\r\n</ng-template>\r\n<ng-template #defaultItemTemplate let-item=\"item\">\r\n    <div class=\"d-flex align-items-center pl-0 pr-10\" [class.d-none]=\"item?.isHidden\" mat-menu-item>\r\n        <button class=\"item bg-transparent\" (click)=\"onChange(item)\" mat-menu-item>\r\n            <span class=\"text\"\r\n                  title=\"{{ item.label }}\">{{ noMappingLabel ? item.label : (item.label | mappingLabel) }}</span>\r\n        </button>\r\n        <span class=\"item-check\" [class.disable]>\r\n      <i *ngIf=\"item.label == selected\" class=\"fal fa-check\"></i>\r\n    </span>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultMultipleSelectTemplate let-item=\"item\">\r\n    <button mat-menu-item class=\"item d-flex justify-content-between\" (click)=\"onItemCheck($event, item)\">\r\n        <span class=\"text\"\r\n              title=\"{{ item.label }}\">{{ noMappingLabel ? item.label : (item.label | mappingLabel) }}</span>\r\n        <span class=\"item-check\">\r\n      <i *ngIf=\"item.checked\" class=\"fal fa-check\"></i>\r\n    </span>\r\n    </button>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyTemplate let-item=\"item\">\r\n    <button mat-menu-item class=\"disabled\">No Item Available</button>\r\n</ng-template>\r\n\r\n<ng-template #noSearchResultTemplate let-item=\"item\">\r\n    <button mat-menu-item class=\"disabled\">No result for '{{searchControl.value}}'</button>\r\n</ng-template> -->\r\n","import {Component, Injectable} from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {ENUM_ROUTER_KEYS, IRouterData} from '../../constants/interface';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TqlHeaderControllerService  {\r\n    _Observable_Current_Header_Component: BehaviorSubject<Component | null> = new BehaviorSubject<Component | null>(null);\r\n\r\n    constructor() {\r\n    }\r\n\r\n    resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot): Observable<any> {\r\n\r\n        const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\r\n\r\n        // check data\r\n        const componentKey = ENUM_ROUTER_KEYS.HEADER_COMPONENT;\r\n        if (!data[componentKey]) {\r\n            console.error(`[${this.constructor.name}] missing ${componentKey}`);\r\n            return of(false);\r\n        }\r\n\r\n        // check component, if different, trigger next\r\n        if (this._Observable_Current_Header_Component.getValue() !== data[componentKey]) {\r\n            this._Observable_Current_Header_Component.next(data[componentKey] as Component);\r\n        }\r\n\r\n        return of(new Date());\r\n    }\r\n}\r\n","import { Component, Injectable, TemplateRef } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { ENUM_ROUTER_KEYS, IListItem, IRouterData } from '../../constants/interface';\r\nimport { delay, map, take } from 'rxjs/operators';\r\n\r\nexport class NavbarPreview {\r\n    id?: string;\r\n    template: TemplateRef<any>;\r\n    element: Element;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class TqlNavbarControllerService  {\r\n    _Observable_Current_Nav_Component: BehaviorSubject<Component | null> = new BehaviorSubject<Component | null>(null);\r\n    _Observable_Current_Sub_Menu_Navbar: BehaviorSubject<IListItem[] | null> = new BehaviorSubject<IListItem[] | null>(\r\n        null,\r\n    );\r\n    _Observable_Current_Preview_Item: BehaviorSubject<NavbarPreview | null> = new BehaviorSubject<NavbarPreview | null>(\r\n        null,\r\n    );\r\n\r\n    constructor() {}\r\n\r\n    /**\r\n     *\r\n     * @param __ActivatedRouteSnapshot\r\n     * @returns {Observable<boolean> | Observable<Date>}\r\n     */\r\n    resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot): Observable<any> {\r\n        const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\r\n        // console.log('navbar', data);\r\n        // check data\r\n        const componentKey = ENUM_ROUTER_KEYS.NAV_COMPONENT;\r\n        const subMenuNavbar = ENUM_ROUTER_KEYS.SUB_MENU_NAVBAR;\r\n\r\n        // TODO: Harry - Hard code for UM\r\n        if (!!data[subMenuNavbar] && this._Observable_Current_Sub_Menu_Navbar.getValue() !== data[subMenuNavbar]) {\r\n            this._Observable_Current_Sub_Menu_Navbar.next(data[subMenuNavbar] as IListItem[]);\r\n        }\r\n\r\n        if (!data[componentKey]) {\r\n            console.error(`[${this.constructor.name}] missing ${componentKey}`);\r\n            return of(false);\r\n        }\r\n\r\n        if (this._Observable_Current_Nav_Component.getValue() !== data[componentKey]) {\r\n            this._Observable_Current_Nav_Component.next(data[componentKey] as Component);\r\n        }\r\n\r\n        return this._Observable_Current_Nav_Component.pipe(\r\n            take(1),\r\n            map((old) => {\r\n                // console.log(old);\r\n                // check component, if different, trigger next\r\n\r\n                if (old !== data[componentKey]) {\r\n                    this._Observable_Current_Nav_Component.next(data[componentKey] as Component);\r\n                }\r\n            }),\r\n        );\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class TqlCollapseControllerService {\n    toggleByName$: BehaviorSubject<{ name: string; status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS }> =\n        new BehaviorSubject<{\n            name: string;\n            status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS;\n        }>({\n            name: '',\n            status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE,\n        });\n\n    constructor() {}\n\n    collapseByName(name: string = '') {\n        this.toggleByName$.next({\n            name: name,\n            status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE,\n        });\n    }\n\n    expandByName(name: string = '') {\n        this.toggleByName$.next({\n            name: name,\n            status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.EXPAND,\n        });\n    }\n}\n\nexport namespace TqlCollapseControllerService {\n    export enum ENUM_COLLAPSE_STATUS {\n        COLLAPSE,\n        EXPAND,\n    }\n}\n","import {Component, Injectable} from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {ENUM_ROUTER_KEYS, IRouterData} from '../../constants/interface';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TqlDynamicControllerService  {\r\n\r\n    _Observable_Current_Dynamic_Components: BehaviorSubject<Map<string, Component> | null> = new BehaviorSubject<Map<string, Component> | null>(new Map());\r\n\r\n    constructor() {\r\n    }\r\n\r\n    resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot, __RouterStateSnapshot: RouterStateSnapshot,\r\n            inputData?: Map<string, Component>): Observable<any> {\r\n\r\n        if (!inputData) {\r\n            const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\r\n\r\n            // check data\r\n            const componentKey = ENUM_ROUTER_KEYS.DYNAMIC_COMPONENTS;\r\n            if (!data[componentKey]) {\r\n                console.error(`[${this.constructor.name}] missing ${componentKey}`);\r\n                return of(false);\r\n            }\r\n            inputData = data[componentKey];\r\n        }\r\n\r\n\r\n        // check component, if different, trigger next\r\n        if (this._Observable_Current_Dynamic_Components.getValue() !== inputData) {\r\n            this._Observable_Current_Dynamic_Components.next(inputData as Map<string, Component>);\r\n        }\r\n\r\n        return of(new Date());\r\n    }\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { DefaultComponent } from 'tql-service';\nimport { IDynamicComponent } from '../../../constants';\nimport { TqlCollapseControllerService } from '../../../controllers';\n\n@Component({\n    selector: 'tql-collapse',\n    templateUrl: './tql-collapse.component.html',\n    styleUrls: ['./tql-collapse.component.scss'],\n})\nexport class TqlCollapseComponent extends DefaultComponent implements OnInit, IDynamicComponent {\n    @Input() name: string;\n    @Input() label: string;\n    @Input() labelClassName: string;\n    @Input() hasLine: boolean = true;\n    @Input() hideIconWhenCollapsed: boolean = false;\n    @Input() hideIcon: boolean = false;\n    @Input() isCollapse: any = false;\n    @Input() offset = 50;\n    @Input() direction: string | TqlCollapseComponent.ENUM_DIRECTION = TqlCollapseComponent.ENUM_DIRECTION.RIGHT;\n    @Output() event = new EventEmitter();\n\n    readonly directions: typeof TqlCollapseComponent.ENUM_DIRECTION = TqlCollapseComponent.ENUM_DIRECTION;\n\n    @HostBinding('class.tql-collapse-wrapper') get initializeClass() {\n        return true;\n    }\n\n    data: any;\n\n    constructor(private _TqlCollapseControllerService: TqlCollapseControllerService) {\n        super();\n        this.addSubscribes(\n            this._TqlCollapseControllerService.toggleByName$.subscribe((rs) => {\n                if (rs?.name === this.name) {\n                    this.toggleCollapse(rs?.status === TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE);\n                }\n            }),\n        );\n    }\n\n    ngOnInit(): void {}\n\n    onDataChange() {}\n\n    /**\n     * toggle collapse\n     */\n    toggleCollapse(isCollapsed: any = !this.isCollapse) {\n        this.isCollapse = isCollapsed;\n        this.event.emit(this.isCollapse);\n    }\n\n    generateOffset() {\n        let style = '';\n        switch (this.direction) {\n            case this.directions.LEFT:\n            case this.directions.RIGHT:\n                if (this.offset > 0) {\n                    style = `top:${this.offset}px`;\n                } else {\n                    style = `bottom:${-this.offset}px`;\n                }\n                break;\n            case this.directions.TOP:\n            case this.directions.BOTTOM:\n                if (this.offset > 0) {\n                    style = `right:${this.offset}px`;\n                } else {\n                    style = `left:${-this.offset}px`;\n                }\n\n                break;\n        }\n        return style;\n    }\n}\n\nexport namespace TqlCollapseComponent {\n    export enum ENUM_DIRECTION {\n        TOP = 'top',\n        BOTTOM = 'bottom',\n        RIGHT = 'right',\n        LEFT = 'left',\n    }\n}\n","<div class=\"d-flex collapse-icon align-items-center flex-gap-2 cursor-pointer\" matRipple\r\n     (click)=\"toggleCollapse();$event.stopPropagation();\"\r\n     *ngIf=\"!hideIcon\"\r\n     [class.hide-on-collapsed]=\"hideIconWhenCollapsed\"\r\n     [style]=\"generateOffset()\"\r\n     [class.px-2]=\"label\">\r\n    <div class=\"d-flex align-items-center justify-content-center\">\r\n        <ng-container [ngSwitch]=\"direction\">\r\n            <i *ngSwitchCase=\"directions.RIGHT\"\r\n               class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-right' : 'fa-angle-left' }}\"></i>\r\n            <i *ngSwitchCase=\"directions.LEFT\"\r\n               class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-left' : 'fa-angle-right' }}\"></i>\r\n            <i *ngSwitchCase=\"directions.TOP\"\r\n               class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-up' : 'fa-angle-down' }}\"></i>\r\n            <i *ngSwitchCase=\"directions.BOTTOM\"\r\n               class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-down' : 'fa-angle-up' }}\"></i>\r\n        </ng-container>\r\n    </div>\r\n    <div class=\"{{labelClassName}}\" *ngIf=\"label\">{{label}}</div>\r\n</div>\r\n<div class=\"line\" *ngIf=\"hasLine\"></div>\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {THEME_KEYS_ENUM, ThemeControllerService} from 'tql-theme';\r\n\r\n@Component({\r\n    selector: 'tql-loading-bar',\r\n    templateUrl: './tql-loading-bar.component.html',\r\n    styleUrls: ['./tql-loading-bar.component.scss']\r\n})\r\nexport class TqlLoadingBarComponent implements OnInit {\r\n    @Input() color: string;\r\n    @Input() hasSpinner: boolean = false;\r\n    @Input() isFixed: boolean = true;\r\n\r\n    constructor(private _ThemeControllerService: ThemeControllerService) {\r\n        this._ThemeControllerService._Observable_theme.subscribe(() => {\r\n            this.color = this._ThemeControllerService.getColorOf(THEME_KEYS_ENUM.LOADING_BAR);\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n}\r\n","<ngx-loading-bar [includeSpinner]=\"hasSpinner\" [color]=\"color\" height=\"3px\" [fixed]=\"isFixed\"></ngx-loading-bar>\r\n\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChildren,\r\n    EventEmitter,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    ViewChild,\r\n} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { MatTab, MatTabGroup } from '@angular/material/tabs';\r\n\r\n@Component({\r\n    selector: 'tql-tab',\r\n    templateUrl: './tql-tab.component.html',\r\n    styleUrls: ['./tql-tab.component.scss'],\r\n})\r\nexport class TqlTabComponent implements OnInit, AfterViewInit {\r\n    @ViewChild(MatTabGroup, { static: true }) tabGroup: MatTabGroup;\r\n    @ContentChildren(MatTab) tabContent: QueryList<MatTab>;\r\n    @Output() selectedTabChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n    constructor(private _ChangeDetectorRef: ChangeDetectorRef) {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    ngAfterViewInit() {\r\n        this.tabGroup._tabs = _.cloneDeep(this.tabContent);\r\n        this._ChangeDetectorRef.detectChanges();\r\n    }\r\n}\r\n","<mat-tab-group class=\"tql-tab\" (selectedIndexChange)=\"selectedTabChange.emit($event)\">\r\n    <ng-content></ng-content>\r\n</mat-tab-group>\r\n","import { Component, ElementRef, HostBinding, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'tql-resizable',\r\n    templateUrl: './tql-resizable.component.html',\r\n    styleUrls: ['./tql-resizable.component.scss'],\r\n})\r\nexport class TqlResizableComponent implements OnInit {\r\n    @Input() parentElement: ElementRef;\r\n    private _directions: (string | TqlResizableComponent.ENUM_DIRECTIONS)[];\r\n    @Input()\r\n    set directions(v: (string | TqlResizableComponent.ENUM_DIRECTIONS)[]) {\r\n        this._directions = v;\r\n    }\r\n\r\n    get directions() {\r\n        return this._directions;\r\n    }\r\n\r\n    @HostBinding('class.resizable-group') get initializeClass() {\r\n        return true;\r\n    }\r\n\r\n    @HostListener('window:mousemove', ['$event']) resize($event) {\r\n        if (this.direction) {\r\n            this.onResize($event);\r\n            $event.preventDefault();\r\n        }\r\n    }\r\n\r\n    @HostListener('window:mouseup', ['$event']) stopResize($event) {\r\n        if (this.direction) {\r\n            this.onResizeEnd($event);\r\n            $event.preventDefault();\r\n        }\r\n    }\r\n\r\n    private direction: TqlResizableComponent.ENUM_DIRECTIONS | null;\r\n    private start: number;\r\n    private width: number;\r\n    private height: number;\r\n\r\n    constructor(private renderer: Renderer2) {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    onResizeStart($event: MouseEvent, direction: TqlResizableComponent.ENUM_DIRECTIONS) {\r\n        this.direction = direction;\r\n        this.start = this.isHorizontalResize(this.direction) ? this.getClientX($event) : this.getClientY($event);\r\n        this.width = this.parentElement.nativeElement.clientWidth;\r\n        this.height = this.parentElement.nativeElement.clientHeight;\r\n        if ($event.stopPropagation) {\r\n            $event.stopPropagation();\r\n        }\r\n        if ($event.preventDefault) {\r\n            $event.preventDefault();\r\n        }\r\n        $event.cancelBubble = true;\r\n        $event.returnValue = false;\r\n\r\n        // stop transition\r\n        this.renderer.addClass(this.parentElement.nativeElement, 'resizing');\r\n    }\r\n\r\n    private onResizeEnd($event: MouseEvent) {\r\n        // console.log('onResizeEnd');\r\n        if (this.direction) {\r\n            this.direction = null;\r\n            this.start = 0;\r\n        }\r\n        this.renderer.removeClass(this.parentElement.nativeElement, 'resizing');\r\n        this.direction = null;\r\n    }\r\n\r\n    private onResize($event: MouseEvent) {\r\n        // console.log('onResize');\r\n        if (this.direction) {\r\n            const offset = this.isHorizontalResize(this.direction)\r\n                ? this.start - this.getClientX($event)\r\n                : this.start - this.getClientY($event);\r\n            switch (this.direction) {\r\n                case TqlResizableComponent.ENUM_DIRECTIONS.TOP:\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'min-height', this.height + offset + 'px');\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'max-height', this.height + offset + 'px');\r\n                    break;\r\n                case TqlResizableComponent.ENUM_DIRECTIONS.BOTTOM:\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'min-height', this.height - offset + 'px');\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'max-height', this.height - offset + 'px');\r\n                    break;\r\n                case TqlResizableComponent.ENUM_DIRECTIONS.LEFT:\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'min-width', this.width + offset + 'px');\r\n                    // this.renderer.setStyle(this.parentElement.nativeElement, 'width', this.width + offset + 'px');\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'max-width', this.width + offset + 'px');\r\n                    break;\r\n                case TqlResizableComponent.ENUM_DIRECTIONS.RIGHT:\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'min-width', this.width - offset + 'px');\r\n                    // this.renderer.setStyle(this.parentElement.nativeElement, 'width', this.width - offset + 'px');\r\n                    this.renderer.setStyle(this.parentElement.nativeElement, 'max-width', this.width - offset + 'px');\r\n                    break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private isHorizontalResize(direction: String) {\r\n        return direction === 'left' || direction === 'right';\r\n    }\r\n\r\n    private getClientX($event: MouseEvent | TouchEvent) {\r\n        if ($event instanceof TouchEvent) {\r\n            return (<TouchEvent>$event).touches[0].clientX;\r\n        } else {\r\n            return (<MouseEvent>$event).clientX;\r\n        }\r\n    }\r\n\r\n    private getClientY($event: MouseEvent | TouchEvent) {\r\n        if ($event instanceof TouchEvent) {\r\n            return (<TouchEvent>$event).touches[0].clientY;\r\n        } else {\r\n            return (<MouseEvent>$event).clientY;\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace TqlResizableComponent {\r\n    export enum ENUM_DIRECTIONS {\r\n        NONE = 'none',\r\n        TOP = 'top',\r\n        BOTTOM = 'bottom',\r\n        LEFT = 'left',\r\n        RIGHT = 'right',\r\n    }\r\n}\r\n","<div *ngFor=\"let dir of directions\" class=\"resizable-bar {{dir}}\">\n    <div class=\"resizable-line\" (mousedown)=\"onResizeStart($event,dir)\"></div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'tql-spinner',\r\n    templateUrl: './tql-spinner.component.html',\r\n    styleUrls: ['./tql-spinner.component.scss'],\r\n})\r\nexport class TqlSpinnerComponent implements OnInit {\r\n    @Input() color: string;\r\n    @Input() diameter: string | number = 10;\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit(): void {}\r\n}\r\n","<div class=\"tql-spinner\" [class.tql-spinner-customClr]=\"color\" style=\"--clr:{{color}}\">\r\n    <mat-spinner [diameter]=\"diameter\"></mat-spinner>\r\n</div>\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IDynamicComponent } from '../../../constants';\r\nimport _ from 'lodash';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DefaultComponent, TqlTableControllerService } from 'tql-service';\r\n\r\n@Component({\r\n    selector: 'lib-tql-table-filter-widget',\r\n    templateUrl: './tql-table-filter-widget.component.html',\r\n    styleUrls: ['./tql-table-filter-widget.component.scss'],\r\n})\r\nexport class TqlTableFilterWidgetComponent\r\n    extends DefaultComponent\r\n    implements OnInit, AfterViewInit, IDynamicComponent\r\n{\r\n    @Output() event = new EventEmitter<TqlTableFilterWidgetComponent.IFilter>();\r\n    @Input() hasSort: boolean = true;\r\n    @Input() filterKey: string;\r\n    @Input() iconClassName: string = 'fa-light fa-ellipsis font-size-16px';\r\n    @Input() emptyLabel: string = '';\r\n\r\n    /**\r\n     * list of data\r\n     * @type {{label: any, value: any}[]}\r\n     * @private\r\n     */\r\n    private _list: { label: any; value: any[] }[] = [];\r\n    @Input()\r\n    set list(v: { label: any; value: any[] }[]) {\r\n        this._list = v;\r\n        this.displayedList = [...this.list];\r\n    }\r\n\r\n    get list(): { label: any; value: any[] }[] {\r\n        return this._list;\r\n    }\r\n\r\n    sort: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n    sortDirections: typeof TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION =\r\n        TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION;\r\n    displayedList: { label: any; value: any[] }[] = [];\r\n    selectedList: { label: any; value: any[] }[] = [];\r\n    searchFC: FormControl = new FormControl('');\r\n\r\n    isOpened: boolean = false;\r\n\r\n    filter: TqlTableFilterWidgetComponent.IFilter = {};\r\n\r\n    constructor(private _TqlTableControllerService: TqlTableControllerService) {\r\n        super();\r\n    }\r\n\r\n    ngOnInit(): void {}\r\n\r\n    ngAfterViewInit() {}\r\n\r\n    onDataChange() {\r\n        setTimeout(() => {\r\n            if (this.filter['_id']) {\r\n                this.unsubscribeAll();\r\n                this.addSubscribes(\r\n                    this._TqlTableControllerService.getFilter(this.filter['_id'])?.onUpdateUI$?.subscribe((x) => {\r\n                        // console.log(x);\r\n                        // console.log(this.filter);\r\n                        this.reset();\r\n                        const filter: TqlTableFilterWidgetComponent.IFilter = this.filter[this.filterKey];\r\n                        if (!!filter) {\r\n                            // console.log(filter);\r\n                            this.selectedList = this.displayedList.filter(\r\n                                (x) => !!(filter.data || [])?.find((y) => y.value.toString() === x.value.toString()),\r\n                            );\r\n                            // this.selectedList = [...(filter.data || [])];\r\n                            // console.log(this.displayedList);\r\n                            // console.log(this.selectedList);\r\n                            // if (!!filter.sort && filter.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\r\n                            //     this.toggleSort(filter.sort);\r\n                            // }\r\n                            this.toggleSort(filter.sort as TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION);\r\n                            // this.onChanged();\r\n                        }\r\n                    }),\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    reset() {\r\n        //reset\r\n        this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n        this.selectedList = [...this.list];\r\n        this.displayedList = [...this.list];\r\n        this.emptyLabel = '';\r\n    }\r\n\r\n    checkFilter() {\r\n        this.reset();\r\n        const filter: TqlTableFilterWidgetComponent.IFilter = this.filter[this.filterKey];\r\n        if (!!filter) {\r\n            if (!!filter.sort && filter.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\r\n                this.toggleSort(filter.sort);\r\n            }\r\n        }\r\n    }\r\n\r\n    toggleSort(direction: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION, isCallEvent: boolean = true) {\r\n        if (this.sort === direction) {\r\n            this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n        } else {\r\n            this.sort = direction;\r\n        }\r\n        if (isCallEvent) {\r\n            this.onChanged({ sort: true });\r\n        }\r\n    }\r\n\r\n    toggleFilter(items: any[], isCallEvent: boolean = true) {\r\n        _.forEach(items, (item) => {\r\n            if (this.isFilterSelected(item)) {\r\n                _.remove(this.selectedList, (x) => this.isFilterSelected(item, [x]));\r\n            } else {\r\n                this.selectedList.push(item);\r\n            }\r\n        });\r\n        if (isCallEvent) {\r\n            this.onChanged({ select: true });\r\n        }\r\n    }\r\n\r\n    selectAll($event: MouseEvent) {\r\n        this.selectedList = [...this.list];\r\n        this.onChanged({ select: true });\r\n    }\r\n\r\n    unSelectAll($event: MouseEvent) {\r\n        this.selectedList = [];\r\n        this.onChanged({ select: true });\r\n    }\r\n\r\n    hasFilter() {\r\n        return (\r\n            this.filterKey &&\r\n            (this.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD ||\r\n                this.selectedList?.length !== this.list?.length)\r\n        );\r\n    }\r\n\r\n    clearSearch() {\r\n        this.searchFC.setValue('');\r\n    }\r\n\r\n    onChanged(filter: any = { sort: false }) {\r\n        this.event.emit({\r\n            key: this.filterKey,\r\n            sort: this.sort,\r\n            data: [...this.selectedList],\r\n            filteredKeys: [...this.sortDisplayedList()],\r\n            control: {\r\n                resetSort: () => {\r\n                    this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n                },\r\n            },\r\n            _filter: filter,\r\n        });\r\n    }\r\n\r\n    isFilterSelected(item: { label: any; value: any[] }, list: { label: any; value: any[] }[] = this.selectedList) {\r\n        return !!_.find(list, (x) => x.value === item.value);\r\n    }\r\n\r\n    onSearchChanged($event: any) {\r\n        // console.log($event);\r\n        if ($event) {\r\n            this.displayedList = _.filter(this.list, (x) =>\r\n                _.toString(x.label).toLowerCase().includes(_.toString($event).toLowerCase()),\r\n            ) as {\r\n                label: any;\r\n                value: any[];\r\n            }[];\r\n            // console.log(this.displayedList);\r\n        } else {\r\n            this.displayedList = [...this.list];\r\n        }\r\n    }\r\n\r\n    sortDisplayedList() {\r\n        return _.orderBy(this.displayedList, (x) => x.label);\r\n    }\r\n\r\n    onOpened() {\r\n        this.isOpened = true;\r\n        console.log('open');\r\n    }\r\n\r\n    onClosed() {\r\n        this.isOpened = false;\r\n        console.log('close');\r\n    }\r\n}\r\n\r\nexport namespace TqlTableFilterWidgetComponent {\r\n    export enum ENUM_SORT_DIRECTION {\r\n        ASC = 'asc',\r\n        DES = 'desc',\r\n        RD = 'random',\r\n    }\r\n\r\n    export interface IFilter {\r\n        _id?: string;\r\n        key?: string;\r\n        sort?: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION;\r\n        data?: any[];\r\n        _filter?: any;\r\n        control?: any;\r\n        filteredKeys?: any[];\r\n    }\r\n}\r\n","<button mat-icon-button class=\"small icon\" [matMenuTriggerFor]=\"filterMenu\" [class.showed]=\"hasFilter() || isOpened\"\r\n        (menuOpened)=\"onOpened()\"\r\n        (menuClosed)=\"onClosed()\">\r\n    <i class=\"fa-light fa-filter font-size-12px filtered\" *ngIf=\"hasFilter()\" matTooltip=\"filtered\"></i>\r\n    <i class=\"{{iconClassName}} \" *ngIf=\"!hasFilter()\"></i>\r\n</button>\r\n<mat-menu #filterMenu=\"matMenu\" backdropClass=\"table-filter-menu-wrapper\">\r\n    <div class=\"d-flex flex-column overflow-hidden h-100\" (click)=\"$event.stopPropagation();\">\r\n        <div class=\"d-flex flex-column sort-group\" *ngIf=\"hasSort\">\r\n            <div class=\"px-3 py-2 cursor-pointer\" matRipple\r\n                 [class.selected]=\"sortDirections.ASC === sort\"\r\n                 (click)=\"toggleSort(sortDirections.ASC)\">Sort <span class=\"font-weight-bold\">A - Z</span></div>\r\n            <div class=\"px-3 py-2 cursor-pointer\" matRipple\r\n                 [class.selected]=\"sortDirections.DES === sort\"\r\n                 (click)=\"toggleSort(sortDirections.DES)\">Sort <span class=\"font-weight-bold\">Z - A</span></div>\r\n        </div>\r\n        <div class=\"filter-group d-flex flex-column overflow-hidden\">\r\n            <div class=\"px-3 mt-2\">\r\n                <tql-input icon=\"fa-light fa-magnifying-glass\" class=\"search-box\" placeholder=\"Search\"\r\n                           (changed)=\"onSearchChanged($event)\"\r\n                           [input]=\"searchFC\"></tql-input>\r\n            </div>\r\n            <div class=\"d-flex px-3 py-2\">\r\n                <div class=\"flex-grow-1\"></div>\r\n                <div class=\"d-flex flex-gap-1\">\r\n                    <div class=\"action cursor-pointer\"\r\n                         [class.disabled-half]=\"list?.length <= 0 || selectedList?.length === list?.length\"\r\n                         (click)=\"selectAll($event)\">\r\n                        Select all\r\n                    </div>\r\n                    <div class=\"mx-1\">|</div>\r\n                    <div class=\"action cursor-pointer\"\r\n                         [class.disabled-half]=\"list?.length <= 0 || selectedList?.length === 0\"\r\n                         (click)=\"unSelectAll($event)\">\r\n                        Clear\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"px-3 pb-2\">\r\n                <hr>\r\n            </div>\r\n            <div class=\"flex-grow-1 overflow-hidden\">\r\n                <div class=\"d-flex flex-column h-100 overflow-y-auto\">\r\n                    <div *ngFor=\"let item of sortDisplayedList()\"\r\n                         class=\"item d-flex flex-gap-2 px-3 py-2 align-items-center cursor-pointer\"\r\n                         [class.selected]=\"selectedList?.includes(item)\"\r\n                         (click)=\"toggleFilter([item])\"\r\n                         matRipple>\r\n                        <div class=\"flex-grow-1 text-truncate\">\r\n                            <ng-container *ngTemplateOutlet=\"labelTemp;context:{label:item?.label}\"></ng-container>\r\n                        </div>\r\n                        <div class=\"icon\">\r\n                            <i class=\"fa-light fa-check\"></i>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</mat-menu>\r\n\r\n<ng-template #labelTemp let-label=\"label\">\r\n    <span\r\n        [title]=\"(emptyLabel && (label === null || label === undefined)) ? emptyLabel : label\">\r\n        {{(emptyLabel && (label === null || label === undefined)) ? emptyLabel : label}}\r\n    </span>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TqlInputComponent } from './tql-input/tql-input.component';\nimport { TqlSelectComponent } from './tql-select/tql-select.component';\nimport { MaterialsModule } from 'tql-theme';\nimport { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client';\nimport { LoadingBarModule } from '@ngx-loading-bar/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TqlCollapseComponent } from './tql-collapse/tql-collapse.component';\nimport { TqlLoadingBarComponent } from './tql-loading-bar/tql-loading-bar.component';\nimport { TqlTabComponent } from './tql-tab/tql-tab.component';\nimport { TqlResizableComponent } from './tql-resizable/tql-resizable.component';\nimport { TqlSpinnerComponent } from './tql-spinner/tql-spinner.component';\nimport { TqlTableFilterWidgetComponent } from './tql-table-filter-widget/tql-table-filter-widget.component';\n\n@NgModule({\n    declarations: [\n        TqlInputComponent,\n        TqlSelectComponent,\n        TqlCollapseComponent,\n        TqlLoadingBarComponent,\n        TqlTabComponent,\n        TqlResizableComponent,\n        TqlSpinnerComponent,\n        TqlTableFilterWidgetComponent,\n    ],\n    imports: [CommonModule, MaterialsModule, LoadingBarHttpClientModule, LoadingBarModule, ReactiveFormsModule],\n    exports: [\n        TqlInputComponent,\n        TqlSelectComponent,\n        TqlCollapseComponent,\n        TqlLoadingBarComponent,\n        TqlTabComponent,\n        TqlResizableComponent,\n        TqlSpinnerComponent,\n        TqlTableFilterWidgetComponent,\n    ],\n})\nexport class BasicModule {}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n/*\n * *ngVar=\"{isCollapsed:false} as vars\"}\n * */\n@Directive({\n    selector: '[ngVar]',\n})\nexport class NgVarDirective {\n    @Input()\n    set ngVar(context: unknown) {\n        this.context.$implicit = this.context.ngVar = context;\n\n        if (!this.hasView) {\n            this.vcRef.createEmbeddedView(this.templateRef, this.context);\n            this.hasView = true;\n        }\n    }\n\n    private context: {\n        $implicit: unknown;\n        ngVar: unknown;\n    } = {\n        $implicit: null,\n        ngVar: null,\n    };\n\n    private hasView: boolean = false;\n\n    constructor(private templateRef: TemplateRef<any>, private vcRef: ViewContainerRef) {}\n}\n","import {Injectable} from '@angular/core';\r\nimport {IListItemOption} from '../../constants';\r\nimport _ from 'lodash';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TqlHelperService {\r\n\r\n    constructor() {\r\n    }\r\n\r\n    static getActionCompressGroup(actions: IListItemOption[], notCompressMin: number = 0): { compressed: IListItemOption[], uncompressed: IListItemOption[] } {\r\n        let notCompressGroup: IListItemOption[] = [];\r\n        let compressGroup: IListItemOption[] = [];\r\n        if (actions.length === 1) {\r\n            notCompressGroup = actions;\r\n        } else if (actions.length <= notCompressMin) {\r\n            notCompressGroup = actions;\r\n        } else {\r\n            notCompressGroup = _.filter(actions, x => x.isNotCompressed === true);\r\n            compressGroup = _.difference(actions, notCompressGroup);\r\n            if (notCompressGroup.length <= notCompressMin) {\r\n                notCompressGroup = _.concat(notCompressGroup, _.take(compressGroup, notCompressMin - notCompressGroup.length));\r\n                compressGroup = _.difference(actions, notCompressGroup);\r\n            }\r\n        }\r\n        return {compressed: compressGroup, uncompressed: notCompressGroup};\r\n    }\r\n\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { IListItemOption } from '../../../constants';\r\n\r\n@Component({\r\n    selector: 'tql-action-bar-menu',\r\n    templateUrl: './tql-action-bar-menu.component.html',\r\n    styleUrls: ['./tql-action-bar-menu.component.scss'],\r\n})\r\nexport class TqlActionBarMenuComponent {\r\n    @Input() item: IListItemOption;\r\n    @Input() data: any;\r\n    nestedArrowIcon = 'fa-solid fa-chevron-right pl-3';\r\n    timedOutCloser: any;\r\n\r\n    mouseEnter(trigger: any) {\r\n        if (this.timedOutCloser) {\r\n            clearTimeout(this.timedOutCloser);\r\n        }\r\n        trigger.openMenu();\r\n    }\r\n\r\n    mouseLeave(trigger: any) {\r\n        this.timedOutCloser = setTimeout(() => {\r\n            trigger.closeMenu();\r\n        }, 50);\r\n    }\r\n}\r\n","<ng-template #itemTemp let-item=\"item\">\r\n    <ng-container *ngIf=\"item?.template\">\r\n        <ng-container *ngTemplateOutlet=\"item.template;context:{item:item}\"></ng-container>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!item?.template\">\r\n        <i *ngIf=\"item?.iconClassName\" class=\"{{ item?.iconClassName }}\"></i>\r\n        <div class=\"got-14 font-weight-normal ml-2 flex-grow-1\">{{ item?.name }}</div>\r\n    </ng-container>\r\n</ng-template>\r\n<ng-template #menuItem>\r\n    <button mat-menu-item\r\n            class=\"{{item?.className}}\"\r\n            *ngIf=\"item?.hidden !== true\"\r\n            (click)=\"item?.onClick(data)\"\r\n            [class.disabled-half]=\"item?.disabled\">\r\n        <div class=\"d-flex align-items-center\">\r\n            <ng-container *ngTemplateOutlet=\"itemTemp; context: {item: item}\"></ng-container>\r\n        </div>\r\n    </button>\r\n</ng-template>\r\n<ng-container *ngIf=\"item?.children?.length > 0;else menuItem\">\r\n    <button mat-menu-item\r\n            class=\"{{item?.className}}\"\r\n            *ngIf=\"item?.hidden !== true\"\r\n            [matMenuTriggerFor]=\"submenu\"\r\n            #menuTrigger=\"matMenuTrigger\"\r\n            (mouseenter)=\"mouseEnter(menuTrigger)\" (mouseleave)=\"mouseLeave(menuTrigger)\"\r\n            [class.disabled-half]=\"item?.disabled\">\r\n        <div class=\"d-flex align-items-center\">\r\n            <ng-container *ngTemplateOutlet=\"itemTemp; context: {item: item}\"></ng-container>\r\n        </div>\r\n        <mat-menu #submenu=\"matMenu\">\r\n            <div (mouseenter)=\"mouseEnter(menuTrigger)\" (mouseleave)=\"mouseLeave(menuTrigger)\">\r\n                <ng-container *ngFor=\"let subItem of item?.children\">\r\n                    <tql-action-bar-menu [item]=\"subItem\"></tql-action-bar-menu>\r\n                </ng-container>\r\n            </div>\r\n        </mat-menu>\r\n    </button>\r\n\r\n</ng-container>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IListItemOption } from '../../../constants/interface/i-list-item-option';\r\nimport { TqlHelperService } from '../../../controllers/tql-helper/tql-helper.service';\r\nimport { ActionsConstant, ENUM_ACTION_KEYS } from '../../../constants/values/actions.constant';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n    selector: 'tql-action-bar',\r\n    templateUrl: './tql-action-bar.component.html',\r\n    styleUrls: ['./tql-action-bar.component.scss'],\r\n})\r\nexport class TqlActionBarComponent implements OnInit {\r\n    @Input() data: any;\r\n    @Input() notCompressMin: number = 0;\r\n    @Input() action: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\r\n    @Input() listStyle: TqlActionBarComponent.ENUM_STYLE | string = TqlActionBarComponent.ENUM_STYLE.NORMAL;\r\n    ENUM_STYLE: typeof TqlActionBarComponent.ENUM_STYLE = TqlActionBarComponent.ENUM_STYLE;\r\n\r\n    compressedGroup: IListItemOption[] = [];\r\n    unCompressedGroup: IListItemOption[] = [];\r\n\r\n    _list: IListItemOption[] = [];\r\n    nestedArrowIcon = 'fa-solid fa-chevron-right pl-3';\r\n    @Input()\r\n    set list(list: IListItemOption[]) {\r\n        this._list = [];\r\n        setTimeout(() => {\r\n            this._list = list;\r\n            this.convertActionGroup(this.list);\r\n        });\r\n    }\r\n\r\n    get list() {\r\n        return this._list;\r\n    }\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    convertActionGroup(options: IListItemOption[]) {\r\n        const newGroup = TqlHelperService.getActionCompressGroup(options, this.notCompressMin);\r\n        this.compressedGroup = newGroup.compressed;\r\n        this.unCompressedGroup = newGroup.uncompressed;\r\n    }\r\n}\r\n\r\nexport namespace TqlActionBarComponent {\r\n    export enum ENUM_STYLE {\r\n        NORMAL = 'normal',\r\n        SMALL = 'small',\r\n    }\r\n}\r\n","<div class=\"d-flex align-items-center\" *ngIf=\"list?.length\">\r\n    <!--unCompressedGroup-->\r\n    <ng-container *ngFor=\"let item of unCompressedGroup\">\r\n        <button mat-icon-button\r\n                *ngIf=\"item?.hidden !== true\"\r\n                class=\"{{item?.className}}\"\r\n                [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\r\n                [class.disabled-half]=\"item?.disabled\"\r\n                (click)=\"$event.stopPropagation();item?.onClick(data)\"\r\n                [matTooltip]=\"item?.name\">\r\n            <i class=\"{{item?.iconClassName}}\"></i>\r\n        </button>\r\n    </ng-container>\r\n    <!--compressedGroup-->\r\n    <button mat-icon-button\r\n            class=\"{{action?.className}}\"\r\n            *ngIf=\"compressedGroup?.length\"\r\n            [matMenuTriggerFor]=\"toggleMenus\"\r\n            (click)=\"$event.stopPropagation()\"\r\n            #self=\"matMenuTrigger\"\r\n            [class.showed]=\"self?.menuOpen || !action?.showWhenHover\"\r\n            [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\r\n            [matTooltip]=\"action?.name\">\r\n        <i class=\"{{action?.iconClassName}} \"></i>\r\n    </button>\r\n    <mat-menu #toggleMenus=\"matMenu\" class=\"min-w-200px\" backdropClass=\"mat-menu-default\">\r\n        <ng-container *ngFor=\"let item of compressedGroup\">\r\n            <tql-action-bar-menu [item]=\"item\" [data]=\"data\"></tql-action-bar-menu>\r\n        </ng-container>\r\n    </mat-menu>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { IListItem, IListItemOption } from '../../../constants/interface';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { DefaultComponent } from 'tql-service';\nimport _ from 'lodash';\nimport { ActionsConstant, ENUM_ACTION_KEYS, MicsConstant } from '../../../constants';\nimport { MatRipple } from '@angular/material/core';\n\n@Component({\n    selector: 'tql-simple-list',\n    templateUrl: './tql-simple-list.component.html',\n    styleUrls: ['./tql-simple-list.component.scss'],\n})\nexport class TqlSimpleListComponent extends DefaultComponent implements OnInit {\n    @ViewChild(MatRipple) ripple: MatRipple;\n    @ViewChild('contentTemplate') contentTemplate: TemplateRef<any>;\n    @Input() nameTemplate: TemplateRef<any>;\n    @Input() listStyle: TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE.NORMAL;\n    ENUM_STYLE: typeof TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE;\n\n    @Input() hasConnectedLines: boolean = false;\n    @Input() level: number;\n\n    /*items*/\n    _items: IListItem[];\n    @Input()\n    set items(v: IListItem[]) {\n        _.map(v, (x) => {\n            x.optionsOnlyCollapse = this.filterOptions(x.options, { type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND });\n            x.optionsWithoutCollapse = this.filterOptions(\n                x.options,\n                { type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND },\n                true,\n            );\n        });\n        this._items = v;\n    }\n\n    get items(): IListItem[] {\n        return this._items;\n    }\n\n    @Input() theme: TqlSimpleListComponent.ENUM_THEMES = TqlSimpleListComponent.ENUM_THEMES.LIGHT;\n    @Input() noActive: boolean = false;\n    @Input() activeClassName: string = '';\n    @Input() hasBorderBottom: boolean = false;\n    @Input() collapsingIconPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n\n    // drag & drop\n    @Input() draggable: boolean = false;\n    @Input() dragHandlerPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n    @Input() dropIds: string[] = [];\n    @Output() onDragStart: EventEmitter<any> = new EventEmitter<any>();\n    @Output() onDragEnd: EventEmitter<any> = new EventEmitter<any>();\n\n    // navbar\n    @Input() inNavbar: boolean = false;\n    @Input() navbarClass: string = 'pt-0 pr-15px pb-0 pl-30px';\n\n    ENUM_HANDLER_POSITION: typeof TqlSimpleListComponent.ENUM_HANDLER_POSITION =\n        TqlSimpleListComponent.ENUM_HANDLER_POSITION;\n    DEFAULT_ITEM_HEIGHT: number = 40;\n    DEFAULT_ITEM__SMALL_HEIGHT: number = 32;\n    dragging: boolean = false;\n\n    // style\n    @Input() itemStyle: string = '';\n\n    // actions\n    @Input()\n    moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n    constructor() {\n        super();\n    }\n\n    ngOnInit(): void {\n        setTimeout(() => {\n            this.moreAction.className += ' action';\n            this.moreAction.iconClassName += ' font-size-18px';\n            if (this.moreAction?.showWhenHover) {\n                this.moreAction.className += ' show-on-hover';\n            }\n            // console.log(this.ripple);\n        });\n    }\n\n    onDrop($event: CdkDragDrop<any, any>) {}\n\n    onDragMove() {\n        console.log('move');\n    }\n\n    dragHover(node: any) {}\n\n    dragStart(item: IListItem) {\n        this.onDragStart.emit(item?.data);\n        this.dragging = true;\n    }\n\n    dragHoverEnd() {\n        this.dragging = false;\n    }\n\n    dragEnd() {\n        console.log('drag end');\n        this.onDragEnd.emit();\n    }\n\n    filterOptions(options: IListItemOption[] = [], filter: any = {}, isRevert: boolean = false) {\n        const filteredData = _.filter(options, filter);\n        return !isRevert ? filteredData : _.difference(options, filteredData);\n    }\n\n    calculateConnectedLinesHeight(item: any) {\n        let height: number = this.calculateNestedConnectedLinesHeight(item);\n        return `${height > 0 ? height - this.getDefaultItemHeight() / 2 : 0}px`;\n    }\n\n    calculateNestedConnectedLinesHeight(item: any, isInit: boolean = true): number {\n        let height: number =\n            !item?.isCollapsed && item?.children?.length ? item?.children?.length * this.getDefaultItemHeight() : 0;\n        if (!item.isCollapsed) {\n            for (let i = 0; i < item?.children?.length; i++) {\n                if (isInit && i === item?.children?.length - 1) {\n                    // do nothing\n                } else {\n                    height += this.calculateNestedConnectedLinesHeight(item?.children[i], false);\n                }\n            }\n        }\n\n        return height;\n    }\n\n    calculateConnectedLinesTop() {\n        return `${this.getDefaultItemHeight()}px`;\n    }\n\n    calculateConnectedNodTop() {\n        return `${this.getDefaultItemHeight() / 2}px`;\n    }\n\n    getDefaultItemHeight() {\n        return this.listStyle === TqlSimpleListComponent.ENUM_STYLE.SMALL\n            ? this.DEFAULT_ITEM__SMALL_HEIGHT\n            : this.DEFAULT_ITEM_HEIGHT;\n    }\n}\n\nexport namespace TqlSimpleListComponent {\n    export enum ENUM_STYLE {\n        NORMAL = 'normal',\n        SMALL = 'small',\n    }\n\n    export enum ENUM_THEMES {\n        DARK = 'dark',\n        LIGHT = 'light',\n    }\n\n    export enum ENUM_HANDLER_POSITION {\n        LEFT = 'left',\n        RIGHT = 'right',\n    }\n}\n","<!------RENDER------>\r\n<div class=\"simple-list-wrapper {{theme}}\"\r\n     matRipple\r\n     [class.draggable]=\"draggable\"\r\n     [class.dragging]=\"dragging\"\r\n     cdkDropList\r\n     [cdkDropListSortingDisabled]=\"true\"\r\n     [cdkDropListConnectedTo]=\"dropIds\"\r\n     (cdkDropListDropped)=\"onDrop($event)\">\r\n\r\n    <!--Template for each ITEM-->\r\n    <ng-template #itemTemplate let-item=\"item\">\r\n        <!-- if route or onclick-->\r\n        <ng-template #routeOrClick>\r\n            <ng-container\r\n                *ngTemplateOutlet=\"item?.route?.length?itemRouteNavTemplate:itemOnClickNavTemplate; context: {item: item}\"></ng-container>\r\n        </ng-template>\r\n\r\n        <!-- if menu or other-->\r\n        <ng-container\r\n            *ngTemplateOutlet=\"item?.route?.length || item?.onClick ? routeOrClick:itemMenuNavTemplate; context: {item: item}\"></ng-container>\r\n\r\n    </ng-template>\r\n\r\n    <!--Template for ITEM-MENU-->\r\n\r\n    <ng-template #itemMenuTemplate let-item=\"item\">\r\n        <!--toggle menus-->\r\n        <mat-menu #toggleMenus=\"matMenu\" class=\"menu-default min-w-200px\">\r\n            <button mat-menu-item *ngFor=\"let child of item?.children\"\r\n                    [class.disabled-half]=\"child?.disabled\"\r\n                    (click)=\"child?.onClick()\">\r\n                <div class=\"d-flex align-items-center \">\r\n                    <i *ngIf=\"child?.iconClassName\" class=\"{{ child?.iconClassName }}\"></i>\r\n                    <span class=\"got-14 font-weight-normal ml-2\">{{ child?.name }}</span>\r\n                </div>\r\n            </button>\r\n        </mat-menu>\r\n        <div\r\n            class=\"d-flex item cursor-pointer align-items-center {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\r\n            [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\r\n            style=\"{{itemStyle}}\"\r\n            [class.disabled-half]=\"item?.disabled\"\r\n            [class.border-bottom]=\"hasBorderBottom\"\r\n            [matMenuTriggerFor]=\"toggleMenus\"\r\n        >\r\n            <ng-container\r\n                *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\r\n            <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\r\n                <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\r\n                </ng-container>\r\n                <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\r\n                    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\r\n                    <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options, item:item}\"></ng-container>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #itemMenuNavTemplate let-item=\"item\">\r\n\r\n        <!--not in navbar-->\r\n        <ng-container *ngIf=\"!inNavbar\">\r\n            <ng-container *ngTemplateOutlet=\"itemMenuTemplate; context: { item: item }\"></ng-container>\r\n        </ng-container>\r\n\r\n        <!--in navbar-->\r\n        <ng-container *ngIf=\"inNavbar\">\r\n\r\n            <!--in navbar-->\r\n            <div class=\"hide-on-collapsed\">\r\n                <ng-container *ngTemplateOutlet=\"itemMenuTemplate; context: { item: item }\"></ng-container>\r\n            </div>\r\n            <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\r\n                <!--toggle menus-->\r\n                <mat-menu #toggleMenus=\"matMenu\" class=\"menu-default min-w-200px\">\r\n                    <button mat-menu-item *ngFor=\"let child of item?.children\"\r\n                            [class.disabled-half]=\"child?.disabled\"\r\n                            (click)=\"child?.onClick()\">\r\n                        <div class=\"d-flex align-items-center \">\r\n                            <i *ngIf=\"child?.iconClassName\" class=\"{{ child?.iconClassName }}\"></i>\r\n                            <span class=\"got-14 font-weight-normal ml-2\">{{ child?.name }}</span>\r\n                        </div>\r\n                    </button>\r\n                </mat-menu>\r\n                <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\r\n                     [matTooltip]=\"item?.name\"\r\n                     [matMenuTriggerFor]=\"toggleMenus\">\r\n                    <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </ng-template>\r\n\r\n    <!--Template for ITEM-ROUTE-->\r\n    <ng-template #itemRouteTemplate let-item=\"item\">\r\n        <div *ngVar=\"{activeClass:item?.activeClassName || activeClassName || 'active'} as vars\"\r\n             class=\"d-flex item cursor-pointer   align-items-center  {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\r\n             [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\r\n             style=\"{{itemStyle}}\"\r\n             [routerLink]=\"item.route\"\r\n             [routerLinkActive]=\"noActive?'': vars.activeClass\"\r\n             [routerLinkActiveOptions]=\"item?.routerActiveOptions || {exact: false}\"\r\n             [queryParams]=\"item?.routeQueryParams || {}\"\r\n             [queryParamsHandling]=\"item?.queryParamsHandling || ''\"\r\n             [class.disabled-half]=\"item?.disabled\"\r\n             [class.border-bottom]=\"hasBorderBottom\"\r\n        >\r\n            <ng-container\r\n                *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\r\n            <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\r\n                <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\r\n                </ng-container>\r\n                <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\r\n                    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\r\n                    <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options, item:item}\"></ng-container>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #itemRouteNavTemplate let-item=\"item\">\r\n        <!--not in navbar-->\r\n        <ng-container *ngIf=\"!inNavbar\">\r\n            <ng-container *ngTemplateOutlet=\"itemRouteTemplate; context: { item: item }\"></ng-container>\r\n        </ng-container>\r\n\r\n        <!--in navbar-->\r\n        <ng-container *ngIf=\"inNavbar\">\r\n\r\n            <!--in navbar-->\r\n            <div class=\"hide-on-collapsed\">\r\n                <ng-container *ngTemplateOutlet=\"itemRouteTemplate; context: { item: item }\"></ng-container>\r\n            </div>\r\n            <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\r\n                <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\r\n\r\n                     [matTooltip]=\"item?.name\"\r\n                     [routerLink]=\"item.route\"\r\n                     [routerLinkActive]=\"noActive?'':(activeClassName?activeClassName:'active')\"\r\n                     [routerLinkActiveOptions]=\"item?.routerActiveOptions || {exact: false}\"\r\n                     [queryParams]=\"item?.routeQueryParams || {}\">\r\n                    <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </ng-template>\r\n\r\n    <!--Template for ITEM-ONCLICK-->\r\n    <ng-template #itemOnClickTemplate let-item=\"item\">\r\n        <div\r\n            class=\"d-flex item cursor-pointer align-items-center {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\r\n            [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\r\n            style=\"{{itemStyle}}\"\r\n            (click)=\"item.onClick(item)\"\r\n            [class.disabled-half]=\"item?.disabled\"\r\n            [class.border-bottom]=\"hasBorderBottom\"\r\n            [class.active]=\"item?.active\"\r\n            cdkDrag\r\n            [cdkDragData]=\"item\"\r\n            (cdkDragMoved)=\"onDragMove()\"\r\n            [cdkDragDisabled]=\"!draggable || (item?.disabled === true)\"\r\n            (mouseenter)=\"dragHover(item)\" (mouseleave)=\"dragHoverEnd()\"\r\n            (cdkDragStarted)=\"dragStart(item)\" (cdkDragReleased)=\"dragEnd()\"\r\n        >\r\n            <ng-container\r\n                *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\r\n            <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\r\n                <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\r\n                </ng-container>\r\n                <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\r\n                    <div class=\"draggable-icon\"\r\n                         *ngIf=\"draggable && dragHandlerPosition == ENUM_HANDLER_POSITION.LEFT\"\r\n                         matTooltip=\"Draggable\">\r\n                        <i class=\"icon fal fa-grip-lines-vertical\"></i>\r\n                    </div>\r\n\r\n                    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\r\n                    <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\r\n                    <div *cdkDragPreview\r\n                         class=\"ml-2 p-2 color-white tql-simple-list-drag-preview-wrapper d-flex flex-gap-3\">\r\n                        <div class=\"text-truncate flex-grow-1\" [title]=\"item?.name\">{{ item?.name }}</div>\r\n                        <i class=\"fal fa-grip-lines-vertical\"></i>\r\n                    </div>\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options}\"></ng-container>\r\n                    <div class=\"draggable-icon pr-3\"\r\n                         matTooltip=\"Draggable\"\r\n                         *ngIf=\"draggable && dragHandlerPosition == ENUM_HANDLER_POSITION.RIGHT\">\r\n                        <i class=\"icon fal fa-grip-lines-vertical\"></i>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #itemOnClickNavTemplate let-item=\"item\">\r\n        <!--not in navbar-->\r\n        <ng-container *ngIf=\"!inNavbar\">\r\n            <ng-container *ngTemplateOutlet=\"itemOnClickTemplate; context: { item: item }\"></ng-container>\r\n        </ng-container>\r\n\r\n        <!--in navbar-->\r\n        <ng-container *ngIf=\"inNavbar\">\r\n\r\n            <!--in navbar-->\r\n            <div class=\"hide-on-collapsed\">\r\n                <ng-container *ngTemplateOutlet=\"itemOnClickTemplate; context: { item: item }\"></ng-container>\r\n            </div>\r\n            <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\r\n                <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\r\n                     [matTooltip]=\"item?.name\"\r\n                     (click)=\"item?.onClick()\">\r\n                    <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </ng-template>\r\n\r\n    <!--Template for ITEM_CUSTOM-NAME-->\r\n    <ng-template #itemCustomNameTemplate let-item=\"item\">\r\n        <div class=\"flex-grow-1 text-truncate {{item?.labelClassName || ''}}\"\r\n             *ngVar=\"{template:nameTemplate || item?.template} as vars\">\r\n            <ng-container *ngIf=\"vars?.template\">\r\n                <ng-container\r\n                    *ngTemplateOutlet=\"vars?.template;context:{item:item}\"></ng-container>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"!vars?.template\">\r\n                {{ item?.name }}\r\n            </ng-container>\r\n        </div>\r\n    </ng-template>\r\n\r\n    <ng-container *ngFor=\"let item of items\">\r\n        <!--loop-->\r\n        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {item: item}\"></ng-container>\r\n    </ng-container>\r\n</div>\r\n\r\n<!------TEMPLATE------>\r\n<!--Template for lines-->\r\n<ng-template #linesTemplate let-item=\"item\">\r\n    <div class=\"connected-lines\" *ngIf=\"hasConnectedLines\"\r\n         [style.top]=\"calculateConnectedLinesTop()\"\r\n         [style.height]=\"calculateConnectedLinesHeight(item)\"></div>\r\n    <div class=\"connected-nod\" *ngIf=\"hasConnectedLines && level > 0\"\r\n         [style.top]=\"calculateConnectedNodTop()\"></div>\r\n</ng-template>\r\n<!--Template for ICON-->\r\n<ng-template #iconTemplate let-item=\"item\">\r\n    <div class=\" d-flex align-items-center justify-content-center icon-wrapper m-auto\" *ngIf=\"item?.iconClassName\">\r\n        <i class=\"icon {{item?.iconClassName}}\"></i>\r\n    </div>\r\n</ng-template>\r\n\r\n<!--Template for OPTIONS-->\r\n<ng-template #optionTemplate let-options=\"options\" let-item=\"item\">\r\n    <!--    <div class=\"d-flex align-items-center\">-->\r\n    <!--        <button mat-icon-button *ngFor=\"let item of options\" class=\"{{item?.className || ''}}\"-->\r\n    <!--                [matTooltip]=\"item?.name\"-->\r\n    <!--                (click)=\"$event.stopPropagation();item?.onClick(item)\">-->\r\n    <!--            <i class=\"{{item?.iconClassName}}\"></i>-->\r\n    <!--        </button>-->\r\n    <!--        -->\r\n    <!--    </div>-->\r\n    <div class=\"actions-group\">\r\n        <tql-action-bar [list]=\"options\" [action]=\"moreAction\" *ngIf=\"options?.length\" [data]=\"item\"\r\n                        [listStyle]=\"listStyle\"></tql-action-bar>\r\n    </div>\r\n</ng-template>\r\n\r\n\r\n","import {\r\n    AfterViewInit,\r\n    ApplicationRef,\r\n    Directive,\r\n    EmbeddedViewRef,\r\n    EventEmitter,\r\n    HostListener,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TqlCollapseComponent } from '../../components/basic/tql-collapse/tql-collapse.component';\r\nimport _ from 'lodash';\r\nimport { BehaviorSubject, debounce, timer } from 'rxjs';\r\n\r\n@Directive({\r\n    selector: '[tqlCollapse]',\r\n})\r\nexport class TqlCollapseDirective implements OnInit, AfterViewInit {\r\n    @Input() name: string;\r\n    @Input() label: string;\r\n    @Input() labelClassName: string = '';\r\n    @Input() collapsedClassName: string = '';\r\n    @Input() hasLine: boolean = true;\r\n    @Input() hasShadow: boolean = true;\r\n    @Input() alwaysShowIcon: boolean = false;\r\n    @Input() collapseTrigger: EventEmitter<boolean>;\r\n    @Input() offset: number = 50;\r\n    @Input() hideIconWhenCollapsed: boolean = false;\r\n    @Input() hideIcon: boolean = false;\r\n    @Input() direction: string = 'right';\r\n    @Output() init: EventEmitter<any> = new EventEmitter();\r\n    @Output() onChangeCollapse: EventEmitter<boolean> = new EventEmitter();\r\n    private instance: TqlCollapseComponent | null = null;\r\n    private parentDom: any;\r\n    private _collapse: any = false;\r\n    private _alwaysCollapse: any = false;\r\n\r\n    @Input()\r\n    set alwaysCollapsed(value: boolean) {\r\n        this._alwaysCollapse = value;\r\n        this.toggleCollapse(this._alwaysCollapse);\r\n    }\r\n\r\n    @Input()\r\n    set initialCollapsed(value: boolean) {\r\n        setTimeout(() => {\r\n            this.toggleCollapse(value, false);\r\n        });\r\n    }\r\n\r\n    private resize$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\r\n\r\n    @HostListener('window:resize', ['$event'])\r\n    onResize(event) {\r\n        const contentDOM = this.parentDom?.querySelector('.content');\r\n        if (!!contentDOM) {\r\n            // set overflow\r\n            contentDOM.classList.add('overflow-hidden');\r\n            this.resize$.next(new Date().getTime());\r\n        }\r\n    }\r\n\r\n    constructor(\r\n        private _ViewContainerRef: ViewContainerRef,\r\n        private _ApplicationRef: ApplicationRef,\r\n        private _Injector: Injector,\r\n    ) {\r\n        this.resize$.pipe(debounce(() => timer(500))).subscribe(() => {\r\n            // console.log('resize');\r\n            if (!this._collapse) {\r\n                const contentDOM = this.parentDom?.querySelector('.content');\r\n                if (!!contentDOM) {\r\n                    // set overflow\r\n                    contentDOM.classList.remove('overflow-hidden');\r\n                }\r\n            }\r\n\r\n            this.checkMinHeight(true);\r\n        });\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.addComponent();\r\n    }\r\n\r\n    ngAfterViewInit() {\r\n        if (!!this.collapseTrigger) {\r\n            this.collapseTrigger.subscribe((event) => {\r\n                console.log('trigger', event);\r\n                this.toggleCollapse(event);\r\n            });\r\n        }\r\n        this.init.emit({\r\n            toggleCollapse: (event) => {\r\n                this.toggleCollapse(event);\r\n            },\r\n        });\r\n    }\r\n\r\n    /**\r\n     * toggle collapse\r\n     * @param status\r\n     */\r\n    toggleCollapse(status: boolean = false, hasAnimation: boolean = true) {\r\n        if (!!this.parentDom) {\r\n            if (hasAnimation) {\r\n                this.parentDom.classList.add('animation');\r\n            } else {\r\n                this.parentDom.classList.remove('animation');\r\n            }\r\n            this.toggleCollapseEvent(status);\r\n        }\r\n    }\r\n\r\n    private toggleCollapseEvent(status: boolean = false) {\r\n        if (!!this.parentDom) {\r\n            const collapsedClasses: string[] = _.split(this.collapsedClassName, ' ');\r\n            const contentDOM = this.parentDom.querySelector('.content');\r\n\r\n            if (!!contentDOM) {\r\n                if (status || this._alwaysCollapse) {\r\n                    // set overflow\r\n                    contentDOM.classList.add('overflow-hidden');\r\n\r\n                    // collapse\r\n                    this.parentDom.classList.add('collapsed');\r\n                    _.map(collapsedClasses, (x) => (x ? this.parentDom.classList.add(x) : null));\r\n                } else {\r\n                    // remove overflow\r\n                    setTimeout(() => {\r\n                        contentDOM.classList.remove('overflow-hidden');\r\n                    }, 500);\r\n\r\n                    // collapse\r\n                    this.parentDom.classList.remove('collapsed');\r\n                    _.map(collapsedClasses, (x) => (x ? this.parentDom.classList.remove(x) : null));\r\n                }\r\n            }\r\n        }\r\n        // emit\r\n        this.onChangeCollapse.emit(status);\r\n\r\n        // update instance's data\r\n        this._collapse = status;\r\n        this.updateInstance();\r\n\r\n        // check min height for animation\r\n        this.checkMinHeight();\r\n    }\r\n\r\n    private checkMinHeight(isReset: boolean = false) {\r\n        if (!!this.parentDom) {\r\n            // make sure not conflict\r\n            if (isReset) {\r\n                this.parentDom.style['min-width'] = null;\r\n                this.parentDom.style['max-width'] = null;\r\n                this.parentDom.style['height'] = null;\r\n                this.parentDom.style['min-height'] = null;\r\n                this.parentDom.style['max-height'] = null;\r\n            }\r\n            if (!this._collapse) {\r\n                setTimeout(() => {\r\n                    if (this.parentDom.clientHeight > 0) {\r\n                        this.parentDom.style['min-height'] = this.parentDom.clientHeight + 'px';\r\n                        this.parentDom.style['height'] = this.parentDom.clientHeight + 'px';\r\n                    }\r\n                }, 500);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * add dom\r\n     */\r\n    private addComponent() {\r\n        if (!this.instance) {\r\n            this.parentDom = this._ViewContainerRef.element.nativeElement;\r\n\r\n            // === collapse ===\r\n            // add collapse component\r\n            const componentRef = this._ViewContainerRef.createComponent(TqlCollapseComponent, {\r\n                injector: this._Injector,\r\n            });\r\n            this.instance = componentRef.instance as TqlCollapseComponent;\r\n            this.updateInstance();\r\n\r\n            // listen collapse action\r\n            this.instance.event.subscribe((event: any) => {\r\n                // console.log('instance', event);\r\n                this.toggleCollapse(event);\r\n            });\r\n\r\n            // append dom to parent\r\n            const childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n            const divWrapper = document.createElement('div');\r\n            divWrapper.classList.add('content');\r\n            // divWrapper.classList.add('overflow-hidden');\r\n            divWrapper.classList.add('w-100');\r\n            divWrapper.classList.add('h-100');\r\n            while (this.parentDom.childNodes.length > 0) {\r\n                divWrapper.appendChild(this.parentDom.childNodes[0]);\r\n            }\r\n            // divWrapper.append(this.parentDom.childNodes);\r\n            this.parentDom.appendChild(divWrapper);\r\n            this.parentDom.appendChild(childDom);\r\n            // console.log(collapseDom);\r\n            // console.log(this.parentDom);\r\n\r\n            // set position relative\r\n            this.parentDom.classList.add('position-relative');\r\n            this.parentDom.classList.add('tql-collapse-container');\r\n            this.parentDom.classList.add('animation');\r\n\r\n            // direction\r\n            this.parentDom.classList.add(this.direction);\r\n\r\n            // shadow\r\n            if (this.hasShadow) this.parentDom.classList.add('mat-elevation-z2');\r\n\r\n            // always show icon\r\n            if (this.alwaysShowIcon) this.parentDom.classList.add('always-icon');\r\n\r\n            // check min height for animation\r\n            this.checkMinHeight();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * update instance's data\r\n     */\r\n    private updateInstance() {\r\n        if (this.instance) {\r\n            this.instance.isCollapse = this._collapse;\r\n            this.instance.hasLine = this.hasLine;\r\n            this.instance.offset = this.offset;\r\n            this.instance.hideIconWhenCollapsed = this.hideIconWhenCollapsed;\r\n            this.instance.hideIcon = this.hideIcon || this._alwaysCollapse;\r\n            this.instance.direction = this.direction;\r\n            this.instance.name = this.name;\r\n            this.instance.label = this.label;\r\n            this.instance.labelClassName = this.labelClassName;\r\n            this.instance.onDataChange();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * clear dom\r\n     */\r\n    private clear() {\r\n        if (this.instance) {\r\n            this._ViewContainerRef.clear();\r\n            this.instance = null;\r\n        }\r\n    }\r\n}\r\n","import {\n    ApplicationRef,\n    ComponentFactoryResolver,\n    Directive,\n    EmbeddedViewRef,\n    Injector,\n    Input,\n    ViewContainerRef,\n} from '@angular/core';\nimport { TqlResizableComponent } from '../../components/basic/tql-resizable/tql-resizable.component';\n\n@Directive({\n    selector: '[tqlResizable]',\n})\nexport class TqlResizableDirective {\n    @Input() resizable: (string | TqlResizableComponent.ENUM_DIRECTIONS)[] = [\n        TqlResizableComponent.ENUM_DIRECTIONS.RIGHT,\n    ];\n    instance: TqlResizableComponent | null;\n\n    constructor(\n        private _ViewContainerRef: ViewContainerRef,\n        private _ApplicationRef: ApplicationRef,\n        private _Injector: Injector,\n        private _ComponentFactoryResolver: ComponentFactoryResolver,\n    ) {\n        setTimeout(() => {\n            this.add();\n        });\n    }\n\n    /**\n     * add dom\n     */\n    add() {\n        if (!this.instance) {\n            const parentDom = this._ViewContainerRef.element.nativeElement;\n\n            // === resizable ===\n            // add resizable component\n            const resizableComponentRef = this._ComponentFactoryResolver\n                .resolveComponentFactory(TqlResizableComponent)\n                .create(this._Injector);\n            this.instance = resizableComponentRef.instance as TqlResizableComponent;\n            this.instance.parentElement = this._ViewContainerRef.element;\n            this.instance.directions = this.resizable;\n\n            // add to appRef to make sure controller working\n            this._ApplicationRef.attachView(resizableComponentRef.hostView);\n\n            // append dom to parent\n            const dom = (resizableComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n            // console.log(dom);\n            // console.log(parentDom);\n            // console.log(parentDom.innerHTML);\n            parentDom.appendChild(dom);\n\n            // set position relative\n            parentDom.classList.add('position-relative');\n            parentDom.classList.add('resizable-container');\n        }\n    }\n\n    /**\n     * clear dom\n     */\n    clear() {\n        if (this.instance) {\n            this._ViewContainerRef.clear();\n            this.instance = null;\n        }\n    }\n}\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {IListItemOption} from '../../../constants/interface/i-list-item-option';\r\nimport _ from 'lodash';\r\nimport {ActionsConstant, ENUM_ACTION_KEYS} from '../../../constants/values/actions.constant';\r\nimport {IListItem} from '../../../constants/interface/i-list-item';\r\n\r\n@Component({\r\n    selector: 'tql-action-drawer',\r\n    templateUrl: './tql-action-drawer.component.html',\r\n    styleUrls: ['./tql-action-drawer.component.scss']\r\n})\r\nexport class TqlActionDrawerComponent implements OnInit {\r\n    /*in pixel*/\r\n    @Input() width: number = 300;\r\n    @Input() isResizable: boolean = false;\r\n\r\n    _leftActions: IListItem[];\r\n    @Input()\r\n    set leftActions(v: IListItem[]) {\r\n        this._leftActions = v;\r\n        _.map(this._leftActions, x => {\r\n            x.iconClassName += ' icon';\r\n        });\r\n    };\r\n\r\n    _rightActions: IListItem[] = [];\r\n    @Input()\r\n    set rightActions(v: IListItem[]) {\r\n        this._rightActions = v;\r\n        _.map(this._rightActions, x => {\r\n            x.iconClassName += ' icon';\r\n        });\r\n    };\r\n\r\n    @Input() headingClass: string = '';\r\n\r\n    moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\r\n\r\n    constructor() {\r\n        this.moreAction.iconClassName += ' icon';\r\n        this._leftActions = [\r\n            // TqlActionDrawerComponent.ACTION_ICONS.REFRESH,\r\n            // TqlActionDrawerComponent.ACTION_ICONS.SEARCH\r\n        ];\r\n        this._rightActions = [\r\n            // TqlActionDrawerComponent.ACTION_ICONS.COLLAPSE_ALL,\r\n            // TqlActionDrawerComponent.ACTION_ICONS.EXPAND_ALL\r\n        ];\r\n    }\r\n\r\n    ngOnInit(): void {\r\n\r\n    }\r\n\r\n    triggerAction(item: IListItem) {\r\n        if (!!item.onClick) {\r\n            item.onClick();\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace TqlActionDrawerComponent {\r\n    export enum ENUM_ACTIONS {\r\n        REFRESH = 'REFRESH',\r\n        SEARCH = 'SEARCH',\r\n        COLLAPSE_ALL = 'COLLAPSE_ALL',\r\n        EXPAND_ALL = 'EXPAND_ALL'\r\n    }\r\n\r\n    export const ACTION_ICONS: { [key in TqlActionDrawerComponent.ENUM_ACTIONS]: IListItem } = {\r\n        [TqlActionDrawerComponent.ENUM_ACTIONS.REFRESH]: {\r\n            name: 'Refresh',\r\n            iconClassName: 'fal fa-sync',\r\n            onClick: () => {\r\n            }\r\n        },\r\n        [TqlActionDrawerComponent.ENUM_ACTIONS.SEARCH]: {\r\n            name: 'Search',\r\n            iconClassName: 'fal fa-search',\r\n            onClick: () => {\r\n            }\r\n        },\r\n        [TqlActionDrawerComponent.ENUM_ACTIONS.COLLAPSE_ALL]: {\r\n            name: 'Collapse All',\r\n            iconClassName: 'fal fa-angle-double-up',\r\n            onClick: () => {\r\n            }\r\n        },\r\n        [TqlActionDrawerComponent.ENUM_ACTIONS.EXPAND_ALL]: {\r\n            name: 'Expand All',\r\n            iconClassName: 'fal fa-angle-double-down',\r\n            onClick: () => {\r\n            }\r\n        },\r\n    };\r\n}\r\n","<ng-container [ngSwitch]=\"isResizable\">\r\n    <ng-container *ngSwitchCase=\"true\">\r\n        <div class=\"tql-drawer-wrapper h-100 {{headingClass}}\" [style.width]=\"width+'px'\" tqlCollapse tqlResizable>\r\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"false\">\r\n        <div class=\"tql-drawer-wrapper h-100 {{headingClass}}\" [style.width]=\"width+'px'\" tqlCollapse>\r\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n        </div>\r\n    </ng-container>\r\n</ng-container>\r\n<ng-template #contentTemplate>\r\n    <div class=\" d-flex flex-column overflow-hidden h-100 w-100\">\r\n        <div class=\"action-group d-flex\">\r\n            <ng-container *ngFor=\"let item of _leftActions\">\r\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context:{item:item}\"></ng-container>\r\n            </ng-container>\r\n            <div class=\"flex-grow-1\"></div>\r\n            <tql-action-bar [list]=\"_rightActions\" [notCompressMin]=\"2\" [action]=\"moreAction\"></tql-action-bar>\r\n        </div>\r\n        <div class=\"flex-grow-1 overflow-auto\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n<ng-template #itemTemplate let-item=\"item\">\r\n    <ng-container *ngIf=\"item?.template; else noTemplate\">\r\n        <ng-container *ngTemplateOutlet=\"item?.template; context:{item:item}\"></ng-container>\r\n    </ng-container>\r\n    <ng-template #noTemplate>\r\n        <button mat-icon-button\r\n                [class.disabled-half]=\"item?.disabled\"\r\n                [matTooltip]=\"item?.name\" (click)=\"triggerAction(item)\">\r\n            <i class=\"{{item?.iconClassName}}\"></i>\r\n        </button>\r\n    </ng-template>\r\n</ng-template>\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { IListItem, IListItemOption } from '../../../constants/interface';\r\nimport _ from 'lodash';\r\nimport { MatMenu } from '@angular/material/menu';\r\n\r\n@Component({\r\n    selector: 'tql-panel',\r\n    templateUrl: './tql-panel.component.html',\r\n    styleUrls: ['./tql-panel.component.scss'],\r\n})\r\nexport class TqlPanelComponent implements OnInit {\r\n    @Input() panelTitle: string | null = null;\r\n    @Input() panelTitleTemplate: TemplateRef<any>;\r\n    @Input() data: IListItem = {};\r\n    @Input() theme: TqlPanelComponent.THEMES = TqlPanelComponent.THEMES.NORMAL;\r\n    @Input() style: TqlPanelComponent.STYLES = TqlPanelComponent.STYLES.NORMAL;\r\n    @Input() headingClassName: string;\r\n    @Input() contentClassName: string;\r\n    @Input() hasBorder: boolean;\r\n    @Input() hasFullScreen: boolean = false;\r\n    @Input() hasCollapse: boolean = false;\r\n    @Input() hasOverflowXAuto: boolean = true;\r\n    @Input() hasOverflowYAuto: boolean = true;\r\n    @Input() hasAction: boolean = true;\r\n    @Input() isCollapsed: boolean = false;\r\n    @Input() hintMenu: MatMenu;\r\n\r\n    readonly THEMES: typeof TqlPanelComponent.THEMES = TqlPanelComponent.THEMES;\r\n    readonly STYLES: typeof TqlPanelComponent.STYLES = TqlPanelComponent.STYLES;\r\n\r\n    isFullScreen: boolean = false;\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    toggleFullScreen() {\r\n        this.isFullScreen = !this.isFullScreen;\r\n    }\r\n\r\n    triggerAction(item: IListItemOption) {\r\n        if (!!item.onClick) {\r\n            item.onClick();\r\n        }\r\n    }\r\n\r\n    toggleCollapse() {\r\n        this.isCollapsed = !this.isCollapsed;\r\n    }\r\n\r\n    hasTitle() {\r\n        return this.panelTitle !== null || !_.isEmpty(this.data) || !!this.panelTitleTemplate;\r\n    }\r\n}\r\n\r\nexport namespace TqlPanelComponent {\r\n    export enum THEMES {\r\n        NORMAL = 'normal',\r\n        BLACK = 'black',\r\n        BLACK_BLUE = 'black-blue',\r\n    }\r\n\r\n    export enum STYLES {\r\n        NORMAL = 'normal',\r\n        SMALL = 'small',\r\n    }\r\n\r\n    export enum DEFAULT_OPTIONS_KEYS {\r\n        FULL_SCREEN,\r\n    }\r\n\r\n    export const DEFAULT_OPTIONS = {\r\n        [DEFAULT_OPTIONS_KEYS.FULL_SCREEN]: {\r\n            name: '',\r\n            iconClassName: '',\r\n        },\r\n    };\r\n}\r\n","<div class=\"tql-panel-wrapper h-100 {{style}} {{theme}}\"\r\n     [class.full]=\"isFullScreen\"\r\n     [class.no-title]=\"!hasTitle()\"\r\n     [class.bordered]=\"hasBorder\">\r\n    <div class=\"heading d-flex flex-gap-3 d-flex align-items-center {{headingClassName}}\"\r\n         *ngIf=\"hasTitle()\">\r\n        <div class=\"color-white text-truncate flex-grow-1 pl-3 {{data?.className}}\" [title]=\"panelTitle || data?.name\"\r\n             *ngIf=\"!panelTitleTemplate; else titleTemplate\">\r\n            {{panelTitle || data?.name}}\r\n        </div>\r\n        <ng-template #titleTemplate>\r\n            <div class=\"flex-grow-1 overflow-hidden\">\r\n                <ng-container *ngTemplateOutlet=\"panelTitleTemplate\"></ng-container>\r\n            </div>\r\n        </ng-template>\r\n        <div class=\"d-flex align-items-center\" *ngIf=\"hasAction\">\r\n            <ng-container *ngFor=\"let item of data?.options\">\r\n                <button mat-icon-button\r\n                        *ngIf=\"!!item?.iconClassName; else regularBtn\"\r\n                        class=\"{{item?.className}}\"\r\n                        [class.disabled-half]=\"item.disabled\"\r\n                        [matTooltip]=\"item?.name\" (click)=\"triggerAction(item)\">\r\n                    <i class=\"{{item?.iconClassName}}\"></i>\r\n                </button>\r\n                <ng-template #regularBtn>\r\n                    <button mat-button\r\n                            class=\"{{item?.className}}\"\r\n                            [class.disabled-half]=\"item.disabled\"\r\n                            (click)=\"triggerAction(item)\">\r\n                        {{ item?.name }}\r\n                    </button>\r\n                </ng-template>\r\n            </ng-container>\r\n            <button mat-icon-button *ngIf=\"hasCollapse\" (click)=\"toggleCollapse()\"\r\n                    [matTooltip]=\"!isFullScreen?'Expand':'Compress'\">\r\n                <i class=\"fal  text-white\"\r\n                   [class.fa-angle-down]=\"!isCollapsed\"\r\n                   [class.fa-angle-up]=\"isCollapsed\"></i>\r\n            </button>\r\n            <button mat-icon-button *ngIf=\"hintMenu\" [matMenuTriggerFor]=\"hintMenu\" matTooltip=\"Hint\">\r\n                <i class=\"fas fa-info-circle text-white font-size-18px\"></i>\r\n            </button>\r\n            <button mat-icon-button *ngIf=\"hasFullScreen\" (click)=\"toggleFullScreen()\"\r\n                    [matTooltip]=\"!isFullScreen?'Expand':'Compress'\">\r\n                <i class=\"fal  text-white\"\r\n                   [class.fa-expand]=\"!isFullScreen\"\r\n                   [class.fa-compress]=\"isFullScreen\"></i>\r\n            </button>\r\n        </div>\r\n    </div>\r\n    <div class=\"content {{contentClassName}}\"\r\n         [class.overflow-x-auto]=\"hasOverflowXAuto\"\r\n         [class.overflow-y-auto]=\"hasOverflowYAuto\"\r\n         *ngIf=\"!isCollapsed\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { filter, first } from 'rxjs/operators';\r\nimport { TqlUtilsService } from 'tql-service';\r\nimport { ENUM_ROUTER_KEYS, IBreadcrumb, IRouterData } from '../../../constants/interface';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n    selector: 'tql-breadcrumb',\r\n    templateUrl: './tql-breadcrumb.component.html',\r\n    styleUrls: ['./tql-breadcrumb.component.scss'],\r\n})\r\nexport class TqlBreadcrumbComponent implements OnInit {\r\n    @Input() hasPrefix: boolean = false;\r\n    @Input() noTranslate: boolean = true;\r\n    breadcrumbList: IBreadcrumb[] = [];\r\n    _selector;\r\n\r\n    constructor(\r\n        private _Router: Router,\r\n        private _ActivatedRoute: ActivatedRoute, // , private _Store: Store\r\n    ) {\r\n        this._Router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(async () => {\r\n            this.breadcrumbList = await this.createBreadcrumbs(this._ActivatedRoute.root);\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {}\r\n\r\n    /**\r\n     * source\r\n     * https://github.com/piotrkorlaga/demo-angular-breadcrumb/blob/master/src/app/breadcrumb/breadcrumb.component.ts\r\n     * @param route\r\n     * @param url\r\n     * @param breadcrumbs\r\n     * @returns {IBreadcrumb[]}\r\n     */\r\n    private async createBreadcrumbs(\r\n        route: ActivatedRoute,\r\n        url: string = '#',\r\n        breadcrumbs: IBreadcrumb[] = [],\r\n    ): Promise<IBreadcrumb[]> {\r\n        const children: ActivatedRoute[] = route.children;\r\n\r\n        if (!!children && children.length > 0) {\r\n            for (const child of children) {\r\n                const routeURL: string = child.snapshot.url.map((segment) => segment.path).join('/');\r\n                if (routeURL !== '') {\r\n                    url += `/${routeURL}`;\r\n                }\r\n\r\n                const data: IRouterData = child.snapshot.data;\r\n                if (!!data[ENUM_ROUTER_KEYS.BREADCRUMB]) {\r\n                    let label = data[ENUM_ROUTER_KEYS.BREADCRUMB] as string;\r\n                    if (data[ENUM_ROUTER_KEYS.BREADCRUMB]) {\r\n                        const params = TqlUtilsService.toArray(data[ENUM_ROUTER_KEYS.BREADCRUMB_PARAM]);\r\n                        // if (data[ENUM_ROUTER_KEYS.BREADCRUMB_STORE_SELECTOR]) {\r\n                        //     const d = await Promise.all(\r\n                        //         _.map(params, (x) => {\r\n                        //             // TODO\r\n                        //             return this._Store\r\n                        //                 .pipe(\r\n                        //                     select(data[ENUM_ROUTER_KEYS.BREADCRUMB_STORE_SELECTOR]),\r\n                        //                     filter((item) => !!item),\r\n                        //                     first(),\r\n                        //                 )\r\n                        //                 .toPromise();\r\n                        //         }),\r\n                        //     );\r\n                        //     _.each(\r\n                        //         d,\r\n                        //         (item: any) =>\r\n                        //             (label = data[ENUM_ROUTER_KEYS.BREADCRUMB_KEY]\r\n                        //                 ? item[data[ENUM_ROUTER_KEYS.BREADCRUMB_KEY]]\r\n                        //                 : item),\r\n                        //     );\r\n                        // } else {\r\n                        _.map(params, (x) => {\r\n                            label = TqlUtilsService.replaceAll(label, `{${x}}`, child.snapshot.params[x]);\r\n                        });\r\n                        // }\r\n                    }\r\n                    breadcrumbs.push({ label: label, url });\r\n                }\r\n\r\n                return await this.createBreadcrumbs(child, url, breadcrumbs);\r\n            }\r\n        }\r\n\r\n        return _.uniqBy(breadcrumbs, (x: any) => x.url);\r\n    }\r\n\r\n    goTo(url: string | undefined) {\r\n        this._Router.navigateByUrl(url as string);\r\n    }\r\n}\r\n","<div class=\"d-flex align-items-center flex-gap-3 breadcrumb-wrapper\">\r\n    <div *ngIf=\"breadcrumbList && breadcrumbList.length && hasPrefix\"><i class=\"fal fa-long-arrow-right\"></i></div>\r\n    <ng-container *ngFor=\"let breadcrumb of breadcrumbList; let $last = last;\">\r\n        <div class=\"cursor-pointer\" [class.current]=\"$last\"\r\n             [routerLink]=\"breadcrumb?.url.substring(1)\">\r\n            <ng-container *ngIf=\"!noTranslate\">{{breadcrumb?.label | translate}}</ng-container>\r\n            <ng-container *ngIf=\"noTranslate\">{{breadcrumb?.label}}</ng-container>\r\n        </div>\r\n        <div *ngIf=\"!$last\"><i class=\"fal fa-long-arrow-right\"></i></div>\r\n    </ng-container>\r\n</div>\r\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    NgZone,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    PLATFORM_ID,\r\n    SimpleChanges,\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Directive({\r\n    selector: '[clickOutside]',\r\n})\r\nexport class TqlClickOutsideDirective implements OnInit, OnChanges, OnDestroy {\r\n    @Input() clickOutsideEnabled: boolean = true;\r\n\r\n    @Input() attachOutsideOnClick: boolean = false;\r\n    @Input() delayClickOutsideInit: boolean = false;\r\n    @Input() emitOnBlur: boolean = false;\r\n\r\n    @Input() exclude: string = '';\r\n    @Input() excludeBeforeClick: boolean = false;\r\n\r\n    @Input() clickOutsideEvents: string = '';\r\n\r\n    @Output() clickOutside: EventEmitter<Event> = new EventEmitter<Event>();\r\n\r\n    private _nodesExcluded: Array<HTMLElement> = [];\r\n    private _events: Array<string> = ['click'];\r\n\r\n    constructor(private _el: ElementRef, private _ngZone: NgZone, @Inject(PLATFORM_ID) private platformId: Object) {\r\n        this._initOnClickBody = this._initOnClickBody.bind(this);\r\n        this._onClickBody = this._onClickBody.bind(this);\r\n        this._onWindowBlur = this._onWindowBlur.bind(this);\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (!isPlatformBrowser(this.platformId)) {\r\n            return;\r\n        }\r\n\r\n        this._init();\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        if (!isPlatformBrowser(this.platformId)) {\r\n            return;\r\n        }\r\n\r\n        this._removeClickOutsideListener();\r\n        this._removeAttachOutsideOnClickListener();\r\n        this._removeWindowBlurListener();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (!isPlatformBrowser(this.platformId)) {\r\n            return;\r\n        }\r\n\r\n        if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\r\n            this._init();\r\n        }\r\n    }\r\n\r\n    private _init() {\r\n        if (this.clickOutsideEvents !== '') {\r\n            this._events = this.clickOutsideEvents.split(',').map((e) => e.trim());\r\n        }\r\n\r\n        this._excludeCheck();\r\n\r\n        if (this.attachOutsideOnClick) {\r\n            this._initAttachOutsideOnClickListener();\r\n        } else {\r\n            this._initOnClickBody();\r\n        }\r\n\r\n        if (this.emitOnBlur) {\r\n            this._initWindowBlurListener();\r\n        }\r\n    }\r\n\r\n    private _initOnClickBody() {\r\n        if (this.delayClickOutsideInit) {\r\n            setTimeout(this._initClickOutsideListener.bind(this));\r\n        } else {\r\n            this._initClickOutsideListener();\r\n        }\r\n    }\r\n\r\n    private _excludeCheck() {\r\n        if (this.exclude) {\r\n            try {\r\n                const nodes = Array.from(document.querySelectorAll(this.exclude)) as Array<HTMLElement>;\r\n                if (nodes) {\r\n                    this._nodesExcluded = nodes;\r\n                }\r\n            } catch (err) {\r\n                console.error('[ng-click-outside] Check your exclude selector syntax.', err);\r\n            }\r\n        }\r\n    }\r\n\r\n    private _onClickBody(ev: Event) {\r\n        if (!this.clickOutsideEnabled) {\r\n            return;\r\n        }\r\n\r\n        if (this.excludeBeforeClick) {\r\n            this._excludeCheck();\r\n        }\r\n\r\n        if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\r\n            this._emit(ev);\r\n\r\n            if (this.attachOutsideOnClick) {\r\n                this._removeClickOutsideListener();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Resolves problem with outside click on iframe\r\n     * @see https://github.com/arkon/ng-click-outside/issues/32\r\n     */\r\n    private _onWindowBlur(ev: Event) {\r\n        setTimeout(() => {\r\n            if (!document.hidden) {\r\n                this._emit(ev);\r\n            }\r\n        });\r\n    }\r\n\r\n    private _emit(ev: Event) {\r\n        if (!this.clickOutsideEnabled) {\r\n            return;\r\n        }\r\n\r\n        this._ngZone.run(() => this.clickOutside.emit(ev));\r\n    }\r\n\r\n    private _shouldExclude(target): boolean {\r\n        for (let excludedNode of this._nodesExcluded) {\r\n            if (excludedNode.contains(target)) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    private _initClickOutsideListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            this._events.forEach((e) => document.addEventListener(e, this._onClickBody));\r\n        });\r\n    }\r\n\r\n    private _removeClickOutsideListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            this._events.forEach((e) => document.removeEventListener(e, this._onClickBody));\r\n        });\r\n    }\r\n\r\n    private _initAttachOutsideOnClickListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            this._events.forEach((e) => this._el.nativeElement.addEventListener(e, this._initOnClickBody));\r\n        });\r\n    }\r\n\r\n    private _removeAttachOutsideOnClickListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            this._events.forEach((e) => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));\r\n        });\r\n    }\r\n\r\n    private _initWindowBlurListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            window.addEventListener('blur', this._onWindowBlur);\r\n        });\r\n    }\r\n\r\n    private _removeWindowBlurListener() {\r\n        this._ngZone.runOutsideAngular(() => {\r\n            window.removeEventListener('blur', this._onWindowBlur);\r\n        });\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ComponentFactoryResolver,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Input,\r\n    OnInit,\r\n    TemplateRef,\r\n    Type,\r\n    ViewChild,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../../controllers';\r\nimport { DefaultComponent } from 'tql-service';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TqlResizableComponent } from '../../../basic/tql-resizable/tql-resizable.component';\r\n\r\n@Component({\r\n    selector: 'tql-navbar',\r\n    templateUrl: './tql-navbar.component.html',\r\n    styleUrls: ['./tql-navbar.component.scss'],\r\n})\r\nexport class TqlNavbarComponent extends DefaultComponent implements OnInit, AfterViewInit {\r\n    @HostBinding('class.overlapped') @Input() isOverlappedStyle: boolean = false;\r\n    @ViewChild('tqlNavbar', { read: ViewContainerRef }) tqlNavbar: ViewContainerRef;\r\n    @Input() hiddenWhenCollapse: boolean = false;\r\n    @Input() resizable: boolean = false;\r\n    @Input() initialCollapsed: boolean = false;\r\n    @Input() expandWhenHover: boolean = false;\r\n    @Input() IconOffsetTop: number = 50;\r\n\r\n    readonly smallScreenSize: number = 768;\r\n\r\n    resizableDirections: typeof TqlResizableComponent.ENUM_DIRECTIONS = TqlResizableComponent.ENUM_DIRECTIONS;\r\n\r\n    _collapse = false;\r\n    _alwaysCollapse: any = false;\r\n\r\n    collapseEmit: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    navBarPreview: NavbarPreview | null;\r\n    navBarPreviewTop: string;\r\n\r\n    @Input()\r\n    set collapse(value: boolean) {\r\n        setTimeout(() => {\r\n            this._collapse = value;\r\n        }, 100);\r\n    }\r\n\r\n    @Input()\r\n    set alwaysCollapsed(value: boolean) {\r\n        setTimeout(() => {\r\n            this._alwaysCollapse = value;\r\n        }, 100);\r\n    }\r\n\r\n    id: string = uuidv4();\r\n\r\n    constructor(\r\n        private _Router: Router,\r\n        private _ChangeDetectorRef: ChangeDetectorRef,\r\n        private _ComponentFactoryResolver: ComponentFactoryResolver,\r\n        private _TqlNavbarControllerService: TqlNavbarControllerService,\r\n    ) {\r\n        super();\r\n        this.addSubscribes(\r\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\r\n                this.renderPreview(rs);\r\n                // console.log(rs);\r\n            }),\r\n        );\r\n    }\r\n\r\n    ngOnInit(): void {}\r\n\r\n    ngAfterViewInit() {\r\n        // trigger resize event to check if it needs to collapse\r\n        window.dispatchEvent(new Event('resize'));\r\n    }\r\n\r\n    /**\r\n     * render preview template\r\n     * @param preview\r\n     */\r\n    renderPreview(preview: NavbarPreview | null = null) {\r\n        if (!preview) {\r\n            this.navBarPreview = preview;\r\n            return;\r\n        }\r\n        let hasElement = false;\r\n        let parent = preview?.element;\r\n        // check if has element\r\n        while (parent?.parentElement) {\r\n            parent = parent?.parentElement;\r\n            if (parent?.id === this.tqlNavbar.element.nativeElement.id) {\r\n                hasElement = true;\r\n                break;\r\n            }\r\n        }\r\n        if (hasElement) {\r\n            this.navBarPreview = preview;\r\n\r\n            // calculate preview top\r\n            const parentTop = this.tqlNavbar.element.nativeElement.getClientRects()[0].top;\r\n            const childTop = this.navBarPreview?.element?.getClientRects()[0].top || 0;\r\n            this.navBarPreviewTop = childTop - parentTop + 'px';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * toggle left menu\r\n     * @param status: open is expand else collapse\r\n     */\r\n    toggleCollapse(status: boolean = !this._collapse) {\r\n        if (status !== this._collapse) {\r\n            this.collapseEmit.emit(status);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * resize screen\r\n     * @param $event\r\n     */\r\n    onResize($event: any) {\r\n        console.log('resize');\r\n        if (!this.initialCollapsed) {\r\n            this.toggleCollapse($event.target.innerWidth <= this.smallScreenSize);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * for mobile and tablet, if click outside left menu then collapse it\r\n     * @param e\r\n     */\r\n    onClickedOutside(e: Event | null = null) {\r\n        if (window.innerWidth <= this.smallScreenSize) {\r\n            console.log('click out');\r\n            this.toggleCollapse(true);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * for mobile and tablet, if click inside left menu then expand it\r\n     */\r\n    onClickedInside() {\r\n        if (window.innerWidth <= this.smallScreenSize) {\r\n            console.log('click in');\r\n            this.toggleCollapse(false);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * check collapse change\r\n     * @param $event\r\n     */\r\n    onChangeCollapse($event: boolean) {\r\n        this._collapse = $event;\r\n        this.onClosePreview();\r\n    }\r\n\r\n    /**\r\n     * when preview is closed, send null to preview item observable\r\n     */\r\n    onClosePreview() {\r\n        if (!!this.navBarPreview) {\r\n            this.navBarPreview = null;\r\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(null);\r\n        }\r\n    }\r\n\r\n    onHover(isHovered: boolean) {\r\n        if (this.expandWhenHover) {\r\n            this.toggleCollapse(!isHovered);\r\n        }\r\n    }\r\n}\r\n","<div #tqlNavbar\r\n     [id]=\"id\"\r\n     class=\"nav-layout-container d-flex flex-column tql-navbar-wrapper\"\r\n     (window:resize)=\"onResize($event)\"\r\n     (clickOutside)=\"onClickedOutside($event)\"\r\n     (click)=\"onClickedInside();$event.stopPropagation();\"\r\n     [hasLine]=\"false\"\r\n     [collapseTrigger]=\"collapseEmit\"\r\n     [hideIconWhenCollapsed]=\"true\"\r\n     (onChangeCollapse)=\"onChangeCollapse($event)\"\r\n     [offset]=\"IconOffsetTop\"\r\n     [alwaysCollapsed]=\"_alwaysCollapse\"\r\n     [initialCollapsed]=\"initialCollapsed\"\r\n     [hideIcon]=\"expandWhenHover\"\r\n     (mouseenter)=\"onHover(true)\" (mouseleave)=\"onHover(false)\"\r\n     tqlCollapse>\r\n\r\n    <div class=\"preview-wrapper mat-elevation-z8\" [style.top]=\"navBarPreviewTop\" (clickOutside)=\"onClosePreview()\">\r\n        <ng-container [ngTemplateOutlet]=\"navBarPreview.template\" *ngIf=\"navBarPreview\"></ng-container>\r\n    </div>\r\n\r\n    <div class=\"flex-grow-1 w-100 h-100 overflow-hidden\" *ngIf=\"!(_collapse && hiddenWhenCollapse)\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n    selector: 'tql-navbar-logo',\n    templateUrl: './tql-navbar-logo.component.html',\n    styleUrls: ['./tql-navbar-logo.component.scss'],\n})\nexport class TqlNavbarLogoComponent implements OnInit {\n    @Input() logo: string;\n    @Input() logoRoute: string[];\n    @Input() collapseLogo: string;\n    @Input() width: string;\n    @Input() height: string;\n\n    constructor() {}\n\n    ngOnInit(): void {}\n}\n","<div [routerLink]=\"logoRoute\" class=\"w-100 logo d-flex align-items-center side-padding cursor-pointer\">\r\n    <img class=\"logo collapse-hide\" [style.width]=\"width\" [style.height]=\"height\" [src]=\"logo\" alt=\"Atomiton Icon\"/>\r\n    <img class=\"logo collapse-show\" [style.width]=\"width\" [style.height]=\"height\" [src]=\"collapseLogo\" alt=\"Atomiton Icon\"/>\r\n</div>\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {IListItem, IListItemOption} from '../../../../constants/interface';\r\n\r\n@Component({\r\n    selector: 'tql-navbar-title',\r\n    templateUrl: './tql-navbar-title.component.html',\r\n    styleUrls: ['./tql-navbar-title.component.scss']\r\n})\r\nexport class TqlNavbarTitleComponent implements OnInit {\r\n    private _title: IListItem;\r\n    private _options: IListItemOption[];\r\n\r\n    @Input()\r\n    set data(v: IListItem) {\r\n        this._title = v;\r\n        this._options = v.options || [];\r\n        console.log(this.options);\r\n    };\r\n\r\n    get title() {\r\n        return this._title;\r\n    }\r\n\r\n    get options(): IListItemOption[] {\r\n        return this._options;\r\n    }\r\n\r\n    constructor() {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    onClick() {\r\n        if (this.title.onClick) {\r\n            this.title.onClick();\r\n        }\r\n    }\r\n}\r\n","<div class=\"title-group d-flex flex-gap-2 side-padding pt-1 pb-2 align-items-center\"\r\n     *ngIf=\"title\">\r\n    <div class=\"title text-truncate font-weight-light collapse-hide cursor-pointer {{title?.className}}\"\r\n         [routerLink]=\"title?.route\"\r\n         [title]=\"title?.name\">{{title?.name}}</div>\r\n    <div class=\"flex-grow-1 d-flex justify-content-end\">\r\n        <ng-container *ngIf=\"title?.onClick; else optionTemplate\">\r\n            <ng-container *ngTemplateOutlet=\"onCLickTemplate\"></ng-container>\r\n        </ng-container>\r\n    </div>\r\n</div>\r\n<!-- on-click template-->\r\n<ng-template #onCLickTemplate>\r\n    <div class=\"settings cursor-pointer\" (click)=\"onClick()\"\r\n         [class.disabled-half]=\"!title?.onClick || title.disabled\">\r\n        <i class=\"icon {{title?.iconClassName}}\"></i>\r\n    </div>\r\n</ng-template>\r\n<!-- option template-->\r\n<ng-template #optionTemplate>\r\n    <div class=\"settings cursor-pointer\" [matMenuTriggerFor]=\"menu\"\r\n         [class.disabled-half]=\"title.disabled\">\r\n        <i class=\"icon {{title?.iconClassName}}\"></i>\r\n    </div>\r\n    <mat-menu #menu=\"matMenu\" backdropClass=\"mat-menu-default\">\r\n        <button mat-menu-item *ngFor=\"let item of options\"\r\n                [disabled]=\"item?.disabled\"\r\n                [class.disabled-half]=\" item?.disabled\">\r\n            <div class=\"d-flex flex-gap-2\"\r\n                 [routerLink]=\"item?.route\">\r\n                <i *ngIf=\"item?.iconClassName\" class=\"{{item?.iconClassName}}\"></i>\r\n                <div class=\"color-soft-blue text-truncate\"\r\n                     [title]=\"item?.name\">\r\n                    {{item?.name}}\r\n                </div>\r\n            </div>\r\n        </button>\r\n    </mat-menu>\r\n</ng-template>\r\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n    selector: '[libTqlDynamicComponentHost]'\n})\nexport class TqlDynamicComponentHostDirective {\n\n    constructor(public _ViewContainerRef: ViewContainerRef) {\n    }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n@Directive({\n    selector: '[tql-hover-class]',\n})\nexport class TqlHoverClassDirective {\n    constructor(public elementRef: ElementRef) {}\n\n    @Input('tql-hover-class') hoverClass: any;\n\n    @HostListener('mouseenter') onMouseEnter() {\n        this.elementRef.nativeElement.classList.add(this.hoverClass);\n    }\n\n    @HostListener('mouseleave') onMouseLeave() {\n        this.elementRef.nativeElement.classList.remove(this.hoverClass);\n    }\n}\n","import {\r\n    ApplicationRef,\r\n    Directive,\r\n    EmbeddedViewRef,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    Output,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { BehaviorSubject, debounce, timer } from 'rxjs';\r\nimport { TqlTableFilterWidgetComponent } from '../../components/basic/tql-table-filter-widget/tql-table-filter-widget.component';\r\nimport _ from 'lodash';\r\nimport { DefaultComponent, TqlTableControllerService } from 'tql-service';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\n@Directive({\r\n    selector: '[tqlTableFilterWidget]',\r\n})\r\nexport class TqlTableFilterWidgetDirective extends DefaultComponent {\r\n    @Input() emptyLabel: string = '';\r\n    @Input() singleSort: boolean = true;\r\n    @Input() hasSort: boolean = true;\r\n    @Input() defaultSort: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION =\r\n        TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n\r\n    /**\r\n     *\r\n     * @type {any}\r\n     */\r\n    _filter: { [key: string]: TqlTableFilterWidgetComponent.IFilter | any };\r\n    @Input()\r\n    set filter(v: any) {\r\n        // console.log('new filter');\r\n        this._filter = v || {};\r\n        // console.log(this._filter);\r\n        if (_.isUndefined(this._filter['_id'])) {\r\n            this._filter['_id'] = uuidv4();\r\n            this._TqlTableControllerService.generateFilter(this._filter['_id']);\r\n            if (!!this._TqlTableControllerService.getFilter(this._filter['_id'])) {\r\n                this.addSubscribes(\r\n                    this._TqlTableControllerService.getFilter(this._filter['_id'])?.onUpdate$?.subscribe((x) => {\r\n                        // console.log(x);\r\n                        this._TqlTableControllerService.getFilter(this._filter['_id'])?.onUpdateUI$?.next(x);\r\n                        // this.updateFilterData();\r\n                    }),\r\n                );\r\n            }\r\n        }\r\n        setTimeout(() => {\r\n            if (this._filterKeys) {\r\n                if (!this.labelKey) {\r\n                    this.labelKey = _.join(this._filterKeys, '.');\r\n                }\r\n            }\r\n            this.updateInstance$.next(new Date().getTime());\r\n        }, 100);\r\n    }\r\n\r\n    @Output() filterChange: EventEmitter<TqlTableFilterWidgetComponent.IFilter> =\r\n        new EventEmitter<TqlTableFilterWidgetComponent.IFilter>();\r\n\r\n    private _filterKeys: string[] = [];\r\n\r\n    @Input() set filterKey(v: string) {\r\n        this._filterKeys = _.split(v, '.');\r\n    }\r\n\r\n    get filterKey() {\r\n        return _.join(this._filterKeys, '.');\r\n    }\r\n\r\n    // get filterKey(): string[] {\r\n    //     return this._filterKey;\r\n    // }\r\n\r\n    @Input() iconClassName: string;\r\n\r\n    @Input() labelKey: string;\r\n    // TODO\r\n    // @Input() valueKey: string;\r\n\r\n    /**\r\n     *\r\n     * @param v\r\n     */\r\n    private _data: any[] = [];\r\n    @Input()\r\n    set data(v: any[]) {\r\n        this._data = v;\r\n        this.updateInstance$.next(new Date().getTime());\r\n    }\r\n\r\n    @Input() filterChanged$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n\r\n    /**\r\n     * filter value, if exist, it will replace keys from data\r\n     * @param v\r\n     */\r\n    private _filterValues: any[] = [];\r\n    @Input()\r\n    set filterValues(v: any[]) {\r\n        this._filterValues = v;\r\n        this.updateInstance$.next(new Date().getTime());\r\n    }\r\n\r\n    private instance: TqlTableFilterWidgetComponent | null = null;\r\n    private parentDom: any;\r\n\r\n    updateInstance$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\r\n\r\n    constructor(\r\n        private _ViewContainerRef: ViewContainerRef,\r\n        private _ApplicationRef: ApplicationRef,\r\n        private _Injector: Injector,\r\n        private _TqlTableControllerService: TqlTableControllerService,\r\n    ) {\r\n        super();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.addSubscribes(\r\n            this.updateInstance$.pipe(debounce(() => timer(500))).subscribe((_) => {\r\n                this.updateInstance();\r\n            }),\r\n            this.filterChanged$.subscribe((rs) => {\r\n                if (rs) {\r\n                    // disable to prevent default sort loop, not sure if this line needs for?\r\n                    // this.updateInstance$.next(new Date().getTime());\r\n                }\r\n            }),\r\n        );\r\n        this.addComponent();\r\n    }\r\n\r\n    private addComponent() {\r\n        if (!this.instance) {\r\n            this.parentDom = this._ViewContainerRef.element.nativeElement;\r\n\r\n            // === collapse ===\r\n            // add collapse component\r\n            const componentRef = this._ViewContainerRef.createComponent(TqlTableFilterWidgetComponent, {\r\n                injector: this._Injector,\r\n            });\r\n            this.instance = componentRef.instance as TqlTableFilterWidgetComponent;\r\n            this.updateInstance$.next(new Date().getTime());\r\n\r\n            // listen event\r\n            this.instance.event.subscribe(($event: any) => {\r\n                // console.log('instance', $event);\r\n                this.eventChanged($event);\r\n            });\r\n\r\n            // // append dom to parent\r\n            const childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n            const divParentWrapper = document.createElement('div');\r\n            divParentWrapper.classList.add('content');\r\n            divParentWrapper.classList.add('d-flex');\r\n            divParentWrapper.classList.add('align-items-center');\r\n\r\n            const div1Wrapper = document.createElement('div');\r\n            div1Wrapper.classList.add('flex-grow-1');\r\n\r\n            while (this.parentDom.childNodes.length > 0) {\r\n                div1Wrapper.appendChild(this.parentDom.childNodes[0]);\r\n            }\r\n\r\n            const div2Wrapper = document.createElement('div');\r\n            div2Wrapper.appendChild(childDom);\r\n\r\n            //\r\n            divParentWrapper.appendChild(div1Wrapper);\r\n            divParentWrapper.appendChild(div2Wrapper);\r\n            this.parentDom.appendChild(divParentWrapper);\r\n\r\n            //\r\n            this.parentDom.classList.add('tql-table-filter-widget-wrapper');\r\n            this.parentDom.classList.add('pr-0');\r\n        }\r\n    }\r\n\r\n    private updateInstance() {\r\n        if (this.instance && this._data?.length) {\r\n            // filter data\r\n            let filteredData = _.cloneDeep(this._data);\r\n            // TODO tmp disable\r\n            // _.map(this.filterChanged$?.value || {}, (x, k) => {\r\n            //     if (!['control', '_id', 'data', this.filterKey].includes(k)) {\r\n            //         filteredData = _.filter(\r\n            //             filteredData,\r\n            //             (y) => !!_.find(x?.data, (z) => z?.value.includes(_.get(y, x?.key))),\r\n            //         );\r\n            //     }\r\n            // });\r\n\r\n            // generate data list\r\n\r\n            let list: { label: any; value: any }[] = [];\r\n            if (this._filterValues?.length) {\r\n                // use filter values\r\n                list = _.map(this._filterValues, (x) => ({ label: x, value: x }));\r\n            } else {\r\n                list = _.map(filteredData, (x) => ({\r\n                    label: _.get(x, this.labelKey),\r\n                    value: _.get(x, this.filterKey),\r\n                }));\r\n            }\r\n\r\n            this.instance.hasSort = this.hasSort;\r\n            // this.instance.list = _.uniqBy(list, (x) => x.label);\r\n            this.instance.list = _.map(\r\n                _.groupBy(list, (x) => {\r\n                    return x?.label === null || x?.label === undefined ? null : x?.label;\r\n                }),\r\n                (x, k) => ({\r\n                    label: k === 'null' || k === 'undefined' ? null : k,\r\n                    value: _.uniq(_.map(x, (y) => y?.value)),\r\n                }),\r\n            );\r\n\r\n            this.instance.filterKey = this.filterKey;\r\n            this.instance.filter = this._filter;\r\n            if (!!this.iconClassName) this.instance.iconClassName = this.iconClassName;\r\n\r\n            // reset\r\n            // if (!!this._filter && _.isUndefined(_.get(this._filter, this.filterKey))) {\r\n            //     this.instance.reset();\r\n            // }\r\n\r\n            // default sort\r\n            setTimeout(() => {\r\n                // if (this.defaultSort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\r\n                //     this?.instance?.toggleSort(this.defaultSort);\r\n                // }\r\n                this?.instance?.checkFilter();\r\n\r\n                // empty label\r\n                if (this.instance) {\r\n                    this.instance.emptyLabel = this.emptyLabel;\r\n                }\r\n            }, 100);\r\n\r\n            this.instance.onDataChange();\r\n        }\r\n    }\r\n\r\n    private eventChanged($event) {\r\n        if (this.singleSort) {\r\n            // single sort\r\n            _.forEach(this._filter, (x) => {\r\n                if (x?.sort && x?.key !== $event?.key) {\r\n                    x.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\r\n                    x?.control?.resetSort();\r\n                }\r\n            });\r\n        }\r\n        this._filter[$event?.key] = $event;\r\n        this._filter['data'] = this.onFilterData(this._filter);\r\n\r\n        this.filterChange.emit(this._filter);\r\n        this.filterChanged$.next({\r\n            ...this._filter,\r\n            control: {\r\n                triggerFilter: () => {\r\n                    this._TqlTableControllerService\r\n                        .getFilter(this._filter['_id'])\r\n                        ?.onUpdate$?.next(new Date().getTime());\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    private onFilterData(filters: any) {\r\n        let filterData = [...this._data];\r\n        filters = _.cloneDeep(filters);\r\n        delete filters['_id'];\r\n        delete filters['data'];\r\n        // sort\r\n        const sorts: any = _.filter(\r\n            _.map(filters, (x, key) => ({\r\n                key: key,\r\n                sort: x?.sort,\r\n            })),\r\n            (x) => x.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD,\r\n        );\r\n        filterData = _.orderBy(\r\n            filterData,\r\n            _.map(sorts, (x) => x.key),\r\n            _.map(sorts, (x) => x.sort),\r\n        );\r\n\r\n        // filters\r\n        _.map(filters, (filter) => {\r\n            filterData = _.filter(\r\n                filterData,\r\n                (x) => !!_.find(filter?.data, (y) => y?.value.includes(_.get(x, filter?.key))),\r\n            );\r\n        });\r\n\r\n        return filterData;\r\n    }\r\n\r\n    // updateFilterData() {\r\n    //     console.log(this.filter);\r\n    //     console.log(this.onFilterData(this._filter));\r\n    // }\r\n}\r\n","export class TqlResizedEvent {\r\n    public newRect: DOMRectReadOnly;\r\n    public oldRect?: DOMRectReadOnly;\r\n    public isFirst: boolean;\r\n\r\n    public constructor(newRect: DOMRectReadOnly, oldRect: DOMRectReadOnly | undefined) {\r\n        this.newRect = newRect;\r\n        this.oldRect = oldRect;\r\n        this.isFirst = oldRect == null;\r\n    }\r\n}\r\n","/*\r\n * Credit to\r\n * https://github.com/vdolek/angular-resize-event\r\n * */\r\nimport { Directive, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TqlResizedEvent } from './tql-resized.event';\r\nimport { DefaultComponent } from 'tql-service';\r\n\r\n@Directive({\r\n    selector: '[tqlResized]',\r\n})\r\nexport class TqlResizedDirective extends DefaultComponent implements OnInit, OnDestroy {\r\n    private observer: ResizeObserver;\r\n    private oldRect?: DOMRectReadOnly;\r\n\r\n    @Output()\r\n    public readonly resized;\r\n\r\n    public constructor(private readonly element: ElementRef, private readonly zone: NgZone) {\r\n        super();\r\n        this.resized = new EventEmitter<TqlResizedEvent>();\r\n        this.observer = new ResizeObserver((entries) => this.zone.run(() => this.observe(entries)));\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.observer.observe(this.element.nativeElement);\r\n    }\r\n\r\n    public override ngOnDestroy(): void {\r\n        super.ngOnDestroy();\r\n        this.observer.disconnect();\r\n    }\r\n\r\n    private observe(entries: ResizeObserverEntry[]): void {\r\n        const domSize = entries[0];\r\n        const resizedEvent = new TqlResizedEvent(domSize.contentRect, this.oldRect);\r\n        this.oldRect = domSize.contentRect;\r\n        this.resized.emit(resizedEvent);\r\n    }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {IListItem} from '../../../constants/interface';\r\n\r\n@Component({\r\n    selector: 'tql-simple-card',\r\n    templateUrl: './tql-simple-card.component.html',\r\n    styleUrls: ['./tql-simple-card.component.scss']\r\n})\r\nexport class TqlSimpleCardComponent implements OnInit {\r\n    @Input() item: IListItem;\r\n    @Input() class: string;\r\n\r\n    constructor() {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n}\r\n","<div class=\"card-simple-wrapper d-flex flex-column {{class}}\">\r\n    <div class=\"d-flex justify-content-end\">\r\n        <ng-container *ngTemplateOutlet=\"moreOptionTemplate;context:{array:item?.children}\">\r\n        </ng-container>\r\n    </div>\r\n    <div class=\"d-flex flex-column align-items-center flex-grow-1\">\r\n        <i class=\"{{ item?.iconClassName }} font-size-36px primary-icon-theme mb-15px\"></i>\r\n        <div class=\"font-size-20px text-white mb-10px text-center text-truncate w-100\">{{ item?.name }}</div>\r\n        <div class=\"color-soft-blue text-center mb-20px flex-grow-1\">{{ item?.description }}</div>\r\n        <ng-container *ngIf=\"item.route\">\r\n            <a mat-button class=\"w-100 {{ item?.className }}\"\r\n               [routerLink]=\"item.route\"\r\n               [class.disabled-half]=\"item?.disabled\">\r\n                <span class=\"font-weight-medium text-white\">{{item?.actionName}}</span>\r\n            </a>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"item.onClick\">\r\n            <a mat-button class=\"w-100 {{ item?.className }}\"\r\n               (click)=\"item?.onClick()\"\r\n               [class.disabled-half]=\"item?.disabled\">\r\n                <span class=\"font-weight-medium text-white\">{{item?.actionName}}</span>\r\n            </a>\r\n        </ng-container>\r\n\r\n    </div>\r\n</div>\r\n\r\n<ng-template #moreOptionTemplate let-array=\"array\">\r\n    <button mat-icon-button class=\"mr-n3 mt-n2\"\r\n            [class.disabled-half]=\"!array || !array.length\"\r\n            [matMenuTriggerFor]=\"tqlConsoleMenu\">\r\n        <i class=\"fal fa-ellipsis-v font-size-21px color-soft-blue\"></i>\r\n    </button>\r\n    <mat-menu #tqlConsoleMenu=\"matMenu\" class=\"menu-default\">\r\n        <button mat-menu-item *ngFor=\"let item of array\"\r\n                [routerLink]=\"item?.route\">\r\n            <div class=\"d-flex align-items-center\">\r\n                <i class=\"{{item?.iconClass}} font-size-18px\"></i>\r\n                <span class=\" ml-2\">{{item?.label}}</span>\r\n            </div>\r\n        </button>\r\n    </mat-menu>\r\n</ng-template>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'tql-header',\r\n  templateUrl: './tql-header.component.html',\r\n  styleUrls: ['./tql-header.component.scss']\r\n})\r\nexport class TqlHeaderComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div></div>\r\n<ng-content></ng-content>\r\n","import { AfterViewInit, Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { IListItem } from '../../../constants';\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../controllers';\nimport { DefaultComponent } from 'tql-service';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n    selector: 'tql-collapse-group',\n    templateUrl: './tql-collapse-group.component.html',\n    styleUrls: ['./tql-collapse-group.component.scss'],\n})\nexport class TqlCollapseGroupComponent extends DefaultComponent implements OnInit, AfterViewInit {\n    @ViewChild('contentTemplate') contentTemplate: TemplateRef<any>;\n    @Input() headingClassName: string;\n    @Input() data: IListItem;\n    @Input() inNavbar: boolean = false;\n    @Input() navbarClass: string = 'pl-0 pr-15px pb-0 pl-30px';\n\n    /**\n     *\n     * @type {boolean}\n     */\n    isCollapse = false;\n\n    navBarPreview: NavbarPreview | null;\n    showNavBarPreview: NavbarPreview | null;\n\n    id: string = uuidv4();\n\n    constructor(private _TqlNavbarControllerService: TqlNavbarControllerService) {\n        super();\n        this.addSubscribes(\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\n                // console.log(rs);\n                if (!rs || rs?.id !== this.id) {\n                    this.showNavBarPreview = this.navBarPreview;\n                } else {\n                    this.showNavBarPreview = null;\n                }\n            }),\n        );\n    }\n\n    ngOnInit(): void {}\n\n    ngAfterViewInit() {\n        // console.log(this.contentTemplate);\n        // TODO\n        setTimeout(() => {\n            this.navBarPreview = {\n                id: this.id,\n                template: this.contentTemplate,\n                element: this.contentTemplate.elementRef.nativeElement,\n            };\n            this.showNavBarPreview = this.navBarPreview;\n        });\n    }\n\n    onShowContent($event: MouseEvent) {\n        if (this.inNavbar) {\n            if (this.navBarPreview) {\n                this.navBarPreview.element = ($event.target as Element)?.parentElement as Element;\n            }\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(this.navBarPreview);\n        }\n    }\n}\n","<!--not in navbar-->\r\n<ng-container *ngIf=\"!inNavbar\">\r\n    <ng-container [ngTemplateOutlet]=\"showNavBarPreview.template\" *ngIf=\"showNavBarPreview\"></ng-container>\r\n</ng-container>\r\n<!--in navbar-->\r\n<ng-container *ngIf=\"inNavbar\">\r\n    <div class=\"hide-on-collapsed\">\r\n        <ng-container [ngTemplateOutlet]=\"showNavBarPreview.template\" *ngIf=\"showNavBarPreview\"></ng-container>\r\n    </div>\r\n    <div class=\"show-on-collapsed\">\r\n        <div class=\"d-flex align-items-center justify-content-center h-40px parent p-0 cursor-pointer\" matRipple\r\n             [matTooltip]=\"data?.name\"\r\n             (click)=\"onShowContent($event)\">\r\n            <i class=\"{{data?.iconClassName || 'far fa-circle'}}\"></i>\r\n            <div class=\"d-flex has-group-hint align-items-center\">\r\n                <i class=\"fal fa-angle-right font-size-12px \"></i>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n<ng-template #contentTemplate>\r\n    <div class=\"tql-collapse-group-wrapper\" *ngIf=\"data\">\r\n        <div\r\n            class=\"d-flex flex-gap-3 align-items-center justify-content-center cursor-pointer parent {{headingClassName}} {{inNavbar?navbarClass:''}}\"\r\n            matRipple\r\n            (click)=\"isCollapse = !isCollapse\">\r\n            <ng-container *ngIf=\"data?.template; else noTemplate\">\r\n                <ng-container *ngTemplateOutlet=\"data?.template\"></ng-container>\r\n            </ng-container>\r\n            <ng-template #noTemplate>\r\n                <div class=\"d-flex align-items-center overflow-hidden\">\r\n                    <div class=\"parent-icon\"><i class=\"{{data?.iconClassName}}\"></i></div>\r\n                    <div class=\"title flex-shrink-1 flex-grow-1 flex-basis-0 text-truncate {{data?.className}}\"\r\n                         [title]=\"data?.name\">{{data?.name}}</div>\r\n                </div>\r\n                <div class=\"flex-grow-1\"></div>\r\n                <div class=\"px-3\">\r\n                    <i class=\"fal \" [class.fa-angle-down]=\"!isCollapse\" [class.fa-angle-up]=\"isCollapse\"></i>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n\r\n        <div [class.collapsed]=\"isCollapse\" class=\"d-flex flex-column children-group\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-tql-highlight-list',\r\n  templateUrl: './tql-highlight-list.component.html',\r\n  styleUrls: ['./tql-highlight-list.component.scss']\r\n})\r\nexport class TqlHighlightListComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<p>tql-highlight-list works!</p>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {IListItem} from '../../../constants';\r\n\r\n@Component({\r\n    selector: 'tql-status-list',\r\n    templateUrl: './tql-status-list.component.html',\r\n    styleUrls: ['./tql-status-list.component.scss']\r\n})\r\nexport class TqlStatusListComponent implements OnInit {\r\n    @Input() items: IListItem[];\r\n    @Output() onChange: EventEmitter<IListItem> = new EventEmitter<IListItem>();\r\n    selectedItem: IListItem;\r\n\r\n    constructor() {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    onSelect(item: IListItem) {\r\n        this.selectedItem = item;\r\n        this.onChange.emit(this.selectedItem);\r\n    }\r\n}\r\n","<div class=\"status-list-wrapper\">\r\n    <ng-container *ngFor=\"let item of items\">\r\n        <ng-container\r\n            *ngIf=\"item?.route; then routerLinkList else defaultList\"></ng-container>\r\n        <ng-template #routerLinkList>\r\n            <div class=\"d-flex side-padding item cursor-pointer align-items-center\"\r\n                 matRipple\r\n                 [routerLink]=\"item?.route\"\r\n                 [routerLinkActive]=\"'selected'\">\r\n                <div class=\"d-flex align-items-center justify-content-center selected-icon\"><i\r\n                    class=\" fas fa-circle font-size-7px\"></i></div>\r\n                <div class=\"text-truncate\">{{item?.name}}</div>\r\n                <div class=\"flex-grow-1\"></div>\r\n                <div class=\"status-icon px-3 font-size-8px\">\r\n                    <i class=\"fal fa-circle\"></i>\r\n                </div>\r\n            </div>\r\n        </ng-template>\r\n        <ng-template #defaultList>\r\n            <div class=\"d-flex side-padding item cursor-pointer align-items-center\"\r\n                 matRipple\r\n                 [class.selected]=\"selectedItem === item\"\r\n                 (click)=\"onSelect(item)\">\r\n                <div class=\"d-flex align-items-center justify-content-center selected-icon\"><i\r\n                    class=\" fas fa-circle font-size-7px\"></i></div>\r\n                <div class=\"text-truncate\">{{item?.name}}</div>\r\n                <div class=\"flex-grow-1\"></div>\r\n                <div class=\"status-icon px-3 font-size-8px\">\r\n                    <i class=\"fal fa-circle\"></i>\r\n                </div>\r\n            </div>\r\n        </ng-template>\r\n    </ng-container>\r\n</div>\r\n","import { AfterViewInit, Component, Directive, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NestedTreeControl } from '@angular/cdk/tree';\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\nimport { Router } from '@angular/router';\nimport _ from 'lodash';\nimport { IListItem, IListItemOption } from '../../../constants/interface';\nimport { ActionsConstant, ENUM_ACTION_KEYS } from '../../../constants/values/actions.constant';\nimport { MicsConstant } from '../../../constants';\nimport { BehaviorSubject, skipWhile, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Directive()\nexport class TqlTreeCore implements OnInit, AfterViewInit {\n    @Output() init: EventEmitter<NestedTreeControl<IListItem>> = new EventEmitter<NestedTreeControl<IListItem>>();\n\n    @Input() id: string;\n\n    /*===CUSTOM COLLAPSE ICON===*/\n    @Input() collapseClassName: string = 'fal fa-angle-right';\n    @Input() expandClassName: string = 'fal fa-angle-down';\n    @Input() alwaysShowExpandCollapseIcon: boolean = false;\n\n    /*===STYLE===*/\n    @Input() styles: TqlTreeCore.STYLES[] = [];\n    STYLES: typeof TqlTreeCore.STYLES = TqlTreeCore.STYLES;\n\n    /*===DATA===*/\n    treeControl = new NestedTreeControl<IListItem>((node) => node.children);\n    dataSource = new MatTreeNestedDataSource<IListItem>();\n\n    dropOnItem$ = new BehaviorSubject<IListItem | null>(null);\n\n    /**\n     * single level tree will not display collapse/expand icon\n     * @type {boolean}\n     */\n    isSingleLevelTree: boolean = true;\n\n    _data: IListItem[];\n    @Input()\n    set data(v: IListItem[]) {\n        this._data = v;\n        // check single level tree\n        this.isSingleLevelTree = _.every(this._data, (x: IListItem) => !x.children || !x?.children.length);\n\n        // render\n        setTimeout(() => {\n            this.render();\n        });\n    }\n\n    get data() {\n        return this._data;\n    }\n\n    // selectable\n    _selectable: boolean = true;\n    _readonly: boolean = false;\n\n    @Input()\n    set readonly(v: boolean) {\n        this._readonly = v;\n        this._selectable = !v;\n    }\n\n    get readonly() {\n        return this._readonly;\n    }\n\n    @Input()\n    set selectable(v: boolean) {\n        this._selectable = v;\n    }\n\n    get selectable() {\n        return this._selectable;\n    }\n\n    // select toggle\n    @Input() isToggleSelect: boolean = false;\n\n    /*===DRAG & DROP===*/\n    @Input() draggable: boolean = false;\n    @Input() dropIds: string[];\n    dragging: boolean = false;\n\n    // event\n    @Output() onEventChange: EventEmitter<TqlTreeCore.IEvent> = new EventEmitter<TqlTreeCore.IEvent>();\n    @Output() onSwapChange: EventEmitter<TqlTreeCore.ISwap> = new EventEmitter<TqlTreeCore.ISwap>();\n\n    nodeList: IListItem[] = [];\n    moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n    readonly treeTypes: typeof TqlTreeCore.ENUM_TYPES = TqlTreeCore.ENUM_TYPES;\n    treeType: TqlTreeCore.ENUM_TYPES = TqlTreeCore.ENUM_TYPES.DEFAULT;\n\n    constructor(private _Router: Router) {\n        this.moreAction.className += ' action show-on-hover small';\n        this.moreAction.iconClassName += ' font-size-18px';\n    }\n\n    ngOnInit() {}\n\n    ngAfterViewInit() {\n        setTimeout(() => {\n            // console.log('init');\n            this.generateTreeEvent();\n            this.init.emit(this.treeControl);\n        });\n    }\n\n    private generateTreeEvent() {\n        this.treeControl.expandAll = () => {\n            _.map(this.nodeList, (x) => {\n                this.treeControl.expand(x);\n                x.isExpanded = true;\n            });\n        };\n    }\n\n    /**\n     * render node\n     */\n    private render() {\n        this.nodeList = [];\n        this.massageNode(this._data);\n        this.dataSource.data = this._data;\n        this.treeControl.dataNodes = this._data;\n\n        // generate expand/collapse node\n        _.map(this.nodeList, (x) => {\n            if (!x.isExpanded) {\n                this.treeControl.collapse(x);\n            } else {\n                this.treeControl.expand(x);\n            }\n        });\n    }\n\n    /**\n     * check if node has child\n     * @param _\n     * @param node\n     * @returns {boolean}\n     */\n    hasChild = (_: number, node: IListItem) => !!node.children && node.children.length > 0;\n\n    /**\n     * on select node\n     * @param node\n     */\n    onSelectNode(node: IListItem) {}\n\n    /**\n     * add level to each node\n     * @param data\n     * @param level\n     * @param parent\n     */\n    massageNode(data: IListItem[], level: number = -1, parent: IListItem | null = null) {\n        level++;\n        _.map(data, (x: IListItem) => {\n            x.level = level;\n            this.nodeList.push(x);\n            // set parent\n            x.parent = parent;\n\n            // actions\n            _.map(x?.options, (y) => {\n                y.className += ' action';\n                if (y.showWhenHover) {\n                    y.className += ' show-on-hover';\n                }\n            });\n            // set isExpanded\n            if (_.isUndefined(x.isExpanded)) {\n                x.isExpanded = false;\n            }\n            // set draggable\n            if (this.draggable) {\n                if (_.isUndefined(x.draggable)) {\n                    x.draggable = true;\n                }\n            }\n            // selectable\n            if (this.selectable) {\n                if (_.isUndefined(x.selectable)) {\n                    x.selectable = true;\n                }\n            }\n            if (x?.children?.length) {\n                this.massageNode(x?.children, level, x);\n            }\n            if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n                x.onClick = () => {\n                    this.toggleCollapseExpand(x);\n                };\n            }\n        });\n    }\n\n    /*===DRAG & DROP EVENTS===*/\n    drop($event: CdkDragDrop<any, any>) {\n        // console.log('drop');\n        // console.log(this.id);\n        // console.log($event);\n        if ($event.container.id !== $event.previousContainer.id) {\n            // this.dropOnItem$.next($event?.item?.data);\n            const releaseData = $event?.item?.data;\n            let subscription = this.dropOnItem$\n                .pipe(\n                    skipWhile((x) => !x),\n                    first(),\n                )\n                .subscribe((rs) => {\n                    // console.log(rs);\n                    if (rs && releaseData && rs !== releaseData) {\n                        this.onSwapChange.emit({\n                            source: releaseData,\n                            destination: rs,\n                        });\n                    }\n                });\n            setTimeout(() => {\n                subscription.unsubscribe();\n                this.dropOnItem$.next(null);\n            }, 1000);\n        }\n    }\n\n    dropOnItem($event: any) {\n        // console.log('drop on item');\n        // console.log(this.id);\n        // console.log($event);\n        this.dropOnItem$.next($event);\n    }\n\n    dragHover(node) {\n        // console.log('dragHover');\n    }\n\n    dragHoverEnd() {\n        // console.log('dragHoverEnd');\n    }\n\n    dragStart() {\n        console.log('dragStart');\n        this.dragging = true;\n    }\n\n    dragEnd($event) {\n        console.log('dragEnd');\n        // console.log($event);\n        this.dragging = false;\n    }\n\n    dragRelease($event) {\n        console.log('dragRelease');\n        // console.log(this.id);\n        // console.log($event);\n        const releaseData = $event.source.data;\n        let subscription = this.dropOnItem$\n            .pipe(\n                skipWhile((x) => !x),\n                first(),\n            )\n            .subscribe((rs) => {\n                // console.log(rs);\n                if (rs && releaseData && rs !== releaseData) {\n                    this.onSwapChange.emit({\n                        source: releaseData,\n                        destination: rs,\n                    });\n                }\n            });\n        setTimeout(() => {\n            subscription.unsubscribe();\n            this.dropOnItem$.next(null);\n        }, 1000);\n    }\n\n    onDragMove() {\n        // console.log('move');\n    }\n\n    onEmitEvent(eventClass: TqlTreeCore.EventType, object: Object) {\n        const event = new eventClass();\n        _.map(object, (x, k) => {\n            event[k] = x;\n        });\n        this.onEventChange.emit(event);\n    }\n\n    toggleCollapseExpand(node) {\n        if (this.treeControl.isExpanded(node)) {\n            this.treeControl.collapse(node);\n            node.isExpanded = false;\n            this.onEmitEvent(TqlTreeCore.CollapseEvent, { node: node });\n        } else {\n            this.treeControl.expand(node);\n            node.isExpanded = true;\n            this.onEmitEvent(TqlTreeCore.ExpandEvent, { node: node });\n        }\n    }\n}\n\nexport namespace TqlTreeCore {\n    export enum STYLES {\n        ROW_HIGHLIGHT_WHEN_SELECT,\n    }\n\n    export enum ENUM_TYPES {\n        ROUTE = 'route',\n        DEFAULT = 'default',\n    }\n\n    export type EventType = new () => IEvent;\n\n    export interface IEvent {\n        node: IListItem;\n    }\n\n    export interface ISwap {\n        source: IListItem;\n        destination: IListItem;\n    }\n\n    export class ExpandEvent implements IEvent {\n        node: IListItem;\n    }\n\n    export class CollapseEvent implements IEvent {\n        node: IListItem;\n    }\n}\n\n@Component({\n    selector: 'tql-tree',\n    templateUrl: './tql-tree.component.html',\n    styleUrls: ['./tql-tree.component.scss'],\n})\nexport class TqlTreeComponent extends TqlTreeCore {\n    /*===SELECT===*/\n    @Output() selectedChanged: EventEmitter<IListItem | null> = new EventEmitter<IListItem | null>();\n    _selected: IListItem | null;\n    @Input()\n    set selected(v: IListItem | null) {\n        if (!_.isEqual(this._selected, v)) {\n            this._selected = v;\n        }\n    }\n\n    get selected() {\n        return this._selected;\n    }\n\n    constructor(_Router: Router) {\n        super(_Router);\n        this.treeType = TqlTreeCore.ENUM_TYPES.DEFAULT;\n    }\n\n    override onSelectNode(node: IListItem) {\n        if (node.selectable) {\n            if (this.isToggleSelect) {\n                this.selected = this.selected !== node ? node : null;\n            } else {\n                this.selected = node;\n            }\n        }\n        // console.log(this.selected);\n        this.selectedChanged.emit(this.selected);\n        if (node?.onClick) {\n            node?.onClick(this.selected);\n        }\n    }\n}\n\n@Component({\n    selector: 'tql-route-tree',\n    templateUrl: './tql-tree.component.html',\n    styleUrls: ['./tql-tree.component.scss'],\n})\nexport class TqlRouteTreeComponent extends TqlTreeCore {\n    constructor(_Router: Router) {\n        super(_Router);\n        this.treeType = TqlTreeCore.ENUM_TYPES.ROUTE;\n    }\n}\n","<div class=\"w-100 overflow-auto tql-tree-wrapper\"\r\n     [class.dragging]=\"dragging\"\r\n     [id]=\"id\"\r\n     cdkDropList\r\n     [cdkDropListSortingDisabled]=\"true\"\r\n     [cdkDropListConnectedTo]=\"dropIds\"\r\n     (cdkDropListDropped)=\"drop($event)\">\r\n    <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" class=\"\"\r\n              [class.row-highlight-when-select]=\"styles.includes(STYLES.ROW_HIGHLIGHT_WHEN_SELECT)\">\r\n        <!-- This is the tree node template for leaf nodes -->\r\n        <!-- There is inline padding applied to this node using styles.\r\n          This padding value depends on the mat-icon-button width. -->\r\n        <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle\r\n                       [class.cursor-move]=\"node?.draggable && !node?.disabled\"\r\n                       cdkDrag\r\n                       [cdkDragData]=\"node\"\r\n                       (cdkDragMoved)=\"onDragMove()\"\r\n                       [cdkDragDisabled]=\"!node?.draggable || node?.disabled\"\r\n                       (mouseenter)=\"dragHover(node)\"\r\n                       (mouseleave)=\"dragHoverEnd()\"\r\n                       (cdkDragStarted)=\"dragStart()\"\r\n                       (cdkDragReleased)=\"dragRelease($event)\"\r\n                       (mouseup)=\"dropOnItem(node)\"\r\n        >\r\n            <div *cdkDragPreview\r\n                 class=\"ml-2 p-2 color-white tql-tree-drag-preview-wrapper d-flex flex-gap-3 align-items-center mat-elevation-z2\">\r\n                <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\">\r\n                    <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\r\n                        <i class=\"{{node?.iconClassName}}\"></i>\r\n                    </div>\r\n                    <div class=\"text-truncate flex-grow-1\" [title]=\"node?.name\">{{node?.name}}</div>\r\n                </div>\r\n                <i class=\"fal fa-grip-lines-vertical\"></i>\r\n            </div>\r\n            <ng-container *ngTemplateOutlet=\"nodeTypeTemplate; context:{node:node,isLeaf:true};\"></ng-container>\r\n        </mat-tree-node>\r\n\r\n        <!-- This is the tree node template for expandable nodes -->\r\n        <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\"\r\n                              [class.cursor-move]=\"node?.draggable && !node?.disabled\"\r\n                              cdkDrag\r\n                              [cdkDragData]=\"node\"\r\n                              (cdkDragMoved)=\"onDragMove()\"\r\n                              [cdkDragDisabled]=\"!node?.draggable || node?.disabled\"\r\n                              (mouseenter)=\"dragHover(node)\"\r\n                              (mouseleave)=\"dragHoverEnd()\"\r\n                              (cdkDragStarted)=\"dragStart()\"\r\n                              (cdkDragReleased)=\"dragRelease($event)\"\r\n                              (mouseup)=\"dropOnItem(node)\">\r\n            <div *cdkDragPreview\r\n                 class=\"ml-2 p-2 color-white tql-tree-drag-preview-wrapper d-flex flex-gap-3 align-items-center mat-elevation-z2 multiple \">\r\n                <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\">\r\n                    <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\r\n                        <i class=\"{{node?.iconClassName}}\"></i>\r\n                    </div>\r\n                    <div class=\"text-truncate flex-grow-1\" [title]=\"node?.name\">{{node?.name}}</div>\r\n                </div>\r\n                <i class=\"fal fa-grip-lines-vertical\"></i>\r\n            </div>\r\n            <div class=\"mat-tree-node\" matRipple\r\n                 [class.disabled-half]=\"node?.disabled\"\r\n                 [class.selected]=\"selected === node\"\r\n            >\r\n                <div class=\"d-flex align-items-center w-100\">\r\n                    <div class=\"collapse-icon d-flex align-items-center cursor-pointer pl-2 pr-2\"\r\n                         [class.ml-2]=\"node?.level === 0\"\r\n                         (click)=\"toggleCollapseExpand(node)\">\r\n                        <i class=\"{{treeControl.isExpanded(node)?expandClassName:collapseClassName}}\"></i>\r\n                    </div>\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"nodeTypeTemplate; context:{node:node,isLeaf:false};\"></ng-container>\r\n                </div>\r\n            </div>\r\n            <!-- There is inline padding applied to this div using styles.\r\n                This padding value depends on the mat-icon-button width.  -->\r\n            <div [class.d-none]=\"!treeControl.isExpanded(node)\"\r\n                 [class.disabled-half]=\"node?.disabled\"\r\n                 class=\"branch\">\r\n                <ng-container matTreeNodeOutlet></ng-container>\r\n            </div>\r\n        </mat-nested-tree-node>\r\n    </mat-tree>\r\n\r\n    <ng-template #optionsTemplate let-node=\"node\">\r\n        <div class=\"actions-group\" *ngIf=\"node?.options?.length\">\r\n            <tql-action-bar [list]=\"node?.options\" [action]=\"moreAction\" [data]=\"node\"></tql-action-bar>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #draggableTemplate let-node=\"node\">\r\n        <div *ngIf=\"!readonly && node?.draggable && !node?.disabled\"\r\n             class=\"action drag-icon\"\r\n             [class.show-on-hover]=\"true\"\r\n        >\r\n            <button mat-icon-button\r\n                    class=\"small\"\r\n                    [matTooltip]=\"'Draggable'\">\r\n                <i class=\"fal fa-grip-lines-vertical\"></i>\r\n            </button>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #nodeTypeTemplate let-node=\"node\" let-isLeaf=\"isLeaf\">\r\n        <ng-container [ngSwitch]=\"true\">\r\n            <ng-container *ngSwitchCase=\"treeType === treeTypes.ROUTE\">\r\n                <div class=\"mat-tree-node\" matRipple\r\n                     [class.leaf]=\"isLeaf\"\r\n                     [class.cursor-pointer]=\"node?.route\"\r\n                     [class.clickable]=\"node?.route\"\r\n                     [class.disabled-half]=\"node?.disabled\"\r\n                     [routerLink]=\"node?.route\"\r\n                     [routerLinkActive]=\"node?.route?'selected':''\"\r\n                     [state]=\"node?.routeState\"\r\n                     [routerLinkActiveOptions]=\"node?.routerActiveOptions || {exact: false}\">\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"nodeTemplate; context:{node:node,isLeaf:isLeaf};\"></ng-container>\r\n                </div>\r\n            </ng-container>\r\n            <ng-container *ngSwitchCase=\"treeType === treeTypes.DEFAULT\">\r\n                <div class=\"mat-tree-node\" matRipple\r\n                     [class.leaf]=\"isLeaf\"\r\n                     [class.selected]=\"selected === node && node?.selectable\"\r\n                     [class.cursor-pointer]=\"node?.selectable || node?.onClick\"\r\n                     [class.clickable]=\"node?.selectable || node?.onClick\"\r\n                     (click)=\"onSelectNode(node)\"\r\n                     [class.disabled-half]=\"node?.disabled\">\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"nodeTemplate; context:{node:node,isLeaf:isLeaf};\"></ng-container>\r\n                </div>\r\n            </ng-container>\r\n        </ng-container>\r\n    </ng-template>\r\n\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"node\" let-isLeaf=\"isLeaf\">\r\n    <!--    <ng-container [ngSwitch]=\"true\">-->\r\n    <div class=\"d-flex align-items-center w-100 h-100\"\r\n    >\r\n        <div\r\n            class=\"collapse-icon d-flex align-items-center cursor-pointer opacity-30 {{isLeaf?'ml-2 pl-2 pr-2':''}}\"\r\n            *ngIf=\"isLeaf && node?.level === 0 && !(isSingleLevelTree && !alwaysShowExpandCollapseIcon)\">\r\n            <i class=\"{{collapseClassName}}\"></i>\r\n        </div>\r\n        <div *ngIf=\"isLeaf && node?.level === 0 && (isSingleLevelTree && !alwaysShowExpandCollapseIcon)\"\r\n             class=\"ml-2 pl-2 \">\r\n        </div>\r\n\r\n        <div class=\"d-flex align-items-center w-100 h-100 flex-gap-2\">\r\n            <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\r\n                <i class=\"{{node?.iconClassName}}\"></i>\r\n            </div>\r\n            <div class=\"title\" *ngIf=\"node?.title\">{{node?.title}}</div>\r\n            <div class=\"text-truncate name {{node?.className}}\"\r\n                 [title]=\"node?.name\"\r\n                 [innerHTML]=\"node?.name\">\r\n            </div>\r\n            <div class=\"flex-grow-1\"></div>\r\n            <div class=\"d-flex actions-group align-items-center\">\r\n                <ng-container *ngTemplateOutlet=\"draggableTemplate; context:{node:node}\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"optionsTemplate; context:{node:node}\"></ng-container>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <!--    </ng-container>-->\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'tql-image-card',\r\n    templateUrl: './tql-image-card.component.html',\r\n    styleUrls: ['./tql-image-card.component.scss'],\r\n})\r\nexport class TqlImageCardComponent implements OnInit {\r\n    @Input() urlImage: string = '';\r\n    @Input() titleString: string = '';\r\n    @Input() description: string = '';\r\n    @Input() isSelected: boolean = false;\r\n    @Output() isSelectedChange: EventEmitter<boolean> = new EventEmitter<boolean>(null as any);\r\n    @Output() onDetailClicked: EventEmitter<any> = new EventEmitter<any>(null as any);\r\n    @Output() onLivePreviewClicked: EventEmitter<any> = new EventEmitter<any>(null as any);\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    toggleSelect() {\r\n        if (!this.isSelected) {\r\n            this.isSelected = true;\r\n            this.isSelectedChange.emit(this.isSelected)\r\n        }\r\n    }\r\n\r\n    onDetailClick() {\r\n        this.onDetailClicked.emit(true);\r\n    }\r\n\r\n    onLivePreviewClick() {\r\n        this.onLivePreviewClicked.emit(true);\r\n    }\r\n}\r\n","<div class=\"image-card\">\r\n    <div class=\"img\" [ngStyle]=\"{ 'background-image': 'url(' + urlImage + ')'}\">\r\n        <div class=\"image-card-btn-group w-100 h-100 d-flex justify-content-center align-items-center\">\r\n            <button mat-button class=\"btn btn-sky-blue text-white\" (click)=\"onDetailClick()\">\r\n                <span class=\"font-size-14px\">Detail</span>\r\n            </button>\r\n            <button mat-button class=\"btn ml-20px btn-live-preview\" (click)=\"onLivePreviewClick()\">\r\n                <span class=\"font-size-14px\">Live Preview</span>\r\n            </button>\r\n        </div>\r\n    </div>\r\n    <div class=\"highlight-box pl-20px pr-20px pb-20px\">\r\n        <div class=\"highlight-header d-flex justify-content-between align-items-center\">\r\n            <div class=\"font-size-20px color-sky-blue text-capitalize\">{{ titleString }}</div>\r\n            <i class=\"fad fa-check-circle font-size-18px tick cursor-pointer\" (click)=\"toggleSelect()\" [class.active]=\"isSelected\"></i>\r\n        </div>\r\n        <div class=\"font-size-14px color-soft-blue font-weight-light highlight-des\">{{ description }}</div>\r\n    </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {IListItem} from '../../../constants';\r\n\r\n@Component({\r\n    selector: 'tql-tabs-header',\r\n    templateUrl: './tql-tabs-header.component.html',\r\n    styleUrls: ['./tql-tabs-header.component.scss']\r\n})\r\nexport class TqlTabsHeaderComponent implements OnInit {\r\n    @Input() list: IListItem[] = [];\r\n    @Input() activeItem: IListItem;\r\n    @Output() activeItemChange = new EventEmitter();\r\n\r\n    constructor() {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    onChangeTab(item: IListItem) {\r\n        this.activeItem = item;\r\n        if (item?.onClick) {\r\n            item?.onClick();\r\n        }\r\n        this.activeItemChange.emit(this.activeItem);\r\n    }\r\n}\r\n","<nav mat-tab-nav-bar class=\"tql-tabs-header-wrapper d-flex\">\r\n    <a mat-tab-link *ngFor=\"let item of list\"\r\n       class=\"flex-grow-1\"\r\n       (click)=\"onChangeTab(item)\"\r\n       [active]=\"activeItem == item\"> {{item?.name}} </a>\r\n</nav>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    TemplateRef,\r\n    ViewChildren,\r\n} from '@angular/core';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport { ActionsConstant, CodeEditorModel, ENUM_ACTION_KEYS, IListItemOption } from '../../../constants';\r\nimport * as _ from 'lodash';\r\nimport { TqlHelperService } from '../../../controllers/tql-helper/tql-helper.service';\r\n\r\n@Component({\r\n    selector: 'tql-code-editor',\r\n    templateUrl: './tql-code-editor.component.html',\r\n    styleUrls: ['./tql-code-editor.component.scss'],\r\n})\r\nexport class TqlCodeEditorComponent implements OnInit, AfterViewInit {\r\n    // actions\r\n    _closeActions: IListItemOption[] = [\r\n        {\r\n            name: 'Close',\r\n            onClick: () => {\r\n                this.onCloseItems(this.selected ? [this.selected] : []);\r\n            },\r\n        },\r\n        {\r\n            name: 'Close All',\r\n            onClick: () => {\r\n                this.onCloseItems(this.data);\r\n            },\r\n        },\r\n        {\r\n            name: 'Close Others',\r\n            onClick: () => {\r\n                this.onCloseItemOthers(this.selected);\r\n            },\r\n        },\r\n    ];\r\n    _actions: IListItemOption[] = [];\r\n    @Input()\r\n    set actions(v: IListItemOption[]) {\r\n        // console.log(TqlHelperService.getActionCompressGroup(v));\r\n        this._actions = v;\r\n    }\r\n\r\n    get actions() {\r\n        return TqlHelperService.getActionCompressGroup(this._actions)?.uncompressed;\r\n    }\r\n\r\n    get moreActions() {\r\n        return [...this._closeActions, ...TqlHelperService.getActionCompressGroup(this._actions)?.compressed];\r\n    }\r\n\r\n    @Input() hideDefaultActions: boolean = false;\r\n\r\n    @ViewChildren(CodemirrorComponent) editors: QueryList<CodemirrorComponent>;\r\n    @Input() saveAction: ($event: CodeEditorModel) => Promise<boolean>;\r\n\r\n    // TODO: harry - only show tab bar\r\n    @Input() showTabOnly: boolean = false;\r\n\r\n    _data: CodeEditorModel[];\r\n    /**\r\n     * list of code editors\r\n     * @param v\r\n     */\r\n    @Output() dataChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    @Input()\r\n    set data(v: CodeEditorModel[]) {\r\n        this._data = v;\r\n        this.setReadOnlyForTabs();\r\n    }\r\n\r\n    get data() {\r\n        return this._data;\r\n    }\r\n\r\n    @Input() hasHeading: boolean = true;\r\n    @Input() headingClassName: string;\r\n    @Input() multiple: boolean = false;\r\n    @Input() hintMenuTemplate: TemplateRef<any>;\r\n\r\n    // set true when websocket response\r\n    @Input() scrollToBottomWhenUpdate: boolean = false;\r\n\r\n    @Output() onChange: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() onInit: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    _readOnly: boolean;\r\n    /**\r\n     * set readonly\r\n     * @param v\r\n     */\r\n    @Input()\r\n    set readOnly(v: boolean) {\r\n        this._readOnly = v;\r\n        this.setReadOnlyForTabs();\r\n    }\r\n\r\n    get readOnly() {\r\n        return this._readOnly;\r\n    }\r\n\r\n    _selected: CodeEditorModel | null;\r\n    @Input()\r\n    set selected(value) {\r\n        const self = this;\r\n        this._selected = value;\r\n\r\n        // need this one to make sure editor has component\r\n        this.massageEditor();\r\n\r\n        // scroll bottom when websocket message updated\r\n        if (this.scrollToBottomWhenUpdate) {\r\n            setTimeout(() => {\r\n                self._selected?.editorComponent?.codeMirror?.focus();\r\n                self._selected?.editorComponent?.codeMirror?.setCursor(\r\n                    self._selected?.editorComponent?.codeMirror?.lineCount(),\r\n                    0,\r\n                );\r\n            });\r\n        } else {\r\n            // set old cursor\r\n            setTimeout(() => {\r\n                self._selected?.editorComponent?.codeMirror?.focus();\r\n                self._selected?.editorComponent?.codeMirror?.setCursor(\r\n                    self._selected?.editorComponent?.codeMirror?.getCursor(),\r\n                );\r\n            });\r\n        }\r\n    }\r\n\r\n    get selected() {\r\n        return this._selected;\r\n    }\r\n\r\n    questionIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.INFO]);\r\n    saveIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.SAVE]);\r\n    formatIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.FORMAT]);\r\n    moreIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\r\n    closeIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.CLOSE]);\r\n    unsavedIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.EDIT]);\r\n\r\n    _mode: string;\r\n    @Input()\r\n    set mode(v: string) {\r\n        // this._mode = v;\r\n        // this.optionCodeMirror.mode = this._mode;\r\n    }\r\n\r\n    constructor() {\r\n        this.questionIcon.iconClassName += ' font-size-18px color-white';\r\n        this.saveIcon.iconClassName += ' font-size-18px color-white';\r\n        this.saveIcon.onClick = () => {\r\n            if (!!this.selected) {\r\n                this.selected.save();\r\n            }\r\n            this.emitEvent(TqlCodeEditorComponent.SaveEvent);\r\n        };\r\n        this.formatIcon.iconClassName += ' font-size-18px color-white';\r\n        this.formatIcon.onClick = () => {\r\n            this.onFormat();\r\n        };\r\n        this.moreIcon.iconClassName += ' font-size-18px color-white';\r\n        this.closeIcon.iconClassName += ' font-size-12px color-soft-blue';\r\n        this.closeIcon.className += ' small';\r\n        this.closeIcon.onClick = (item: CodeEditorModel) => {\r\n            this.onCloseItems([item]);\r\n        };\r\n\r\n        // unsaved\r\n        this.unsavedIcon.name = 'Un-saved';\r\n        this.unsavedIcon.iconClassName += ' font-size-10px color-soft-blue';\r\n        this.unsavedIcon.className += ' small';\r\n    }\r\n\r\n    ngOnInit(): void {}\r\n\r\n    ngAfterViewInit() {\r\n        setTimeout(() => {\r\n            this.massageEditor();\r\n            this.onInit.emit();\r\n        }, 150);\r\n    }\r\n\r\n    private setReadOnlyForTabs() {\r\n        _.map(this.data, (x) => {\r\n            x.readOnly = this.readOnly;\r\n        });\r\n    }\r\n\r\n    massageEditor() {\r\n        if (!!this.editors) {\r\n            this.editors.forEach((x) => {\r\n                const found = _.find(this.data, (y) => y.getId() === x.name);\r\n                if (!!found) {\r\n                    x!.codeMirror!.refresh();\r\n                    found.editorComponent = x;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    codemirrorChange(text: string) {\r\n        this.emitEvent(TqlCodeEditorComponent.ContentChangeEvent);\r\n    }\r\n\r\n    onSelectTab(item: CodeEditorModel) {\r\n        this.selected = item;\r\n        this.emitEvent(TqlCodeEditorComponent.EditorChangeEvent);\r\n    }\r\n\r\n    onFormat() {\r\n        if (this.selected) {\r\n            this.selected.format();\r\n        }\r\n    }\r\n\r\n    emitEvent(eventClass: TqlCodeEditorComponent.EventType) {\r\n        const event = new eventClass();\r\n        if (this.selected) {\r\n            event.editor = this.selected as CodeEditorModel;\r\n        }\r\n        this.onChange.emit(event);\r\n    }\r\n\r\n    onCloseItems(codeEditorModels: CodeEditorModel[]) {\r\n        console.log('close');\r\n        _.remove(this._data as CodeEditorModel[], (x) => codeEditorModels.includes(x));\r\n        if (this.selected && codeEditorModels.includes(this.selected)) {\r\n            if (this._data?.length) {\r\n                this.selected = this._data[0];\r\n            } else {\r\n                this.selected = null;\r\n            }\r\n            this.dataChange.emit(this.data);\r\n        }\r\n\r\n        this.emitEvent(TqlCodeEditorComponent.CloseEvent);\r\n    }\r\n\r\n    onCloseItemOthers(codeEditorModel: CodeEditorModel | null) {\r\n        if (codeEditorModel) {\r\n            this.onCloseItems(_.filter(this._data, (x) => x !== codeEditorModel));\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace TqlCodeEditorComponent {\r\n    export type EventType = new () => IEvent;\r\n\r\n    export interface IEvent {\r\n        editor: CodeEditorModel;\r\n    }\r\n\r\n    export class CloseEvent implements IEvent {\r\n        editor: CodeEditorModel;\r\n    }\r\n\r\n    export class SaveEvent implements IEvent {\r\n        editor: CodeEditorModel;\r\n    }\r\n\r\n    export class EditorChangeEvent implements IEvent {\r\n        editor: CodeEditorModel;\r\n    }\r\n\r\n    export class ContentChangeEvent implements IEvent {\r\n        editor: CodeEditorModel;\r\n    }\r\n}\r\n","<div class=\"w-100 h-100 tql-code-editor-wrapper\"\r\n     [class.has-heading]=\"hasHeading\">\r\n    <div class=\"heading d-flex align-items-center {{headingClassName}}\" *ngIf=\"hasHeading\">\r\n        <div class=\"flex-grow-1 tab-group d-flex overflow-hidden\">\r\n            <nav mat-tab-nav-bar class=\"w-100\">\r\n                <a mat-tab-link\r\n                   class=\"d-flex tab align-items-center flex-gap-1\"\r\n                   *ngFor=\"let item of _data\"\r\n                   (click)=\"onSelectTab(item)\"\r\n                   [active]=\"selected === item\">\r\n                    <div class=\"px-2 code-mode text-uppercase {{item?.mode}}\">{{item?.mode}}</div>\r\n                    <div class=\"text-truncate flex-grow-1\">{{item?.name}}</div>\r\n                    <div class=\"d-flex align-items-center\">\r\n                        <div\r\n                            *ngIf=\"item?.hasUnsaved()\"\r\n                            [matTooltip]=\"unsavedIcon?.name\"\r\n                            class=\"px-1\">\r\n                            <i class=\"{{unsavedIcon?.iconClassName}}\"></i>\r\n                        </div>\r\n                        <button mat-icon-button\r\n                                (click)=\"closeIcon.onClick(item);$event.stopPropagation();\"\r\n                                [matTooltip]=\"closeIcon?.name\"\r\n                                class=\"{{closeIcon?.className}}\">\r\n                            <i class=\"{{closeIcon?.iconClassName}}\"></i>\r\n                        </button>\r\n                    </div>\r\n                </a>\r\n            </nav>\r\n        </div>\r\n        <div class=\"d-flex\">\r\n            <div class=\"d-flex\">\r\n                <button mat-icon-button *ngFor=\"let item of actions\"\r\n                        (click)=\"item?.onClick()\"\r\n                        [matTooltip]=\"item?.name\"\r\n                        class=\"{{item?.className}}\">\r\n                    <i class=\"{{item?.iconClassName}}\"></i>\r\n                </button>\r\n                <button mat-icon-button\r\n                        [matMenuTriggerFor]=\"moreMenu\"\r\n                        [matTooltip]=\"moreIcon?.name\"\r\n                        class=\"{{moreIcon?.className}}\">\r\n                    <i class=\"{{moreIcon?.iconClassName}}\"></i>\r\n                </button>\r\n                <mat-menu #moreMenu=\"matMenu\" backdropClass=\"mat-menu-default\">\r\n                    <button mat-menu-item *ngFor=\"let item of moreActions\"\r\n                            (click)=\"item?.onClick()\"\r\n                            [class.disabled-half]=\"!selected\">\r\n                        <i *ngIf=\"item?.iconClassName\" class=\"{{item?.iconClassName}}\"></i>\r\n                        <span>{{item?.name}}</span>\r\n                    </button>\r\n                </mat-menu>\r\n                <div class=\"divider pr-2\"></div>\r\n            </div>\r\n            <div class=\"d-flex\" *ngIf=\"!selected?.template && !hideDefaultActions\">\r\n                <ng-container>\r\n                    <button mat-icon-button *ngFor=\"let item of [saveIcon]\"\r\n                            [class.d-none]=\"!selected\"\r\n                            [class.disabled-half]=\"!selected?.hasUnsaved()\"\r\n                            (click)=\"item?.onClick()\"\r\n                            [matTooltip]=\"item?.name\"\r\n                            class=\"{{item?.className}}\">\r\n                        <i class=\"{{item?.iconClassName}}\"></i>\r\n                    </button>\r\n                    <button mat-icon-button\r\n                            (click)=\"formatIcon?.onClick()\"\r\n                            [class.d-none]=\"!selected\"\r\n                            [class.disabled-half]=\"selected?.isEmpty()\"\r\n                            [matTooltip]=\"formatIcon?.name\"\r\n                            class=\"{{formatIcon?.className}} disabled-half\">\r\n                        <i class=\"{{formatIcon?.iconClassName}}\"></i>\r\n                    </button>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"hintMenuTemplate\">\r\n                    <button mat-icon-button\r\n                            (click)=\"questionIcon?.onClick()\"\r\n                            [class.d-none]=\"!selected\"\r\n                            [class.disabled-half]=\"selected?.isEmpty() && !hintMenu\"\r\n                            [matTooltip]=\"questionIcon?.name\"\r\n                            [matMenuTriggerFor]=\"hintMenu\"\r\n                            class=\"{{questionIcon?.className}}\">\r\n                        <i class=\"{{questionIcon?.iconClassName}}\"></i>\r\n                    </button>\r\n                    <mat-menu #hintMenu=\"matMenu\" backdropClass=\"mat-menu-hint\">\r\n                        <ng-container *ngTemplateOutlet=\"hintMenuTemplate\"></ng-container>\r\n                    </mat-menu>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"content\" *ngIf=\"!showTabOnly\">\r\n        <ng-container *ngIf=\"_data?.length; else noData\">\r\n            <div *ngFor=\"let item of _data\" class=\"h-100\"\r\n                 [class.d-none]=\"item !== selected\">\r\n                <ng-container *ngIf=\"!item?.template\">\r\n                    <ngx-codemirror\r\n                        [name]=\"item?.getId()\"\r\n                        class=\"w-100 h-100\"\r\n                        [formControl]=\"item?.content\"\r\n                        [options]=\"item?.editorOptions\"\r\n                        (ngModelChange)=\"codemirrorChange($event)\"\r\n                    ></ngx-codemirror>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"item?.template && item === selected\">\r\n                    <ng-container\r\n                        *ngTemplateOutlet=\"item?.template;context:{item:selected}\"></ng-container>\r\n                </ng-container>\r\n            </div>\r\n        </ng-container>\r\n        <ng-template #noData>\r\n            <div class=\"d-flex justify-content-center align-items-center h-100 font-size-100px\">\r\n                <i class=\"fad fa-code empty-icon\"></i>\r\n            </div>\r\n        </ng-template>\r\n    </div>\r\n</div>\r\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n} from '@angular/core';\nimport { DefaultComponent, TqlUtilsService } from 'tql-service';\nimport { ActionsConstant, ENUM_ACTION_KEYS, IListItem, IListItemOption, MicsConstant } from '../../../constants';\nimport _ from 'lodash';\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../controllers';\nimport { TqlSimpleListComponent } from '../tql-simple-list/tql-simple-list.component';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n    selector: 'tql-nested-list',\n    templateUrl: './tql-nested-list.component.html',\n    styleUrls: ['./tql-nested-list.component.scss'],\n})\nexport class TqlNestedListComponent extends DefaultComponent implements OnInit, AfterViewInit {\n    @ViewChildren('myItems') elements: QueryList<ElementRef>;\n    @ViewChildren('contentTemplate') contentTemplate: QueryList<TemplateRef<any>>;\n    @Input() nameTemplate: TemplateRef<any>;\n    @Input() collapsingIconPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n    @Input() listStyle: TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE.NORMAL;\n    @Input() hasConnectedLines: boolean = false;\n    private _list: IListItem[] = [];\n    @Input()\n    set list(v: IListItem[]) {\n        setTimeout(() => {\n            this.massageList(v);\n        });\n    }\n\n    get list(): IListItem[] {\n        return this._list;\n    }\n\n    @Output() init: EventEmitter<TqlNestedListComponent.IControl> = new EventEmitter<TqlNestedListComponent.IControl>();\n\n    // @Input() level: number = 1000;\n    @Input() activeClassName: string = '';\n    @Input() deepLevel: number = 0;\n    @Input() nestedLeftPadding: number = 30;\n\n    @Input() inNavbar: boolean = false;\n\n    @Input() offsetInNavbar: number = 30;\n    @Input() offsetNotInNavbar: number = 16;\n\n    // actions\n    @Input()\n    moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n    navBarPreview: NavbarPreview | null;\n    showNavBarPreview: NavbarPreview | null;\n    // leftOffset: number = 0;\n\n    ENUM_HANDLER_POSITION: typeof TqlSimpleListComponent.ENUM_HANDLER_POSITION =\n        TqlSimpleListComponent.ENUM_HANDLER_POSITION;\n\n    selectedNode: IListItem;\n\n    constructor(private _TqlNavbarControllerService: TqlNavbarControllerService) {\n        super();\n        this.addSubscribes(\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\n                // console.log(rs);\n                // if (!rs) {\n                //     this.showNavBarPreview = this.navBarPreview;\n                // } else {\n                //     this.showNavBarPreview = null;\n                // }\n            }),\n        );\n    }\n\n    ngOnInit(): void {}\n\n    ngAfterViewInit() {\n        // console.log(this.contentTemplate);\n        // TODO\n        setTimeout(() => {\n            // this.navBarPreview = {\n            //     template: this.contentTemplate,\n            //     element: this.contentTemplate.elementRef.nativeElement\n            // };\n            // this.showNavBarPreview = this.navBarPreview;\n        });\n    }\n\n    massageList(v: IListItem[]) {\n        const data = v;\n        _.map(data || [], (x: IListItem) => {\n            // id\n            x.id = uuidv4();\n\n            if (_.isUndefined(x.isCollapsed)) {\n                x.isCollapsed = false;\n            }\n            if (x?.children?.length && !x?.hideExpandedChildren) {\n                const option = {\n                    name: 'Collapse',\n                    type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND,\n                    iconClassName:\n                        'fal fa-angle-up' +\n                        (this.listStyle === TqlSimpleListComponent.ENUM_STYLE.SMALL\n                            ? ' ' + TqlNestedListComponent.ENUM_CSS_CLASS.SMALL_ICON_SIZE\n                            : ''),\n                    isNotCompressed: true,\n                    onClick: () => {\n                        this.toggleCollapse(x, option);\n                    },\n                };\n\n                if (\n                    !x.options?.length ||\n                    x.options?.filter((x) => x?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND)?.length === 0\n                ) {\n                    x.options = [...(x.options || []), option];\n                }\n\n                // if onclick is MicsConstant.COLLAPSE_EXPAND_FUNCTION, change it to toggleCollapse action\n                if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n                    x.onClick = () => {\n                        this.toggleCollapse(x, option);\n                    };\n                }\n\n                this.toggleCollapse(x, option, x.isCollapsed);\n            }\n\n            // left padding\n            x.leftPadding = !!x.leftPadding\n                ? x.leftPadding\n                : (this.inNavbar\n                      ? this.offsetInNavbar\n                      : this.offsetNotInNavbar + this.nestedLeftPadding * this.deepLevel) +\n                  (this.deepLevel !== 0 &&\n                  !x?.children?.length &&\n                  this.collapsingIconPosition === this.ENUM_HANDLER_POSITION.LEFT\n                      ? this.nestedLeftPadding\n                      : 0);\n        });\n\n        this._list = data;\n\n        this.init.emit({\n            list: this._list,\n            collapseAll: () => {\n                this.collapseAll();\n            },\n            expandAll: () => {\n                this.expandAll();\n            },\n            select: (node: IListItem) => {\n                this.select(node);\n            },\n        });\n\n        // offset\n        // setTimeout(() => {\n        //     this.leftOffset = this.getOffset() + this.nestedLeftPadding * this.deepLevel;\n        // });\n    }\n\n    select(node: IListItem) {\n        if (this.selectedNode) {\n            this.selectedNode.active = false;\n        }\n        this.selectedNode = node;\n        this.selectedNode.active = true;\n    }\n\n    collapseAll() {\n        TqlUtilsService.traversalTree(this._list, (x) => {\n            if (x?.children?.length) {\n                const collapseOption = _.find(x.options, (y) => y?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND);\n                if (!!collapseOption) {\n                    this.toggleCollapse(x, collapseOption, true);\n                }\n            }\n        });\n    }\n\n    expandAll() {\n        TqlUtilsService.traversalTree(this._list, (x) => {\n            if (x?.children?.length) {\n                const collapseOption = _.find(x.options, (y) => y?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND);\n                if (!!collapseOption) {\n                    this.toggleCollapse(x, collapseOption, false);\n                }\n            }\n        });\n    }\n\n    toggleCollapse(item: IListItem, option: IListItem, isCollapsed?: boolean) {\n        if (typeof isCollapsed == 'boolean') {\n            item.isCollapsed = isCollapsed;\n        } else {\n            item.isCollapsed = !item.isCollapsed;\n        }\n        option.name = item.isCollapsed ? 'Expand' : 'Collapse';\n        option.iconClassName = TqlUtilsService.replaceAll(option.iconClassName, 'fal fa-angle-down', '').trim();\n        option.iconClassName = TqlUtilsService.replaceAll(option.iconClassName, 'fal fa-angle-up', '').trim();\n        option.iconClassName += item.isCollapsed ? ' fal fa-angle-down' : ' fal fa-angle-up';\n    }\n\n    // getOffset() {\n    //     return this.inNavbar ? this.offsetInNavbar : this.offsetNotInNavbar;\n    // }\n\n    onShowContent($event: MouseEvent, index: number) {\n        // console.log($event);\n        // console.log(($event.target as Element)?.parentElement);\n        // console.log(this.elements);\n        // console.log(this.elements.get(index));\n        const element = this.elements.get(index);\n        const template = this.contentTemplate.get(index);\n        // console.log(element, template);\n        // if (this.inNavbar && !!newElement) {\n        //     if (this.navBarPreview) {\n        //         this.navBarPreview.element = newElement?.nativeElement as unknown as Element;\n        //     }\n        this.navBarPreview = {\n            template: template as unknown as TemplateRef<any>,\n            element: element?.nativeElement as unknown as Element,\n        };\n        this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(this.navBarPreview);\n        // }\n    }\n}\n\nexport namespace TqlNestedListComponent {\n    export interface IControl {\n        list: IListItem[];\n        collapseAll: Function;\n        expandAll: Function;\n        select: Function;\n    }\n\n    export enum ENUM_CSS_CLASS {\n        SMALL_ICON_SIZE = 'font-size-10px',\n    }\n}\n","<!--<ng-container [ngSwitch]=\"level\">-->\r\n<!--    <ng-container *ngSwitchCase=\"1\">-->\r\n<!--        <div *ngFor=\"let item of list\">-->\r\n<!--            <tql-simple-list-->\r\n<!--                class=\"level-{{deepLevel}}\"-->\r\n<!--                [listStyle]=\"listStyle\"-->\r\n<!--                [items]=\"[item]\"-->\r\n<!--                [collapsingIconPosition]=\"collapsingIconPosition\"-->\r\n<!--                [inNavbar]=\"inNavbar\"-->\r\n<!--                [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"-->\r\n<!--                [nameTemplate]=\"nameTemplate\"></tql-simple-list>-->\r\n<!--        </div>-->\r\n<!--    </ng-container>-->\r\n<!--    <ng-container *ngSwitchDefault>-->\r\n<div *ngFor=\"let item of list;let $index=index;\">\r\n    <!--not in navbar-->\r\n    <ng-container *ngIf=\"!inNavbar\">\r\n        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n    </ng-container>\r\n    <!--in navbar-->\r\n    <ng-container *ngIf=\"inNavbar\">\r\n        <div class=\"show-on-collapsed\">\r\n            <div *ngIf=\"item?.children?.length\"\r\n                 (click)=\"onShowContent($event,$index)\"\r\n                 #myItems>\r\n                <tql-simple-list\r\n                    class=\"level-{{deepLevel}}\"\r\n                    [activeClassName]=\"activeClassName\"\r\n                    [level]=\"deepLevel\"\r\n                    [listStyle]=\"listStyle\"\r\n                    [items]=\"[item]\"\r\n                    [collapsingIconPosition]=\"collapsingIconPosition\"\r\n                    [inNavbar]=\"inNavbar\"\r\n                    [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\r\n                    [moreAction]=\"moreAction\"\r\n                    [hasConnectedLines]=\"hasConnectedLines\"\r\n                    [nameTemplate]=\"nameTemplate\"></tql-simple-list>\r\n                <div class=\"d-flex has-group-hint align-items-center\">\r\n                    <i class=\"fal fa-angle-right font-size-12px \"></i>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!item?.children?.length\">\r\n                <tql-simple-list\r\n                    class=\"level-{{deepLevel}}\"\r\n                    [activeClassName]=\"activeClassName\"\r\n                    [level]=\"deepLevel\"\r\n                    [listStyle]=\"listStyle\"\r\n                    [items]=\"[item]\"\r\n                    [collapsingIconPosition]=\"collapsingIconPosition\"\r\n                    [inNavbar]=\"inNavbar\"\r\n                    [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\r\n                    [moreAction]=\"moreAction\"\r\n                    [hasConnectedLines]=\"hasConnectedLines\"\r\n                    [nameTemplate]=\"nameTemplate\"></tql-simple-list>\r\n            </div>\r\n        </div>\r\n        <div class=\"hide-on-collapsed\">\r\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n        </div>\r\n    </ng-container>\r\n    <ng-template #contentTemplate>\r\n        <tql-simple-list\r\n            class=\"level-{{deepLevel}}\"\r\n            [activeClassName]=\"activeClassName\"\r\n            [level]=\"deepLevel\"\r\n            [listStyle]=\"listStyle\"\r\n            [items]=\"[item]\"\r\n            [collapsingIconPosition]=\"collapsingIconPosition\"\r\n            [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\r\n            [moreAction]=\"moreAction\"\r\n            [hasConnectedLines]=\"hasConnectedLines\"\r\n            [nameTemplate]=\"nameTemplate\"></tql-simple-list>\r\n        <tql-nested-list\r\n            *ngIf=\"item?.children?.length\"\r\n            [listStyle]=\"listStyle\"\r\n            [collapsingIconPosition]=\"collapsingIconPosition\"\r\n            [nestedLeftPadding]=\"nestedLeftPadding\"\r\n            [class.d-none]=\"!(item?.children && !item?.isCollapsed && !item?.hideExpandedChildren)\"\r\n            [list]=\"item?.children\"\r\n            [deepLevel]=\"deepLevel + 1\"\r\n            [moreAction]=\"moreAction\"\r\n            [hasConnectedLines]=\"hasConnectedLines\"\r\n            [nameTemplate]=\"nameTemplate\"></tql-nested-list>\r\n    </ng-template>\r\n</div>\r\n<!--    </ng-container>-->\r\n<!--</ng-container>-->\r\n\r\n","import {\r\n    Component,\r\n    ComponentFactoryResolver,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    Type,\r\n    ViewChild,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TqlDynamicComponentHostDirective } from '../../../directives/tql-dynamic-component-host/tql-dynamic-component-host.directive';\r\nimport { IDynamicComponent, IDynamicItem } from '../../../constants';\r\nimport _ from 'lodash';\r\nimport { timer } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'tql-dynamic-component',\r\n    templateUrl: './tql-dynamic-component.component.html',\r\n    styleUrls: ['./tql-dynamic-component.component.scss'],\r\n})\r\nexport class TqlDynamicComponentComponent implements OnInit {\r\n    @ViewChild(TqlDynamicComponentHostDirective) viewHost: TqlDynamicComponentHostDirective;\r\n\r\n    // item\r\n    private _item: IDynamicItem;\r\n    @Input()\r\n    set item(v: IDynamicItem) {\r\n        this._item = v;\r\n        setTimeout(() => {\r\n            this.addComponent();\r\n        });\r\n    }\r\n\r\n    get item() {\r\n        return this._item;\r\n    }\r\n\r\n    @Output() eventChanged: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    constructor(\r\n        private _ViewContainerRef: ViewContainerRef,\r\n        private _Injector: Injector,\r\n        private _ComponentFactoryResolver: ComponentFactoryResolver,\r\n    ) {}\r\n\r\n    ngOnInit(): void {}\r\n\r\n    addComponent() {\r\n        if (this.item && this.viewHost) {\r\n            const componentFactory = this._ComponentFactoryResolver.resolveComponentFactory(this.item.component);\r\n\r\n            const viewContainerRef = this.viewHost._ViewContainerRef;\r\n            viewContainerRef.clear();\r\n\r\n            const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n            // update data for instance\r\n            const instance = <IDynamicComponent>componentRef.instance;\r\n\r\n            _.map(this.item.data, (x, k) => {\r\n                instance[k] = x;\r\n            });\r\n\r\n            if (instance.onDataChange) {\r\n                instance.onDataChange();\r\n            }\r\n\r\n            if (instance.eventChanged) {\r\n                instance.eventChanged.subscribe((rs) => {\r\n                    // console.log(rs);\r\n                    this.eventChanged.emit(rs);\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n","<ng-template libTqlDynamicComponentHost></ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IListItem } from '../../../constants';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DefaultComponent } from 'tql-service';\n\n@Component({\n    selector: 'tql-progress-list',\n    templateUrl: './tql-progress-list.component.html',\n    styleUrls: ['./tql-progress-list.component.scss'],\n})\nexport class TqlProgressListComponent extends DefaultComponent implements OnInit {\n    @Input() inNavbar: boolean = false;\n    private _title: IListItem;\n    private _children: IListItem[];\n\n    @Input()\n    set data(v: IListItem) {\n        if (!!v) {\n            this._title = v;\n            this.idleClass = this._title?.iconClassName || '';\n            this.generateStatusClass();\n            this._children = v?.children || [];\n        }\n    }\n\n    get title(): IListItem {\n        return this._title;\n    }\n\n    get children(): IListItem[] {\n        return this._children;\n    }\n\n    progressStatus: TqlProgressListComponent.ProgressStatus = new TqlProgressListComponent.ProgressStatus();\n\n    @Output() init: EventEmitter<TqlProgressListComponent.ProgressStatus> =\n        new EventEmitter<TqlProgressListComponent.ProgressStatus>();\n\n    currentClass: string = '';\n    idleClass: string = '';\n    pendingClass: string = 'fa-spinner fal fa-pulse font-size-16px';\n    completedClass: string = 'fas fa-box-check font-size-16px color-shamrock';\n\n    constructor() {\n        super();\n    }\n\n    ngOnInit(): void {\n        this.init.emit(this.progressStatus);\n        this.addSubscribes(\n            this.progressStatus.progress$.subscribe((rs) => {\n                this.generateStatusClass();\n            }),\n        );\n    }\n\n    generateStatusClass() {\n        let statusClass = '';\n        switch (this.progressStatus.progress$.value) {\n            case TqlProgressListComponent.ENUM_STATUSES.IDLE:\n                statusClass = this.idleClass;\n                break;\n            case TqlProgressListComponent.ENUM_STATUSES.PENDING:\n                statusClass = this.pendingClass;\n                break;\n            case TqlProgressListComponent.ENUM_STATUSES.COMPLETED:\n                statusClass = this.completedClass;\n                break;\n        }\n        if (this.title?.iconClassName) {\n            this.title.iconClassName = statusClass;\n        }\n    }\n}\n\nexport namespace TqlProgressListComponent {\n    export enum ENUM_STATUSES {\n        IDLE,\n        PENDING,\n        COMPLETED,\n    }\n\n    export class ProgressStatus {\n        progress$: BehaviorSubject<ENUM_STATUSES> = new BehaviorSubject<ENUM_STATUSES>(ENUM_STATUSES.IDLE);\n\n        constructor() {}\n\n        setProgress(observable: Observable<any>) {\n            this.progress$.next(ENUM_STATUSES.PENDING);\n            observable.pipe(take(1)).subscribe((rs) => {\n                this.progress$.next(rs ? ENUM_STATUSES.COMPLETED : ENUM_STATUSES.IDLE);\n            });\n        }\n    }\n}\n","<tql-collapse-group [data]=\"title\" [inNavbar]=\"inNavbar\">\n    <div class=\"d-flex flex-column w-100 progress-list-wrapper\"\n         [class.in-navbar]=\"inNavbar\">\n        <div *ngFor=\"let item of children; let $last = last\" class=\"position-relative w-100 progress-item\"\n             routerLinkActive=\"active\"\n             [routerLink]=\"item?.route\"\n             [queryParams]=\"item?.routeQueryParams || {}\"\n             [class.completed]=\"item?.active\">\n            <div matRipple class=\"d-flex flex-gap-3 align-items-center h-100 cursor-pointer\">\n                <div class=\"{{inNavbar?'pl-30px':'pl-2'}}\"><i class=\"{{item?.active?'fas':'fal'}} fa-arrow-circle-right icon\"></i>\n                </div>\n                <div class=\"flex-grow-1 text\">{{item?.name}}</div>\n            </div>\n            <ng-container *ngIf=\"!$last\">\n                <ng-container *ngTemplateOutlet=\"dotLineTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    </div>\n</tql-collapse-group>\n\n<ng-template #dotLineTemplate>\n    <div class=\"line\">\n        <svg width=\"10px\" height=\"30px\" viewBox=\"0 0 10 30\">\n            <line x1=\"5\" y1=\"5\" x2=\"5\" y2=\"40\" stroke=\"#5184AF\" stroke-width=\"2\"\n                  stroke-linecap=\"round\" stroke-dasharray=\"0, 7\"></line>\n        </svg>\n    </div>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n    selector: 'tql-table',\n    templateUrl: './tql-table.component.html',\n    styleUrls: ['./tql-table.component.scss'],\n})\nexport class TqlTableComponent implements OnInit {\n    constructor() {}\n\n    ngOnInit(): void {}\n}\n","<p>tql-table works!</p>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActionsConstant, ENUM_ACTION_KEYS, IListItem, IListItemOption, MicsConstant } from '../../../constants';\nimport _ from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n    selector: 'tql-listed-tree',\n    templateUrl: './tql-listed-tree.component.html',\n    styleUrls: ['./tql-listed-tree.component.scss'],\n})\nexport class TqlListedTreeComponent implements OnInit {\n    @Output() init: EventEmitter<TqlListedTreeComponent.ITreeControl> =\n        new EventEmitter<TqlListedTreeComponent.ITreeControl>();\n\n    @Input() id: string;\n\n    /*===DRAG & DROP===*/\n    @Input() draggable: boolean = false;\n    @Input() dropIds: string[];\n    dragging: boolean = false;\n\n    nodeList: IListItem[] = [];\n\n    /**\n     * offset for each level\n     * @type {number}\n     */\n    @Input() levelOffset: number = 30;\n\n    /**\n     * selectable\n     * @param v\n     */\n    _selectable: boolean = true;\n    @Input()\n    set selectable(v: boolean) {\n        this._selectable = v;\n    }\n\n    get selectable() {\n        return this._selectable;\n    }\n\n    /**\n     * tree's nodes\n     * @type {IListItem[]}\n     * @private\n     */\n    _data: IListItem[];\n    isSingleLevelTree: boolean = true;\n\n    @Input()\n    set data(v: IListItem[]) {\n        this._data = v;\n        // empty\n        if (!this._data?.length) {\n            this.init.emit(this.toTreeControl());\n            return;\n        }\n        // check single level tree\n        this.isSingleLevelTree = _.every(this._data, (x: IListItem) => !x.children || !x?.children.length);\n\n        // massage node\n        this.massageNode(this._data);\n\n        // render\n        setTimeout(() => {\n            this.render();\n            this.init.emit(this.toTreeControl());\n        });\n    }\n\n    get data() {\n        return this._data;\n    }\n\n    /*===SELECT===*/\n    @Input() selectedClassName: string = 'color-white';\n    @Output() selectedChanged: EventEmitter<IListItem | null> = new EventEmitter<IListItem | null>();\n    _selected: IListItem | null;\n    @Input()\n    set selected(v: IListItem | null) {\n        // console.log('selected: ', v);\n        if (v && !this.isSelectedNode(v)) {\n            this._selected = v;\n        }\n    }\n\n    get selected() {\n        return this._selected;\n    }\n\n    /*===NAME===*/\n    @Input() hoverNameClassName: string = '';\n\n    /*===CUSTOM COLLAPSE ICON===*/\n    @Input() collapseClassName: string = 'fal fa-angle-right font-size-16px';\n    @Input() expandClassName: string = 'fal fa-angle-down font-size-16px';\n    @Input() hoverCollapseIconClassName: string = 'color-white';\n    @Input() alwaysShowExpandCollapseIcon: boolean = true;\n\n    // actions\n    moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n    constructor() {\n        this.moreAction.className += ' action show-on-hover small';\n        this.moreAction.iconClassName += ' font-size-18px';\n    }\n\n    ngOnInit(): void {}\n\n    private render() {}\n\n    /**\n     *\n     * @param level\n     */\n    calculatePaddingLeft(level: number) {\n        return level * this.levelOffset + 'px';\n    }\n\n    /**\n     * add level to each node\n     * @param data\n     * @param level\n     * @param parent\n     */\n    massageNode(data: IListItem[], level: number = -1, parent: IListItem | null = null) {\n        level++;\n        _.map(data, (x: IListItem) => {\n            x.level = level;\n            this.nodeList.push(x);\n\n            // set id\n            if (!x?.id) {\n                x.id = uuidv4();\n            }\n            // set parent\n            x.parent = parent;\n\n            // actions\n            _.map(x?.options, (y) => {\n                y.className += ' action';\n                if (y.showWhenHover) {\n                    y.className += ' show-on-hover';\n                }\n            });\n            // set isExpanded\n            if (_.isUndefined(x.isExpanded)) {\n                x.isExpanded = false;\n            }\n            // set draggable\n            if (this.draggable) {\n                if (_.isUndefined(x.draggable)) {\n                    x.draggable = true;\n                }\n            }\n            // selectable\n            if (this.selectable) {\n                if (_.isUndefined(x.selectable)) {\n                    x.selectable = true;\n                }\n            }\n            if (x?.children?.length) {\n                this.massageNode(x?.children, level, x);\n            }\n            if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n                x.onClick = () => {\n                    this.toggleCollapseExpand(x);\n                };\n            }\n        });\n    }\n\n    toggleCollapseExpand(node: IListItem) {\n        node.isExpanded = !node?.isExpanded;\n        // if (this.treeControl.isExpanded(node)) {\n        //     this.treeControl.collapse(node);\n        //     node.isExpanded = false;\n        //     this.onEmitEvent(TqlTreeCore.CollapseEvent, { node: node });\n        // } else {\n        //     this.treeControl.expand(node);\n        //     node.isExpanded = true;\n        //     this.onEmitEvent(TqlTreeCore.ExpandEvent, { node: node });\n        // }\n    }\n\n    isSelectedNode(node: IListItem) {\n        return this.selected?.id === node?.id;\n    }\n\n    onClick(node: IListItem) {\n        this.selected = node;\n        this.selectedChanged.emit(this.selected);\n    }\n\n    toTreeControl(): TqlListedTreeComponent.ITreeControl {\n        return {\n            data: this.data,\n            collapseAll: this.collapseAll,\n            expandAll: this.expandAll,\n        };\n    }\n\n    collapseAll() {\n        _.map(this.nodeList, (x) => {\n            x.isExpanded = false;\n        });\n    }\n\n    expandAll() {\n        _.map(this.nodeList, (x) => {\n            x.isExpanded = true;\n        });\n    }\n}\n\nexport namespace TqlListedTreeComponent {\n    export interface ITreeControl {\n        data: IListItem[];\n        collapseAll: Function;\n        expandAll: Function;\n    }\n}\n","<!--\n<div *ngFor=\"let item of list;let $index=index;\">\n    &lt;!&ndash;not in navbar&ndash;&gt;\n    <ng-container *ngIf=\"!inNavbar\">\n        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n    </ng-container>\n    &lt;!&ndash;in navbar&ndash;&gt;\n    <ng-container *ngIf=\"inNavbar\">\n        <div class=\"show-on-collapsed\">\n            <div *ngIf=\"item?.children?.length\"\n                 (click)=\"onShowContent($event,$index)\"\n                 #myItems>\n                <tql-simple-list\n                    class=\"level-{{deepLevel}}\"\n                    [items]=\"[item]\"\n                    [inNavbar]=\"inNavbar\"\n                    [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n                    [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n                <div class=\"d-flex has-group-hint align-items-center\">\n                    <i class=\"fal fa-angle-right font-size-12px \"></i>\n                </div>\n            </div>\n            <div *ngIf=\"!item?.children?.length\">\n                <tql-simple-list\n                    class=\"level-{{deepLevel}}\"\n                    [items]=\"[item]\"\n                    [inNavbar]=\"inNavbar\"\n                    [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n                    [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n            </div>\n\n        </div>\n        <div class=\"hide-on-collapsed\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n        </div>\n    </ng-container>\n    <ng-template #contentTemplate>\n        <tql-simple-list\n            class=\"level-{{deepLevel}}\"\n            [items]=\"[item]\"\n            [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n            [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n        <tql-nested-list\n            [nestedLeftPadding]=\"nestedLeftPadding\"\n            [class.d-none]=\"!(item?.children && !item?.isCollapsed)\"\n            [list]=\"item?.children\" [level]=\"level - 1\"\n            [deepLevel]=\"deepLevel + 1\"\n            [nameTemplate]=\"nameTemplate\"></tql-nested-list>\n    </ng-template>\n</div>\n\n-->\n<div class=\"tql-listed-tree-wrapper w-100 overflow-auto\">\n    <ng-container *ngIf=\"!data?.length\">\n        Tree is empty\n    </ng-container>\n    <ng-container *ngIf=\"data?.length\">\n        <div *ngFor=\"let item of data;let $index=index;\">\n            <ng-container *ngTemplateOutlet=\"branchTemplate; context:{node:item}\"></ng-container>\n        </div>\n    </ng-container>\n</div>\n\n<ng-template #branchTemplate let-node=\"node\">\n    <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{node:node, hasChild:node?.children?.length}\"></ng-container>\n    <ng-container *ngIf=\"node?.children?.length\">\n        <div *ngFor=\"let item of node?.children;let $index=index;\"\n             [class.d-none]=\"!node?.isExpanded\">\n            <ng-container *ngTemplateOutlet=\"branchTemplate; context:{node:item}\"></ng-container>\n        </div>\n    </ng-container>\n</ng-template>\n<ng-template #nodeTemplate let-node=\"node\" let-hasChild=\"hasChild\">\n    <div class=\"node pl-3 cursor-pointer {{isSelectedNode(node)?selectedClassName:''}}\"\n         [id]=\"node?.id\"\n         [class.selected]=\"isSelectedNode(node)\"\n         matRipple\n         (click)=\"onClick(node)\">\n        <div class=\"d-flex align-items-center\" [style.padding-left]=\"calculatePaddingLeft(node?.level)\">\n            <div class=\"collapse-icon d-flex align-items-center cursor-pointer\"\n                 tql-hover-class=\"{{hoverCollapseIconClassName}}\"\n                 [class.invisible]=\"!hasChild && node?.level !== 0\"\n                 [class.disabled-half]=\"!hasChild\"\n                 [class.opacity-30]=\"!hasChild\"\n                 *ngIf=\"alwaysShowExpandCollapseIcon\"\n                 (click)=\"toggleCollapseExpand(node);$event.stopPropagation();\">\n                <i class=\"{{node?.isExpanded?expandClassName:collapseClassName}}\"></i>\n            </div>\n            <ng-container *ngTemplateOutlet=\"nameTemplate; context:{node:node}\"></ng-container>\n            <div class=\"flex-grow-1\"></div>\n            <div class=\"d-flex actions-group align-items-center\">\n                <!--                <ng-container *ngTemplateOutlet=\"draggableTemplate; context:{node:node}\"></ng-container>-->\n                <!--                {{node?.options | json}}-->\n                <ng-container *ngTemplateOutlet=\"optionsTemplate; context:{node:node}\"></ng-container>\n            </div>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #nameTemplate let-node=\"node\">\n    <div class=\"d-flex align-items-center flex-gap-2 name-group\" tql-hover-class=\"{{hoverNameClassName}}\">\n        <div class=\"icon\" *ngIf=\"node?.iconClassName\">\n            <i class=\"{{node?.iconClassName}}\"></i>\n        </div>\n        <div>{{node?.name}}</div>\n    </div>\n</ng-template>\n\n<ng-template #optionsTemplate let-node=\"node\">\n    <div class=\"actions-group\" *ngIf=\"node?.options?.length\">\n        <tql-action-bar [list]=\"node?.options\" [action]=\"moreAction\" [data]=\"node\"></tql-action-bar>\n    </div>\n</ng-template>\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    EmbeddedViewRef,\r\n    Injector,\r\n    Input,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TqlGlobalConfigService } from 'tql-service';\r\n\r\n@Component({\r\n    selector: 'lib-tql-spin',\r\n    templateUrl: './tql-spin.component.html',\r\n    styleUrls: ['./tql-spin.component.scss'],\r\n})\r\nexport class TqlSpinComponent implements AfterViewInit {\r\n    @ViewChild('container', { read: ViewContainerRef, static: false }) container: ViewContainerRef;\r\n\r\n    @Input() opacity: number = 1;\r\n    @Input() backgroundColor: string = '#FFF';\r\n    @Input() spinTemplate: TemplateRef<any>;\r\n\r\n    constructor(\r\n        private _ViewContainerRef: ViewContainerRef,\r\n        private _TqlGlobalConfigService: TqlGlobalConfigService,\r\n        private _Injector: Injector,\r\n    ) {}\r\n\r\n    ngAfterViewInit() {\r\n        const config = this._TqlGlobalConfigService.getConfig();\r\n        if (!this.spinTemplate && config?.spinTemplate) {\r\n            const parentDom = this.container.element.nativeElement;\r\n\r\n            const componentRef = this.container.createComponent(this._TqlGlobalConfigService.getConfig().spinTemplate, {\r\n                injector: this._Injector,\r\n            });\r\n            // clean\r\n            parentDom.innerHTML = '';\r\n            parentDom.appendChild((componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement);\r\n        }\r\n    }\r\n}\r\n","<div #container class=\"w-100 h-100 d-flex align-items-center justify-content-center tql-spin-content\"\r\n     [style.background-color]=\"backgroundColor\"\r\n     [style.opacity]=\"opacity\">\r\n    <ng-container *ngIf=\"spinTemplate;else defaultTmp\">\r\n        <ng-container *ngTemplateOutlet=\"spinTemplate\"></ng-container>\r\n    </ng-container>\r\n    <ng-template #defaultTmp>\r\n        <mat-spinner [diameter]=\"50\"></mat-spinner>\r\n    </ng-template>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    ApplicationRef,\r\n    Directive,\r\n    EmbeddedViewRef,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    TemplateRef,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TqlSpinComponent } from '../../components/template';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DefaultDirective } from 'tql-service';\r\n\r\n@Directive({\r\n    selector: '[tqlSpin]',\r\n})\r\nexport class TqlSpinDirective extends DefaultDirective implements OnInit, AfterViewInit {\r\n    @Input() opacity: number = 1;\r\n    @Input() backgroundColor: string = '#FFF';\r\n    @Input() delay: number = 0;\r\n    @Input() spinTemplate: TemplateRef<any>;\r\n\r\n    private _spinning: boolean = false;\r\n    @Input() set spinning(v: boolean) {\r\n        this._spinning = v;\r\n        this.spin$.next(this._spinning);\r\n    }\r\n\r\n    get spinning() {\r\n        return this._spinning;\r\n    }\r\n\r\n    private instance: TqlSpinComponent | null = null;\r\n    private parentDom: any;\r\n    private childDom: any;\r\n\r\n    spin$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n    constructor(\r\n        private _ViewContainerRef: ViewContainerRef,\r\n        private _ApplicationRef: ApplicationRef,\r\n        private _Injector: Injector,\r\n    ) {\r\n        super();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.addComponent();\r\n        this.addSubscribes(\r\n            this.spin$.subscribe((spinning) => {\r\n                this.toggleSpinning(spinning);\r\n            }),\r\n        );\r\n    }\r\n\r\n    ngAfterViewInit() {}\r\n\r\n    /**\r\n     * add dom\r\n     */\r\n    private addComponent() {\r\n        if (!this.instance) {\r\n            this.parentDom = this._ViewContainerRef.element.nativeElement;\r\n\r\n            // === collapse ===\r\n            // add collapse component\r\n            const componentRef = this._ViewContainerRef.createComponent(TqlSpinComponent, {\r\n                injector: this._Injector,\r\n            });\r\n            this.instance = componentRef.instance as TqlSpinComponent;\r\n            this.updateInstance();\r\n\r\n            // append dom to parent\r\n            this.childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n            // const divWrapper = document.createElement('div');\r\n            // divWrapper.classList.add('content');\r\n            // // // divWrapper.classList.add('overflow-hidden');\r\n            // divWrapper.classList.add('w-100');\r\n            // divWrapper.classList.add('h-100');\r\n            // while (this.parentDom.childNodes.length > 0) {\r\n            //     divWrapper.appendChild(this.parentDom.childNodes[0]);\r\n            // }\r\n            // // divWrapper.append(this.parentDom.childNodes);\r\n            // this.parentDom.appendChild(divWrapper);\r\n            this.parentDom.appendChild(this.childDom);\r\n            // set position relative\r\n            this.parentDom.classList.add('tql-spin-wrapper');\r\n        }\r\n    }\r\n\r\n    /**\r\n     * update instance's data\r\n     */\r\n    private updateInstance() {\r\n        if (this.instance) {\r\n            this.instance.opacity = this.opacity;\r\n            this.instance.backgroundColor = this.backgroundColor;\r\n            this.instance.spinTemplate = this.spinTemplate;\r\n        }\r\n    }\r\n\r\n    private toggleSpinning(spinning: boolean) {\r\n        this.updateInstance();\r\n        if (spinning) {\r\n            this.parentDom.classList.add('spinning');\r\n        } else {\r\n            setTimeout(() => {\r\n                this.parentDom.classList.remove('spinning');\r\n            }, this.delay);\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TqlCollapseDirective } from './tql-collapse/tql-collapse.directive';\r\nimport { NgVarDirective } from './ng-var/ng-var.directive';\r\nimport { TqlDynamicComponentHostDirective } from './tql-dynamic-component-host/tql-dynamic-component-host.directive';\r\nimport { TqlResizableDirective } from './tql-resizable/tql-resizable.directive';\r\nimport { TqlHoverClassDirective } from './tql-hover-class/tql-hover-class.directive';\r\nimport { TqlTableFilterWidgetDirective } from './tql-table-filter-widget/tql-table-filter-widget.directive';\r\nimport { TqlResizedDirective } from './tql-resized/tql-resized.directive';\r\nimport { TqlSpinDirective } from './tql-spin/tql-spin.directive';\r\nimport { TqlClickOutsideDirective } from './tql-click-outside/tql-click-outside.directive';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        TqlCollapseDirective,\r\n        NgVarDirective,\r\n        TqlDynamicComponentHostDirective,\r\n        TqlResizableDirective,\r\n        TqlHoverClassDirective,\r\n        TqlTableFilterWidgetDirective,\r\n        TqlResizedDirective,\r\n        TqlSpinDirective,\r\n        TqlClickOutsideDirective,\r\n    ],\r\n    exports: [\r\n        TqlCollapseDirective,\r\n        NgVarDirective,\r\n        TqlDynamicComponentHostDirective,\r\n        TqlResizableDirective,\r\n        TqlHoverClassDirective,\r\n        TqlTableFilterWidgetDirective,\r\n        TqlResizedDirective,\r\n        TqlSpinDirective,\r\n        TqlClickOutsideDirective,\r\n    ],\r\n    imports: [CommonModule],\r\n})\r\nexport class DirectivesModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TqlNavbarComponent } from './tql-navbar/tql-navbar.component';\r\nimport { MaterialsModule } from 'tql-theme';\r\nimport { TqlNavbarLogoComponent } from './tql-navbar-logo/tql-navbar-logo.component';\r\nimport { TqlNavbarTitleComponent } from './tql-navbar-title/tql-navbar-title.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BasicModule } from '../../basic/basic.module';\r\nimport { DirectivesModule } from '../../../directives/directives.module';\r\n\r\n@NgModule({\r\n    declarations: [TqlNavbarComponent, TqlNavbarLogoComponent, TqlNavbarTitleComponent],\r\n    imports: [CommonModule, RouterModule, MaterialsModule, BasicModule, DirectivesModule],\r\n    exports: [TqlNavbarComponent, TqlNavbarLogoComponent, TqlNavbarTitleComponent],\r\n})\r\nexport class TqlNavbarModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MaterialsModule } from 'tql-theme';\r\nimport { TqlSimpleListComponent } from './tql-simple-list/tql-simple-list.component';\r\nimport { TqlActionDrawerComponent } from './tql-action-drawer/tql-action-drawer.component';\r\nimport { TqlPanelComponent } from './tql-panel/tql-panel.component';\r\nimport { TqlBreadcrumbComponent } from './tql-breadcrumb/tql-breadcrumb.component';\r\nimport { TqlNavbarModule } from './tql-navbar';\r\nimport { TqlHeaderComponent } from './tql-header/tql-header.component';\r\nimport { TqlCollapseGroupComponent } from './tql-collapse-group/tql-collapse-group.component';\r\nimport { TqlStatusListComponent } from './tql-status-list/tql-status-list.component';\r\nimport { TqlHighlightListComponent } from './tql-highlight-list/tql-highlight-list.component';\r\nimport { TqlImageCardComponent } from './tql-image-card/tql-image-card.component';\r\nimport { TqlSimpleCardComponent } from './tql-simple-card/tql-simple-card.component';\r\nimport { TqlRouteTreeComponent, TqlTreeComponent } from './tql-tree/tql-tree.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DirectivesModule } from '../../directives/directives.module';\r\nimport { TqlActionBarComponent } from './tql-action-bar/tql-action-bar.component';\r\nimport { TqlTabsHeaderComponent } from './tql-tabs-header/tql-tabs-header.component';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TqlNestedListComponent } from './tql-nested-list/tql-nested-list.component';\r\nimport { TqlDynamicComponentComponent } from './tql-dynamic-component/tql-dynamic-component.component';\r\nimport { TqlProgressListComponent } from './tql-progress-list/tql-progress-list.component';\r\nimport { TqlTableComponent } from './tql-table/tql-table.component';\r\nimport { TqlListedTreeComponent } from './tql-listed-tree/tql-listed-tree.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TqlSpinComponent } from './tql-spin/tql-spin.component';\r\nimport { TqlActionBarMenuComponent } from './tql-action-bar-menu/tql-action-bar-menu.component';\r\nimport { TqlCodeEditorComponent } from './tql-code-editor/tql-code-editor.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        TqlSimpleListComponent,\r\n        TqlActionDrawerComponent,\r\n        TqlPanelComponent,\r\n        TqlBreadcrumbComponent,\r\n        TqlHeaderComponent,\r\n        TqlCollapseGroupComponent,\r\n        TqlStatusListComponent,\r\n        TqlHighlightListComponent,\r\n        TqlImageCardComponent,\r\n        TqlSimpleCardComponent,\r\n        TqlTreeComponent,\r\n        TqlRouteTreeComponent,\r\n        TqlTabsHeaderComponent,\r\n        TqlActionBarComponent,\r\n        TqlNestedListComponent,\r\n        TqlDynamicComponentComponent,\r\n        TqlProgressListComponent,\r\n        TqlTableComponent,\r\n        TqlListedTreeComponent,\r\n        TqlSpinComponent,\r\n        TqlActionBarMenuComponent,\r\n        TqlCodeEditorComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        MaterialsModule,\r\n        TqlNavbarModule,\r\n        DirectivesModule,\r\n        RouterModule,\r\n        CodemirrorModule,\r\n        ReactiveFormsModule,\r\n        TranslateModule,\r\n    ],\r\n    exports: [\r\n        TqlSimpleListComponent,\r\n        TqlActionDrawerComponent,\r\n        TqlPanelComponent,\r\n        TqlBreadcrumbComponent,\r\n        TqlHeaderComponent,\r\n        TqlCollapseGroupComponent,\r\n        TqlStatusListComponent,\r\n        TqlHighlightListComponent,\r\n        TqlImageCardComponent,\r\n        TqlSimpleCardComponent,\r\n        TqlTreeComponent,\r\n        TqlRouteTreeComponent,\r\n        TqlNavbarModule,\r\n        TqlTabsHeaderComponent,\r\n        TqlActionBarComponent,\r\n        TqlNestedListComponent,\r\n        TqlDynamicComponentComponent,\r\n        TqlProgressListComponent,\r\n        TqlTableComponent,\r\n        TqlListedTreeComponent,\r\n        TqlSpinComponent,\r\n        TqlCodeEditorComponent,\r\n    ],\r\n})\r\nexport class TemplateModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-tql-empty-layout',\r\n  templateUrl: './tql-empty-layout.component.html',\r\n  styleUrls: ['./tql-empty-layout.component.scss']\r\n})\r\nexport class TqlEmptyLayoutComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<p>tql-empty-layout works!</p>\r\n","import { Component, OnInit } from '@angular/core';\nimport { TqlHeaderControllerService } from '../../../controllers';\n\n@Component({\n    selector: 'tql-header-layout',\n    templateUrl: './tql-header-layout.component.html',\n    styleUrls: ['./tql-header-layout.component.scss'],\n})\nexport class TqlHeaderLayoutComponent implements OnInit {\n    contentComponent: any;\n\n    constructor(private _TqlHeaderControllerService: TqlHeaderControllerService) {}\n\n    ngOnInit(): void {\n        this._TqlHeaderControllerService._Observable_Current_Header_Component.subscribe((rs) => {\n            if (rs) {\n                this.contentComponent = rs;\n            }\n        });\n    }\n}\n","<tql-header>\r\n    <div class=\"main-wrapper\">\r\n        <div class=\"top-bar d-flex align-items-center flex-gap-3\">\r\n            <div *ngIf=\"contentComponent\" class=\"overflow-auto\">\r\n                <ng-container *ngComponentOutlet=\"contentComponent\"></ng-container>\r\n            </div>\r\n            <tql-breadcrumb [hasPrefix]=\"true\"></tql-breadcrumb>\r\n            <div class=\"flex-grow-1\"></div>\r\n            <div>\r\n                <i class=\"fal fa-search font-size-21px color-soft-blue disabled-half\"></i>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</tql-header>\r\n\r\n\r\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ComponentFactoryResolver,\n    Injector,\n    Input,\n    OnInit,\n    Type,\n    ViewChild,\n    ViewContainerRef,\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { DynamicDataModel, DefaultComponent } from 'tql-service';\nimport { IListItem, INavbarComponent } from '../../../constants/interface';\nimport { TqlNavbarControllerService } from '../../../controllers/tql-navbar/tql-navbar-controller.service';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n    selector: 'tql-navbar-layout',\n    templateUrl: './tql-navbar-layout.component.html',\n    styleUrls: ['./tql-navbar-layout.component.scss'],\n})\nexport class TqlNavbarLayoutComponent extends DefaultComponent implements OnInit, AfterViewInit {\n    @ViewChild('dynamicElement', { read: ViewContainerRef }) dynamicElement: ViewContainerRef;\n    subMenus: IListItem[] = [\n        {\n            name: 'Switch Dashboard',\n            iconClassName: 'fal fa-grip-horizontal font-size-18px',\n            disabled: true,\n            className: 'side-padding',\n            children: [\n                {\n                    name: 'Demos Dashboard',\n                    route: ['/', 'dashboards', 'demos'],\n                    iconClassName: 'fad fa-vial',\n                    className: 'btn-blue',\n                    actionName: 'Go to dashboard',\n                    children: [],\n                },\n                {\n                    name: 'UI Components Dashboard',\n                    route: ['/', 'dashboards', 'ui-components'],\n                    iconClassName: 'fad fa-game-board-alt',\n                    className: 'btn-blue',\n                    actionName: 'Go to dashboard',\n                    children: [],\n                },\n            ],\n        },\n        {\n            name: 'Notifications',\n            iconClassName: 'fal fa-bell font-size-18px',\n            disabled: true,\n            className: 'side-padding',\n        },\n    ];\n\n    contentComponent: any;\n    menuComponent: DynamicDataModel;\n    instance: INavbarComponent;\n    navbarComponent: Component | null;\n\n    constructor(\n        private _Router: Router,\n        private _Injector: Injector,\n        private _ComponentFactoryResolver: ComponentFactoryResolver,\n        private _TqlNavbarControllerService: TqlNavbarControllerService,\n        private _ChangeDetectorRef: ChangeDetectorRef,\n    ) {\n        super();\n        this.addSubscribes(\n            combineLatest([\n                this._Router.events,\n                this._TqlNavbarControllerService._Observable_Current_Nav_Component,\n            ]).subscribe(([events, navbar]) => {\n                if (events instanceof NavigationEnd) {\n                    setTimeout(() => {\n                        console.log(navbar);\n                        if (this.navbarComponent !== navbar) {\n                            this.navbarComponent = navbar;\n                            this.addComponent(this.navbarComponent);\n                        }\n                    });\n                }\n            }),\n        );\n    }\n\n    ngOnInit(): void {}\n\n    ngAfterViewInit() {\n        // this._TqlNavbarControllerService._Observable_Current_Nav_Component\n        //     .subscribe((rs) => {\n        //         // console.log(rs);\n        //         this.addComponent(rs);\n        //     });\n\n        // TODO: Harry - Hard code for UM\n        this._TqlNavbarControllerService._Observable_Current_Sub_Menu_Navbar.subscribe((rs) => {\n            if (!!rs) {\n                this.subMenus = rs as IListItem[];\n                this._ChangeDetectorRef.detectChanges();\n            }\n        });\n    }\n\n    addComponent(component: Component | null) {\n        console.log('New NAVBAR');\n        if (this.instance) {\n            try {\n                this.instance.reset();\n            } catch (e) {}\n        }\n        if (component) {\n            const componentFactory = this._ComponentFactoryResolver.resolveComponentFactory(component as Type<unknown>);\n\n            const viewContainerRef = this.dynamicElement;\n            viewContainerRef.clear();\n\n            const componentRef = viewContainerRef.createComponent(componentFactory);\n\n            this.instance = <INavbarComponent>componentRef.instance;\n            this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(null);\n        }\n    }\n\n    logout() {\n        localStorage.removeItem('login');\n        this._Router.navigate(['/', 'auth', 'log-out']);\n    }\n\n    goToProfile() {\n        this._Router.navigate(['/', 'dashboards', 'account', 'profile']);\n    }\n}\n","<tql-navbar>\r\n    <div class=\" w-100 h-100 d-flex flex-column overflow-hidden\">\r\n        <!--logo-->\r\n        <tql-navbar-logo\r\n            [logoRoute]=\"['/']\"\r\n            [logo]=\"'assets/images/logo/atomiton-icon.png'\"\r\n            [collapseLogo]=\"'assets/images/icons/logo-mobile.png'\"></tql-navbar-logo>\r\n        <hr>\r\n\r\n        <!--dynamic content-->\r\n        <div class=\"overflow-y-auto\">\r\n            <ng-container #dynamicElement></ng-container>\r\n        </div>\r\n        <div class=\"flex-grow-1\"></div>\r\n        <hr *ngIf=\"subMenus?.length\">\r\n        <div>\r\n            <tql-simple-list [items]=\"subMenus\" [inNavbar]=\"true\"></tql-simple-list>\r\n        </div>\r\n        <hr>\r\n        <div class=\"account cursor-pointer d-flex side-padding align-items-center flex-gap-3\" mat-ripple\r\n             [matMenuTriggerFor]=\"accountMenu\">\r\n            <img src=\"assets/images/icons/avatar.jpg\" class=\"m-auto\" alt=\"avatar\"/>\r\n            <span\r\n                class=\"collapse-hide color-soft-blue flex-grow-1 text-truncate\">User</span>\r\n        </div>\r\n        <mat-menu #accountMenu=\"matMenu\">\r\n            <button mat-menu-item (click)=\"logout()\">Logout</button>\r\n            <button mat-menu-item (click)=\"goToProfile()\">Profile</button>\r\n        </mat-menu>\r\n    </div>\r\n</tql-navbar>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'tql-main-layout',\r\n  templateUrl: './tql-main-layout.component.html',\r\n  styleUrls: ['./tql-main-layout.component.scss']\r\n})\r\nexport class TqlMainLayoutComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<mat-sidenav-container>\r\n    <mat-sidenav-content>\r\n        <div class=\"dashboards-wrapper d-flex\">\r\n            <!-- Start Navigation Layout -->\r\n            <div>\r\n                <tql-navbar-layout></tql-navbar-layout>\r\n            </div>\r\n            <!-- End Navigation Layout -->\r\n\r\n            <div class=\"flex-grow-1 flex-shrink-1 overflow-auto d-flex flex-column\">\r\n                <div class=\"flex-grow-1 flex-shrink-1 d-flex flex-column overflow-hidden\">\r\n\r\n                    <!-- Start Header Layout -->\r\n                    <div>\r\n                        <tql-header-layout></tql-header-layout>\r\n                    </div>\r\n                    <!-- End Header Layout -->\r\n\r\n                    <div class=\"d-flex flex-grow-1 flex-shrink-1 overflow-auto\">\r\n                        <!--TODO-->\r\n\r\n                        <!-- Start Content -->\r\n                        <div class=\"flex-shrink-1 flex-grow-1 overflow-y-auto \">\r\n                            <router-outlet></router-outlet>\r\n                        </div>\r\n                        <!-- End Content -->\r\n\r\n                        <!-- Start Dynamic Right Side -->\r\n                        <!--                        <div>-->\r\n                        <!--                            <div *ngIf=\"dynamicDataComponent\" class=\"dynamic-box h-100\">-->\r\n                        <!--                                <app-dc-main [data]=\"dynamicDataComponent\"></app-dc-main>-->\r\n                        <!--                            </div>-->\r\n                        <!--                        </div>-->\r\n                        <!-- End Dynamic Right Side -->\r\n\r\n                    </div>\r\n                </div>\r\n\r\n                <!-- Start Footer Layout -->\r\n<!--                <div>-->\r\n<!--                    <tql-footer-layout></tql-footer-layout>-->\r\n<!--                </div>-->\r\n                <!-- End Footer Layout -->\r\n\r\n            </div>\r\n        </div>\r\n    </mat-sidenav-content>\r\n\r\n    <!-- Start A-stack logs -->\r\n    <!--TODO-->\r\n    <!--    <mat-sidenav position=\"end\" mode=\"over\" [(opened)]=\"isOpenLog\" (closed)=\"closeSideNav()\">-->\r\n    <!--        <ng-container *ngComponentOutlet=\"logComponent\"></ng-container>-->\r\n    <!--    </mat-sidenav>-->\r\n    <!-- End A-stack logs -->\r\n</mat-sidenav-container>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TqlEmptyLayoutComponent} from './tql-empty-layout/tql-empty-layout.component';\r\nimport {TqlHeaderLayoutComponent} from './tql-header-layout/tql-header-layout.component';\r\nimport {TqlMainLayoutComponent} from './tql-main-layout/tql-main-layout.component';\r\nimport {TqlNavbarLayoutComponent} from './tql-navbar-layout/tql-navbar-layout.component';\r\nimport {RouterModule} from '@angular/router';\r\nimport {MaterialsModule} from 'tql-theme';\r\nimport {TemplateModule} from '../template/template.module';\r\nimport {TqlNavbarModule} from '../template/tql-navbar/tql-navbar.module';\r\n\r\n\r\n@NgModule({\r\n    declarations: [\r\n        TqlEmptyLayoutComponent,\r\n        TqlHeaderLayoutComponent,\r\n        TqlMainLayoutComponent,\r\n        TqlNavbarLayoutComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        RouterModule,\r\n        MaterialsModule,\r\n        TemplateModule,\r\n        TqlNavbarModule\r\n    ],\r\n    exports: [\r\n        TqlEmptyLayoutComponent,\r\n        TqlHeaderLayoutComponent,\r\n        TqlMainLayoutComponent,\r\n        TqlNavbarLayoutComponent,\r\n    ]\r\n})\r\nexport class LayoutsModule {\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {BasicModule} from './basic/basic.module';\r\nimport {TemplateModule} from './template/template.module';\r\nimport {LayoutsModule} from './layouts/layouts.module';\r\n\r\n\r\n@NgModule({\r\n    declarations: [],\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    exports: [BasicModule, TemplateModule, LayoutsModule]\r\n})\r\nexport class ComponentsModule {\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { PipesModule } from './pipes/pipes.module';\nimport { ComponentsModule } from './components/components.module';\nimport { DirectivesModule } from './directives/directives.module';\n\n@NgModule({\n    declarations: [],\n    imports: [PipesModule, ComponentsModule, DirectivesModule],\n    exports: [PipesModule, ComponentsModule, DirectivesModule],\n})\nexport class TqlComponentModule {}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport const customPatternValid = (config: any): ValidatorFn => {\n    return (control: AbstractControl) => {\n        let urlRegEx: RegExp = config.pattern;\n        if (control.value && !control.value.match(urlRegEx)) {\n            return {\n                [config?.key]: config?.message || true,\n            };\n        } else {\n            return null;\n        }\n    };\n};\n","import { ValidatorFn } from '@angular/forms';\nimport { customPatternValid } from './funtions';\n\nexport const emailValidator: ValidatorFn = customPatternValid({\n    pattern: /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g,\n    key: 'email',\n});\n","import { AbstractControl, FormControl, ValidatorFn } from '@angular/forms';\n\nexport const noWhitespaceValidator: ValidatorFn = (control: AbstractControl) => {\n    return control.value && (typeof control.value === 'string' ? control.value!.trim() : control.value) !== ''\n        ? null\n        : { whitespace: true };\n};\n","/*\r\n * Public API Surface of tql-component\r\n */\r\n\r\nexport * from './lib/tql-component.module';\r\n\r\n/*pipe*/\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/pipes/tql-url-safe/tql-url-safe.pipe';\r\nexport * from './lib/pipes/tql-highlight/tql-highlight.pipe';\r\nexport * from './lib/pipes/tql-order-by/tql-order-by.pipe';\r\nexport * from './lib/pipes/tql-key-value-order/tql-key-value-order.pipe';\r\n\r\n/*validators*/\r\nexport * from './lib/validators';\r\n\r\n/*components*/\r\nexport * from './lib/components/components.module';\r\n\r\n// basic\r\nexport * from './lib/components/basic/basic.module';\r\nexport * from './lib/components/basic/tql-input/tql-input.component';\r\nexport * from './lib/components/basic/tql-select/tql-select.component';\r\nexport * from './lib/components/basic/tql-collapse/tql-collapse.component';\r\nexport * from './lib/components/basic/tql-loading-bar/tql-loading-bar.component';\r\nexport * from './lib/components/basic/tql-tab/tql-tab.component';\r\nexport * from './lib/components/basic/tql-resizable/tql-resizable.component';\r\nexport * from './lib/components/basic/tql-spinner/tql-spinner.component';\r\nexport * from './lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component';\r\n\r\n// template\r\nexport * from './lib/components/template';\r\n\r\n// layout\r\nexport * from './lib/components/layouts';\r\n\r\n/* directives */\r\nexport * from './lib/directives/directives.module';\r\nexport * from './lib/directives/tql-collapse/tql-collapse.directive';\r\nexport * from './lib/directives/ng-var/ng-var.directive';\r\nexport * from './lib/directives/tql-dynamic-component-host/tql-dynamic-component-host.directive';\r\nexport * from './lib/directives/tql-resizable/tql-resizable.directive';\r\nexport * from './lib/directives/tql-hover-class/tql-hover-class.directive';\r\nexport * from './lib/directives/tql-table-filter-widget/tql-table-filter-widget.directive';\r\nexport * from './lib/directives/tql-resized/tql-resized.directive';\r\nexport * from './lib/directives/tql-spin/tql-spin.directive';\r\nexport * from './lib/directives/tql-click-outside/tql-click-outside.directive';\r\n\r\n/* constant */\r\nexport * from './lib/constants';\r\n\r\n/* controller */\r\nexport * from './lib/controllers';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_","uuidv4","i1","i2","i3","i1.TqlCollapseControllerService","i4","i5","i7.TqlInputComponent","i5.TqlActionBarMenuComponent","i6.NgVarDirective","i7","i8.TqlActionBarComponent","i4.TqlCollapseDirective","i5.TqlResizableDirective","i6.TqlActionBarComponent","i2.TqlNavbarControllerService","i5.TqlClickOutsideDirective","i1.TqlNavbarControllerService","i6","i3.TqlSimpleListComponent","i1.TqlDynamicComponentHostDirective","i4.TqlCollapseGroupComponent","i3.TqlHoverClassDirective","i4.TqlActionBarComponent","i1.TqlHeaderControllerService","i3.TqlBreadcrumbComponent","i4.TqlHeaderComponent","i6.TqlSimpleListComponent","i7.TqlNavbarComponent","i8.TqlNavbarLogoComponent","i3.TqlHeaderLayoutComponent","i4.TqlNavbarLayoutComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,cAAc,CAAA;AAEvB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAC1C;AAED,IAAA,SAAS,CAAC,GAAG,EAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;KAC7D;8GAPQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AACrB,iBAAA,CAAA;;;MCAY,gBAAgB,CAAA;AAEzB,IAAA,SAAS,CAAC,KAAU,EAAE,IAAS,EAAE,QAAa,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,KAAK,CAAC;SAChB;AAED,QAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;SAC3D;QACD,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;QAEhC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;KAC/C;AAED,IAAA,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAA;AAC9B;;;AAGG;AACH,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;KACzG;8GAvBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACvB,iBAAA,CAAA;;;MCGY,cAAc,CAAA;IACvB,SAAS,CAAC,KAAY,EAAE,GAAsB,EAAA;AAC1C,QAAA,OAAOA,UAAC,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD;8GAHQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AACrB,iBAAA,CAAA;;;MCAY,oBAAoB,CAAA;AAE7B,IAAA,SAAS,CAAC,KAAU,EAAE,QAAA,GAAqB,EAAE,EAAE,QAAqB,GAAA,EAAE,EAAE,cAAA,GAA0B,KAAK,EAAE,UAAkB,EAAE,EAAA;QACzH,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QAED,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;YACvB,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACvC,SAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;AACvB,YAAA,IAAI,gBAAgB,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC;AACnC,YAAA,IAAI,cAAc,CAAC,gBAAgB,CAAC,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,CAAC;aACxG;AACL,SAAC,CAAC,CAAC;QAEH,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1B,YAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;oBAC3D,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC,CAAC;iBAC5D;aACJ;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE;AAChB,YAAA,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;SAChD;QAED,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;SACzD;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,oBAAoB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,EAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,IAAI,KAAI;YACrC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;KACV;8GAjDQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAApB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,kBAAkB;AAC3B,iBAAA,CAAA;;;MCoBY,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAfhB,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGpB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAThB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,cAAc;wBACd,gBAAgB;wBAChB,cAAc;wBACd,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,cAAc;wBACd,gBAAgB;wBAChB,cAAc;wBACd,oBAAoB;AACvB,qBAAA;AACJ,iBAAA,CAAA;;;ICxBW,iBAIX;AAJD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,OAAqB,CAAA;AACzB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,UAAU,GAAG;AACtB,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG,oBAAoB;AACjD,IAAA,CAAC,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;AAClD,IAAA,CAAC,gBAAgB,CAAC,UAAU,GAAG,0BAA0B;AACzD,IAAA,GAAG,CAAC,KAAa,EAAA;QACb,OAAO,aAAa,GAAG,KAAK,CAAC;KAChC;AACD,IAAA,GAAG,CAAC,KAAa,EAAA;QACb,OAAO,aAAa,GAAG,KAAK,CAAC;KAChC;;;ICLO,iBAcX;AAdD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,gBAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD,CAAA;AACjD,IAAA,gBAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EAdW,gBAAgB,KAAhB,gBAAgB,GAc3B,EAAA,CAAA,CAAA;;ICtBW,iBAuBX;AAvBD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,kBAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EAvBW,gBAAgB,KAAhB,gBAAgB,GAuB3B,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,eAAe,GAAmD;AAC3E,IAAA,CAAC,gBAAgB,CAAC,YAAY,GAAG;QAC7B,IAAI,EAAE,gBAAgB,CAAC,YAAY;AACnC,QAAA,aAAa,EAAE,wBAAwB;QACvC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,UAAU,GAAG;QAC3B,IAAI,EAAE,gBAAgB,CAAC,UAAU;AACjC,QAAA,aAAa,EAAE,0BAA0B;QACzC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG;QACzB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;AAC/B,QAAA,aAAa,EAAE,iBAAiB;QAChC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG;QACvB,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,aAAa,EAAE,mBAAmB;QAClC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,OAAO,GAAG;QACxB,IAAI,EAAE,gBAAgB,CAAC,OAAO;AAC9B,QAAA,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,OAAO,GAAG;QACxB,IAAI,EAAE,gBAAgB,CAAC,OAAO;AAC9B,QAAA,aAAa,EAAE,oBAAoB;QACnC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG;AACvB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,aAAa,EAAE,eAAe;QAC9B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG,EAAE;AAC/B,IAAA,CAAC,gBAAgB,CAAC,SAAS,GAAG;QAC1B,IAAI,EAAE,gBAAgB,CAAC,SAAS;AAChC,QAAA,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG;QACvB,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,aAAa,EAAE,kBAAkB;QACjC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE;AAC3B,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE;AAC3B,IAAA,CAAC,gBAAgB,CAAC,GAAG,GAAG,EAAE;AAC1B,IAAA,CAAC,gBAAgB,CAAC,QAAQ,GAAG;AACzB,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,aAAa,EAAE,kBAAkB;QACjC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,UAAU,GAAG,EAAE;AACjC,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG;QACrB,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG;QACrB,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,aAAa,EAAE,oBAAoB;QACnC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG;QACrB,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,MAAM,GAAG;QACvB,IAAI,EAAE,gBAAgB,CAAC,MAAM;AAC7B,QAAA,aAAa,EAAE,mBAAmB;QAClC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,KAAK,GAAG;QACtB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,QAAA,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG;QACrB,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,aAAa,EAAE,YAAY;QAC3B,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;AACD,IAAA,CAAC,gBAAgB,CAAC,KAAK,GAAG;QACtB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,QAAA,aAAa,EAAE,wBAAwB;QACvC,OAAO,EAAE,MAAK;SACb;AACJ,KAAA;;;ACvIC,IAAW,aAShB;AATD,CAAA,UAAiB,YAAY,EAAA;AACZ,IAAA,YAAA,CAAA,cAAc,GAAa,MAAK,GAAG,CAAC;IACpC,YAAwB,CAAA,wBAAA,GAAa,MAAK;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACnC,KAAC,CAAC;AAEF,IAAA,IAAY,UAEX,CAAA;AAFD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACvC,KAAC,EAFW,UAAU,GAAV,YAAU,CAAA,UAAA,KAAV,uBAAU,GAErB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EATgB,YAAY,KAAZ,YAAY,GAS5B,EAAA,CAAA,CAAA;;ACDK,MAAO,eAAgB,SAAQ,YAAY,CAAA;IAQ7C,IAAI,IAAI,CAAC,CAA6B,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,QAAA,MAAM,GAAG,GAAG,eAAe,CAAC,qBAAqB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAChG,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG;AAC5B,cAAE,eAAe,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC5C,cAAE,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC;KACpD;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAUD,IAAI,OAAO,CAAC,CAAc,EAAA;AACtB,QAAA,IAAI,CAAC,CAAC,CAAC,EAAE;;;AAGL,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;aAC/B;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AACxD,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;AAC/C,wBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;qBACjC;iBACJ;AACL,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAuDD,IAAI,eAAe,CAAC,CAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;KAC7B;AAED,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;;AAGG;IACH,IAAI,QAAQ,CAAC,CAAU,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACtC;IAGD,IAAI,MAAM,CAAC,CAAgD,EAAA;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAK;YAChB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;gBAClB,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,SAAS,EAAE,CAAC;iBACpB;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;KACL;AAED,IAAA,WAAA,CAAY,QAAa,EAAE,EAAA;AACvB,QAAA,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AArEvB;;;AAGG;AACH,QAAA,IAAA,CAAA,aAAa,GAAQ;AACjB,YAAA,IAAI,EAAE,EAAE;;AAGR,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,cAAc,EAAE,IAAI;;YAGpB,yBAAyB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;;AAGvE,YAAA,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;;AAG7B,YAAA,WAAW,EAAE,mBAAmB;AAEhC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,IAAI;AACvC,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;AAC5D,YAAA,SAAS,EAAE;AACP,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,UAAU,EAAO,EAAA;oBACvB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;iBAC/B;AACJ,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;AA+BE,QAAA,IAAI,CAAC,KAAK,CAACC,EAAM,EAAE,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACzC;IAED,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7C;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC7C;IAED,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KACzC;IAED,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5E,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;;YAE1E,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAClE;KACJ;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,OAAO,CAAC,IAAS,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,OAAO,CAAC,IAAgC,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AACJ,CAAA;AAED,CAAA,UAAiB,eAAe,EAAA;AAC5B,IAAA,IAAY,UAUX,CAAA;AAVD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,MAAA,CAAA,GAAA,EAAS,CAAA;AACT,QAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,QAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,QAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACf,KAAC,EAVW,UAAU,GAAV,eAAU,CAAA,UAAA,KAAV,0BAAU,GAUrB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,qBAUX,CAAA;AAVD,IAAA,CAAA,UAAY,qBAAqB,EAAA;AAC7B,QAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,kBAAyB,CAAA;AACzB,QAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,WAAkB,CAAA;AAClB,QAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,qBAA4B,CAAA;AAC5B,QAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,iBAAuB,CAAA;AACvB,QAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,wBAA6B,CAAA;AAC7B,QAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,QAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,EAAU,CAAA;AACV,QAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,QAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,YAAkB,CAAA;AACtB,KAAC,EAVW,qBAAqB,GAArB,eAAqB,CAAA,qBAAA,KAArB,qCAAqB,GAUhC,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,WAEX,CAAA;AAFD,IAAA,CAAA,UAAY,WAAW,EAAA;AACnB,QAAA,WAAA,CAAA,MAAA,CAAA,GAAA,iBAAwB,CAAA;AAC5B,KAAC,EAFW,WAAW,GAAX,eAAW,CAAA,WAAA,KAAX,2BAAW,GAEtB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EA5BgB,eAAe,KAAf,eAAe,GA4B/B,EAAA,CAAA,CAAA;;MCnNY,iBAAiB,CAAA;IA8C1B,IACI,SAAS,CAAC,CAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,QAAQ,IAAI,CAAC,UAAU;AACnB,YAAA,KAAK,iBAAiB,CAAC,UAAU,CAAC,QAAQ;AACtC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;gBACxC,MAAM;AACV,YAAA,KAAK,iBAAiB,CAAC,UAAU,CAAC,UAAU;AACxC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;gBAChD,MAAM;SACb;KACJ;IAaD,IACI,KAAK,CAAC,KAAkC,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAI,KAAqB,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;KACxE;AAED,IAAA,WAAA,GAAA;QAzES,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAEzB,IAAgB,CAAA,gBAAA,GAAW,OAAO,CAAC;QACnC,IAAqB,CAAA,qBAAA,GAAW,aAAa,CAAC;AAC9C,QAAA,IAAA,CAAA,IAAI,GAAW,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,KAAK,GAA4B,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChE,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;QAI3B,IAAc,CAAA,cAAA,GAAW,qBAAqB,CAAC;;QAI/C,IAAa,CAAA,aAAA,GAAuB,IAAI,CAAC;QACzC,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAE3B,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAA,CAAA,mBAAmB,GAAyB,IAAI,YAAY,EAAU,CAAC;AACvE,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,IAAI,GAAsB,IAAI,YAAY,EAAO,CAAC;;QAcnD,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QAEjC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;;AAGjC,QAAA,IAAA,CAAA,UAAU,GAAiC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC;QACzF,IAAkB,CAAA,kBAAA,GAAW,aAAa,CAAC;AAelC,QAAA,IAAA,CAAA,KAAK,GAAkC,iBAAiB,CAAC,IAAI,CAAC;AAC9D,QAAA,IAAA,CAAA,MAAM,GAAmC,iBAAiB,CAAC,KAAK,CAAC;AAE1E;;;;AAIG;AACO,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC/D,QAAA,IAAA,CAAA,MAAM,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;KAO1B;AAEhB,IAAA,QAAQ,MAAW;AAEnB;;;AAGG;IACH,QAAQ,GAAA;QACJ,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;AAED;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,EAAE;YACvD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,EAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC3F;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACH,eAAe,GAAA;AACX,QAAA,MAAM,GAAG,GAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAY,CAAC;;QAElE,QACI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;AACtB,aAAC,OAAO,IAAI,CAAC,MAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,MAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EACrF;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,MAAa,EAAA;QACtB,IAAI,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGjC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;SAYhC;KACJ;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,IAAU,EAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;;;AAGhC,YAAA,MAAM,CAAC,SAAS,GAAG,UAAU,GAAG,EAAA;gBAC5B,IAAI,GAAG,EAAE,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE;;AAE5C,oBAAA,IAAI,OAAO,GAAW,GAAG,CAAC,MAAM,CAAC,MAAgB,CAAC;oBAClD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,oBAAA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;oBACjD,IAAI,cAAc,GAAG,OAAO,CAAC;AAC7B,oBAAA,IAAI,UAAU,GAAG,OAAO,EAAE;AACtB,wBAAA,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC9D,cAAc,IAAI,SAAS,UAAU,GAAG,OAAO,CAC3C,UAAA,EAAA,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,EACrC,EAAE,CAAC;qBACN;oBACD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;AACrD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1C;AACL,aAAC,CAAC;AACF,YAAA,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACH,OAAO,GAAA;AACH,QAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7B;8GApLQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,w3BCV9B,quNAqHA,EAAA,MAAA,EAAA,CAAA,ghVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD3Ga,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,quNAAA,EAAA,MAAA,EAAA,CAAA,ghVAAA,CAAA,EAAA,CAAA;wDAKZ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAGG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAGE,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAGG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAOF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAqBI,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAIH,KAAK,EAAA,CAAA;sBADR,KAAK;;AAiHV,CAAA,UAAiB,iBAAiB,EAAA;AAC9B,IAAA,IAAY,IASX,CAAA;AATD,IAAA,CAAA,UAAY,IAAI,EAAA;AACZ,QAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,IAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,IAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,IAAA,CAAA,WAAA,CAAA,GAAA,UAAsB,CAAA;AACtB,QAAA,IAAA,CAAA,aAAA,CAAA,GAAA,YAA0B,CAAA;AAC1B,QAAA,IAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,QAAA,IAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,IAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,KAAC,EATW,IAAI,GAAJ,iBAAI,CAAA,IAAA,KAAJ,sBAAI,GASf,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,KAIX,CAAA;AAJD,IAAA,CAAA,UAAY,KAAK,EAAA;AACb,QAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,KAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,KAAC,EAJW,KAAK,GAAL,iBAAK,CAAA,KAAA,KAAL,uBAAK,GAIhB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,MAEX,CAAA;AAFD,IAAA,CAAA,UAAY,MAAM,EAAA;AACd,QAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAFW,MAAM,GAAN,iBAAM,CAAA,MAAA,KAAN,wBAAM,GAEjB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,UAGX,CAAA;AAHD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC7B,KAAC,EAHW,UAAU,GAAV,iBAAU,CAAA,UAAA,KAAV,4BAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EA1BgB,iBAAiB,KAAjB,iBAAiB,GA0BjC,EAAA,CAAA,CAAA;;AElMK,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;IAWpD,IAAa,QAAQ,CAAC,CAAU,EAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;AAC1C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SACjC;aAAM;AACH,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;;;;KAIJ;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAUD,IACI,OAAO,CAAC,IAAW,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAKD,IACI,KAAK,CAAC,KAAkC,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAI,KAAqB,GAAG,IAAI,CAAC;;;KAGzD;AAID,IAAA,WAAA,CAAoB,kBAAqC,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;QADQ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;QAnDhD,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAKnC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAiB3B;;;;AAIG;QACH,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;QACrB,IAAW,CAAA,WAAA,GAAU,EAAE,CAAC;QAWxB,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;QAChC,IAAM,CAAA,MAAA,GAAuB,IAAI,CAAC;AASxB,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAO,CAAC;KAIxE;AAED,IAAA,QAAQ,MAAW;AAEnB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAI;oBAC7C,MAAM,KAAK,GAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAC7E,oBAAA,OAAO,IAAI,kBAAkB,CAAC,YAAY,CACtC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,EAC7B,KAAK,EACL,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,EAC5B,IAAI,EAAE,QAAQ,EACd,IAAI,CACP,CAAC;AACN,iBAAC,CAAC,CAAC;aACN;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aACtG;;;SAGJ;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;;YAEtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,YAAA,IAAI,CAAC,MAAM,CACP,IAAI,EACJ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EACnG,IAAI,CACP,CAAC;;;;;;;;SASL;KACJ;IAED,iBAAiB,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,aAAa;;YAEd,IAAI,CAAC,MAAM,CAAC,YAAY;;iBAEnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACjC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;;gBAEpC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,MAAM,CACP,IAAI,EACJ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KACxB,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CACpE,CACJ,CAAC;iBACL;aACJ,CAAC,CACT,CAAC;SACL;KACJ;AAED,IAAA,IAAI,UAAU,GAAA;QACV,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,EAAE;YACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,EAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC3F;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACH,eAAe,GAAA;QACX,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAY,CAAC,CAAC;KAC3E;;;;;;;;;;;;;;;;;;;;;;;;AA4BD;;;;;AAKG;AACH,IAAA,MAAM,CAAC,MAAe,EAAE,KAAwC,EAAE,UAAmB,KAAK,EAAA;;QAEtF,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAEhB,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACxB;YAED,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBACrB,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACzC;iBAAM;AACH,gBAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC7B;YAED,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;AACpC,aAAC,CAAC,CAAC;SACN;aAAM;;AAEH,YAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACf,gBAAA,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CACjB,CAAC,CAAC,GAAG,CACD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CACjB,CACJ,CAAC;aACL;iBAAM;AACH,gBAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC7B;SACJ;AAED,QAAA,IACI,IAAI,CAAC,mBAAmB,KAAK,IAAI;AACjC,YAAA,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,EACxE;;AAEE,YAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;SAC9B;aAAM;AACH,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;SACjD;;QAGD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,CAAC,CAAC,IAAI,CACT,CAAC,CAAC,GAAG,CACD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,EAChD,OAAO,CACV,EACD,IAAI,CACP,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,MAAW,EAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;SACjD;KACJ;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;KAChC;8GAtPQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAChB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B7B,2zNA2IA,EAAA,MAAA,EAAA,CAAA,+3cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlHa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,2zNAAA,EAAA,MAAA,EAAA,CAAA,+3cAAA,CAAA,EAAA,CAAA;sFAKK,cAAc,EAAA,CAAA;sBAAxC,SAAS;uBAAC,cAAc,CAAA;gBAEhB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAGO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAyBF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAaF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAOI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;AAkaX,CAAA,UAAiB,kBAAkB,EAAA;AAC/B,IAAA,MAAa,YAAY,CAAA;QAOrB,WAAY,CAAA,KAAa,EAAE,KAAU,EAAE,SAAA,GAAqB,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAU,EAAA;AAC3F,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC5B;AAED,QAAA,WAAW,CAAC,MAAe,EAAA;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;SAC3B;AACJ,KAAA;AAlBY,IAAA,kBAAA,CAAA,YAAY,eAkBxB,CAAA;AACL,CAAC,EApBgB,kBAAkB,KAAlB,kBAAkB,GAoBlC,EAAA,CAAA,CAAA,CAAA;AAED,SAAS,sBAAsB,CAAC,sBAA2B,EAAE,IAAkC,EAAA;AAC3F,IAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,2BAA2B,CAAC,2BAAgC,EAAE,IAAkC,EAAA;AACrG,IAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACjD;;MErgBa,0BAA0B,CAAA;AAGnC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,oCAAoC,GAAsC,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;KAGrH;AAED,IAAA,OAAO,CAAC,wBAAgD,EAAA;AAEpD,QAAA,MAAM,IAAI,GAAgB,wBAAwB,CAAC,IAAmB,CAAC;;AAGvE,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,UAAA,EAAa,YAAY,CAAA,CAAE,CAAC,CAAC;AACpE,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SACpB;;AAGD,QAAA,IAAI,IAAI,CAAC,oCAAoC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;YAC7E,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAc,CAAC,CAAC;SACnF;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KACzB;8GAvBQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCDY,aAAa,CAAA;AAIzB,CAAA;MAKY,0BAA0B,CAAA;AASnC,IAAA,WAAA,GAAA;AARA,QAAA,IAAA,CAAA,iCAAiC,GAAsC,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;AACnH,QAAA,IAAA,CAAA,mCAAmC,GAAwC,IAAI,eAAe,CAC1F,IAAI,CACP,CAAC;AACF,QAAA,IAAA,CAAA,gCAAgC,GAA0C,IAAI,eAAe,CACzF,IAAI,CACP,CAAC;KAEc;AAEhB;;;;AAIG;AACH,IAAA,OAAO,CAAC,wBAAgD,EAAA;AACpD,QAAA,MAAM,IAAI,GAAgB,wBAAwB,CAAC,IAAmB,CAAC;;;AAGvE,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC;AACpD,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC;;AAGvD,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE;YACtG,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAgB,CAAC,CAAC;SACrF;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,UAAA,EAAa,YAAY,CAAA,CAAE,CAAC,CAAC;AACpE,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SACpB;AAED,QAAA,IAAI,IAAI,CAAC,iCAAiC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;YAC1E,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAc,CAAC,CAAC;SAChF;AAED,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAC9C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,GAAG,KAAI;;;AAIR,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;gBAC5B,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAc,CAAC,CAAC;aAChF;SACJ,CAAC,CACL,CAAC;KACL;8GAhDQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCRY,4BAA4B,CAAA;AAUrC,IAAA,WAAA,GAAA;QATA,IAAa,CAAA,aAAA,GACT,IAAI,eAAe,CAGhB;AACC,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,QAAQ;AACrE,SAAA,CAAC,CAAC;KAES;IAEhB,cAAc,CAAC,OAAe,EAAE,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,QAAQ;AACrE,SAAA,CAAC,CAAC;KACN;IAED,YAAY,CAAC,OAAe,EAAE,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,MAAM;AACnE,SAAA,CAAC,CAAC;KACN;8GAxBQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAFzB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;AA4BD,CAAA,UAAiB,4BAA4B,EAAA;AACzC,IAAA,IAAY,oBAGX,CAAA;AAHD,IAAA,CAAA,UAAY,oBAAoB,EAAA;AAC5B,QAAA,oBAAA,CAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,QAAA,oBAAA,CAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,KAAC,EAHW,oBAAoB,GAApB,4BAAoB,CAAA,oBAAA,KAApB,iDAAoB,GAG/B,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EALgB,4BAA4B,KAA5B,4BAA4B,GAK5C,EAAA,CAAA,CAAA;;MC9BY,2BAA2B,CAAA;AAIpC,IAAA,WAAA,GAAA;QAFA,IAAsC,CAAA,sCAAA,GAAmD,IAAI,eAAe,CAAgC,IAAI,GAAG,EAAE,CAAC,CAAC;KAGtJ;AAED,IAAA,OAAO,CAAC,wBAAgD,EAAE,qBAA0C,EAC5F,SAAkC,EAAA;QAEtC,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,GAAgB,wBAAwB,CAAC,IAAmB,CAAC;;AAGvE,YAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACrB,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,UAAA,EAAa,YAAY,CAAA,CAAE,CAAC,CAAC;AACpE,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;aACpB;AACD,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;SAClC;;QAID,IAAI,IAAI,CAAC,sCAAsC,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE;AACtE,YAAA,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,SAAmC,CAAC,CAAC;SACzF;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KACzB;8GA7BQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACGK,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AActD,IAAA,IAA+C,eAAe,GAAA;AAC1D,QAAA,OAAO,IAAI,CAAC;KACf;AAID,IAAA,WAAA,CAAoB,6BAA2D,EAAA;AAC3E,QAAA,KAAK,EAAE,CAAC;QADQ,IAA6B,CAAA,6BAAA,GAA7B,6BAA6B,CAA8B;QAhBtE,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QACxB,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAQ,KAAK,CAAC;QACxB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AACZ,QAAA,IAAA,CAAA,SAAS,GAAiD,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC;AACnG,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAA+C,oBAAoB,CAAC,cAAc,CAAC;AAUlG,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;YAC9D,IAAI,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,KAAK,4BAA4B,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;aAClG;SACJ,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,MAAW;AAEnB,IAAA,YAAY,MAAK;AAEjB;;AAEG;AACH,IAAA,cAAc,CAAC,WAAA,GAAmB,CAAC,IAAI,CAAC,UAAU,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACpC;IAED,cAAc,GAAA;QACV,IAAI,KAAK,GAAG,EAAE,CAAC;AACf,QAAA,QAAQ,IAAI,CAAC,SAAS;AAClB,YAAA,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK;AACtB,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,oBAAA,KAAK,GAAG,CAAO,IAAA,EAAA,IAAI,CAAC,MAAM,IAAI,CAAC;iBAClC;qBAAM;AACH,oBAAA,KAAK,GAAG,CAAU,OAAA,EAAA,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;iBACtC;gBACD,MAAM;AACV,YAAA,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACzB,YAAA,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;AACvB,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,oBAAA,KAAK,GAAG,CAAS,MAAA,EAAA,IAAI,CAAC,MAAM,IAAI,CAAC;iBACpC;qBAAM;AACH,oBAAA,KAAK,GAAG,CAAQ,KAAA,EAAA,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;iBACpC;gBAED,MAAM;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;8GAjEQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,kaCVjC,+sCAqBA,EAAA,MAAA,EAAA,CAAA,6lvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDXa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,cAAc,EAAA,QAAA,EAAA,+sCAAA,EAAA,MAAA,EAAA,CAAA,6lvBAAA,CAAA,EAAA,CAAA;8FAKf,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAIwC,eAAe,EAAA,CAAA;sBAA7D,WAAW;uBAAC,4BAA4B,CAAA;;AAsD7C,CAAA,UAAiB,oBAAoB,EAAA;AACjC,IAAA,IAAY,cAKX,CAAA;AALD,IAAA,CAAA,UAAY,cAAc,EAAA;AACtB,QAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,QAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACjB,KAAC,EALW,cAAc,GAAd,oBAAc,CAAA,cAAA,KAAd,mCAAc,GAKzB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EAPgB,oBAAoB,KAApB,oBAAoB,GAOpC,EAAA,CAAA,CAAA;;ME7EY,sBAAsB,CAAA;AAK/B,IAAA,WAAA,CAAoB,uBAA+C,EAAA;QAA/C,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;QAH1D,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QAG7B,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAK;AAC1D,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACtF,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;KACP;8GAZQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iICRnC,kIAEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,kIAAA,EAAA,CAAA;6FAKlB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEQG,eAAe,CAAA;AAKxB,IAAA,WAAA,CAAoB,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AAF/C,QAAA,IAAA,CAAA,iBAAiB,GAAyB,IAAI,YAAY,EAAU,CAAC;KAElB;AAE7D,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;8GAZQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAEP,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAM,EADZ,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,8DCpB1B,qJAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDgBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACI,SAAS,EAAA,QAAA,EAAA,qJAAA,EAAA,CAAA;sFAKuB,QAAQ,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACf,UAAU,EAAA,CAAA;sBAAlC,eAAe;uBAAC,MAAM,CAAA;gBACb,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MEfE,qBAAqB,CAAA;IAG9B,IACI,UAAU,CAAC,CAAqD,EAAA;AAChE,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAA0C,eAAe,GAAA;AACrD,QAAA,OAAO,IAAI,CAAC;KACf;AAE6C,IAAA,MAAM,CAAC,MAAM,EAAA;AACvD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,CAAC,cAAc,EAAE,CAAC;SAC3B;KACJ;AAE2C,IAAA,UAAU,CAAC,MAAM,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;SAC3B;KACJ;AAOD,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAI;AAE3C,IAAA,QAAQ,MAAW;IAEnB,aAAa,CAAC,MAAkB,EAAE,SAAgD,EAAA;AAC9E,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5D,QAAA,IAAI,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,eAAe,EAAE,CAAC;SAC5B;AACD,QAAA,IAAI,MAAM,CAAC,cAAc,EAAE;YACvB,MAAM,CAAC,cAAc,EAAE,CAAC;SAC3B;AACD,QAAA,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,QAAA,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;;AAG3B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KACxE;AAEO,IAAA,WAAW,CAAC,MAAkB,EAAA;;AAElC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;AAEO,IAAA,QAAQ,CAAC,MAAkB,EAAA;;AAE/B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;kBAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;kBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3C,YAAA,QAAQ,IAAI,CAAC,SAAS;AAClB,gBAAA,KAAK,qBAAqB,CAAC,eAAe,CAAC,GAAG;oBAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBACpG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBACpG,MAAM;AACV,gBAAA,KAAK,qBAAqB,CAAC,eAAe,CAAC,MAAM;oBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBACpG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBACpG,MAAM;AACV,gBAAA,KAAK,qBAAqB,CAAC,eAAe,CAAC,IAAI;oBAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;;oBAElG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBAClG,MAAM;AACV,gBAAA,KAAK,qBAAqB,CAAC,eAAe,CAAC,KAAK;oBAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;;oBAElG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;oBAClG,MAAM;aACb;SACJ;KACJ;AAEO,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AACxC,QAAA,OAAO,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC;KACxD;AAEO,IAAA,UAAU,CAAC,MAA+B,EAAA;AAC9C,QAAA,IAAI,MAAM,YAAY,UAAU,EAAE;YAC9B,OAAoB,MAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAClD;aAAM;YACH,OAAoB,MAAO,CAAC,OAAO,CAAC;SACvC;KACJ;AAEO,IAAA,UAAU,CAAC,MAA+B,EAAA;AAC9C,QAAA,IAAI,MAAM,YAAY,UAAU,EAAE;YAC9B,OAAoB,MAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAClD;aAAM;YACH,OAAoB,MAAO,CAAC,OAAO,CAAC;SACvC;KACJ;8GAlHQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,mSCPlC,sKAGA,EAAA,MAAA,EAAA,CAAA,sjOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,eAAe,EAAA,QAAA,EAAA,sKAAA,EAAA,MAAA,EAAA,CAAA,sjOAAA,CAAA,EAAA,CAAA;8EAKhB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGF,UAAU,EAAA,CAAA;sBADb,KAAK;gBASoC,eAAe,EAAA,CAAA;sBAAxD,WAAW;uBAAC,uBAAuB,CAAA;gBAIU,MAAM,EAAA,CAAA;sBAAnD,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOA,UAAU,EAAA,CAAA;sBAArD,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;AA8F9C,CAAA,UAAiB,qBAAqB,EAAA;AAClC,IAAA,IAAY,eAMX,CAAA;AAND,IAAA,CAAA,UAAY,eAAe,EAAA;AACvB,QAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EANW,eAAe,GAAf,qBAAe,CAAA,eAAA,KAAf,qCAAe,GAM1B,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EARgB,qBAAqB,KAArB,qBAAqB,GAQrC,EAAA,CAAA,CAAA;;ME7HY,mBAAmB,CAAA;AAI5B,IAAA,WAAA,GAAA;QAFS,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;KAExB;AAEhB,IAAA,QAAQ,MAAW;8GANV,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qGCPhC,wKAGA,EAAA,MAAA,EAAA,CAAA,+GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,aAAa,EAAA,QAAA,EAAA,wKAAA,EAAA,MAAA,EAAA,CAAA,+GAAA,CAAA,EAAA,CAAA;wDAKd,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEEJ,MAAO,6BACT,SAAQ,gBAAgB,CAAA;IAexB,IACI,IAAI,CAAC,CAAiC,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAaD,IAAA,WAAA,CAAoB,0BAAqD,EAAA;AACrE,QAAA,KAAK,EAAE,CAAC;QADQ,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;AAjC/D,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAyC,CAAC;QACnE,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QAExB,IAAa,CAAA,aAAA,GAAW,qCAAqC,CAAC;QAC9D,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;AAEjC;;;;AAIG;QACK,IAAK,CAAA,KAAA,GAAmC,EAAE,CAAC;AAWnD,QAAA,IAAA,CAAA,IAAI,GAAsD,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC/G,QAAA,IAAA,CAAA,cAAc,GACV,6BAA6B,CAAC,mBAAmB,CAAC;QACtD,IAAa,CAAA,aAAA,GAAmC,EAAE,CAAC;QACnD,IAAY,CAAA,YAAA,GAAmC,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAM,CAAA,MAAA,GAA0C,EAAE,CAAC;KAIlD;AAED,IAAA,QAAQ,MAAW;AAEnB,IAAA,eAAe,MAAK;IAEpB,YAAY,GAAA;QACR,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;;;oBAGxF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,MAAM,MAAM,GAA0C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClF,oBAAA,IAAI,CAAC,CAAC,MAAM,EAAE;;wBAEV,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CACvF,CAAC;;;;;;;AAOF,wBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAyD,CAAC,CAAC;;qBAErF;iBACJ,CAAC,CACL,CAAC;aACL;AACL,SAAC,CAAC,CAAC;KACN;IAED,KAAK,GAAA;;QAED,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;QACP,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,MAAM,GAA0C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,EAAE;AACvF,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;SACJ;KACJ;AAED,IAAA,UAAU,CAAC,SAA4D,EAAE,WAAA,GAAuB,IAAI,EAAA;AAChG,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;SACpE;aAAM;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;SACzB;QACD,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SAClC;KACJ;AAED,IAAA,YAAY,CAAC,KAAY,EAAE,WAAA,GAAuB,IAAI,EAAA;QAClDF,UAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,KAAI;AACtB,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;gBAC7BA,UAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxE;iBAAM;AACH,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;AACL,SAAC,CAAC,CAAC;QACH,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SACpC;KACJ;AAED,IAAA,SAAS,CAAC,MAAkB,EAAA;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;AAED,IAAA,WAAW,CAAC,MAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;IAED,SAAS,GAAA;QACL,QACI,IAAI,CAAC,SAAS;aACb,IAAI,CAAC,IAAI,KAAK,6BAA6B,CAAC,mBAAmB,CAAC,EAAE;AAC/D,gBAAA,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EACtD;KACL;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC9B;AAED,IAAA,SAAS,CAAC,MAAc,GAAA,EAAE,IAAI,EAAE,KAAK,EAAE,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5B,YAAA,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3C,YAAA,OAAO,EAAE;gBACL,SAAS,EAAE,MAAK;oBACZ,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;iBACpE;AACJ,aAAA;AACD,YAAA,OAAO,EAAE,MAAM;AAClB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CAAC,IAAkC,EAAE,IAAuC,GAAA,IAAI,CAAC,YAAY,EAAA;QACzG,OAAO,CAAC,CAACA,UAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KACxD;AAED,IAAA,eAAe,CAAC,MAAW,EAAA;;QAEvB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,GAAGA,UAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KACvCA,UAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAACA,UAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAI7E,CAAC;;SAEP;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;KACJ;IAED,iBAAiB,GAAA;AACb,QAAA,OAAOA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;KACxD;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACvB;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACxB;8GAzLQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uPCX1C,4rHAmEA,EAAA,MAAA,EAAA,CAAA,+2qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxDa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACI,6BAA6B,EAAA,QAAA,EAAA,4rHAAA,EAAA,MAAA,EAAA,CAAA,+2qBAAA,CAAA,EAAA,CAAA;gGAQ7B,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;;AA4KV,CAAA,UAAiB,6BAA6B,EAAA;AAC1C,IAAA,IAAY,mBAIX,CAAA;AAJD,IAAA,CAAA,UAAY,mBAAmB,EAAA;AAC3B,QAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,QAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,MAAY,CAAA;AACZ,QAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,QAAa,CAAA;AACjB,KAAC,EAJW,mBAAmB,GAAnB,6BAAmB,CAAA,mBAAA,KAAnB,iDAAmB,GAI9B,EAAA,CAAA,CAAA,CAAA;AAWL,CAAC,EAhBgB,6BAA6B,KAA7B,6BAA6B,GAgB7C,EAAA,CAAA,CAAA;;MEjLY,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBArBhB,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAEvB,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEtG,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGxB,WAAW,EAAA,OAAA,EAAA,CAZV,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAYjG,WAAW,EAAA,UAAA,EAAA,CAAA;kBAvBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,6BAA6B;AAChC,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC3G,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,6BAA6B;AAChC,qBAAA;AACJ,iBAAA,CAAA;;;ACpCD;;AAEK;MAIQ,cAAc,CAAA;IACvB,IACI,KAAK,CAAC,OAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;KACJ;IAYD,WAAoB,CAAA,WAA6B,EAAU,KAAuB,EAAA;QAA9D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;AAV1E,QAAA,IAAA,CAAA,OAAO,GAGX;AACA,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,IAAI;SACd,CAAC;QAEM,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAEqD;8GArB7E,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACtB,iBAAA,CAAA;+GAGO,KAAK,EAAA,CAAA;sBADR,KAAK;;;MCDG,gBAAgB,CAAA;AAEzB,IAAA,WAAA,GAAA;KACC;AAED,IAAA,OAAO,sBAAsB,CAAC,OAA0B,EAAE,iBAAyB,CAAC,EAAA;QAChF,IAAI,gBAAgB,GAAsB,EAAE,CAAC;QAC7C,IAAI,aAAa,GAAsB,EAAE,CAAC;AAC1C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,gBAAgB,GAAG,OAAO,CAAC;SAC9B;AAAM,aAAA,IAAI,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE;YACzC,gBAAgB,GAAG,OAAO,CAAC;SAC9B;aAAM;AACH,YAAA,gBAAgB,GAAGR,UAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;YACtE,aAAa,GAAGA,UAAC,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD,YAAA,IAAI,gBAAgB,CAAC,MAAM,IAAI,cAAc,EAAE;gBAC3C,gBAAgB,GAAGA,UAAC,CAAC,MAAM,CAAC,gBAAgB,EAAEA,UAAC,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/G,aAAa,GAAGA,UAAC,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;aAC3D;SACJ;QACD,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAC,CAAC;KACtE;8GArBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCEY,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;QAQI,IAAe,CAAA,eAAA,GAAG,gCAAgC,CAAC;AAetD,KAAA;AAZG,IAAA,UAAU,CAAC,OAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACrC;QACD,OAAO,CAAC,QAAQ,EAAE,CAAC;KACtB;AAED,IAAA,UAAU,CAAC,OAAY,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;YAClC,OAAO,CAAC,SAAS,EAAE,CAAC;SACvB,EAAE,EAAE,CAAC,CAAC;KACV;8GAjBQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRtC,o7DAyCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCa,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,o7DAAA,EAAA,CAAA;8BAKtB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MECG,qBAAqB,CAAA;IAY9B,IACI,IAAI,CAAC,IAAuB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,WAAA,GAAA;QAvBS,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAoBH,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,SAAS,GAA8C,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;AACxG,QAAA,IAAA,CAAA,UAAU,GAA4C,qBAAqB,CAAC,UAAU,CAAC;QAEvF,IAAe,CAAA,eAAA,GAAsB,EAAE,CAAC;QACxC,IAAiB,CAAA,iBAAA,GAAsB,EAAE,CAAC;QAE1C,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAG,gCAAgC,CAAC;KAcnC;AAEhB,IAAA,QAAQ,MAAW;AAEnB,IAAA,kBAAkB,CAAC,OAA0B,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC;KAClD;8GAjCQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0KCXlC,m/CA+BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,m/CAAA,EAAA,CAAA;wDAKjB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;;AAwBV,CAAA,UAAiB,qBAAqB,EAAA;AAClC,IAAA,IAAY,UAGX,CAAA;AAHD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAHW,UAAU,GAAV,qBAAU,CAAA,UAAA,KAAV,gCAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EALgB,qBAAqB,KAArB,qBAAqB,GAKrC,EAAA,CAAA,CAAA;;AEvCK,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;IAYxD,IACI,KAAK,CAAC,CAAc,EAAA;QACpBT,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YACX,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;YACzG,CAAC,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CACzC,CAAC,CAAC,OAAO,EACT,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,eAAe,EAAE,EACjD,IAAI,CACP,CAAC;AACN,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAgCD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAxDH,QAAA,IAAA,CAAA,SAAS,GAAsC,sBAAsB,CAAC,UAAU,CAAC,MAAM,CAAC;AACjG,QAAA,IAAA,CAAA,UAAU,GAA6C,sBAAsB,CAAC,UAAU,CAAC;QAEhF,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAsBnC,QAAA,IAAA,CAAA,KAAK,GAAuC,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC;QACrF,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAC7B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,sBAAsB,GAAW,sBAAsB,CAAC,qBAAqB,CAAC,KAAK,CAAC;;QAGpF,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,mBAAmB,GAAW,sBAAsB,CAAC,qBAAqB,CAAC,KAAK,CAAC;QACjF,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;AACtB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;AACzD,QAAA,IAAA,CAAA,SAAS,GAAsB,IAAI,YAAY,EAAO,CAAC;;QAGxD,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAW,2BAA2B,CAAC;AAE3D,QAAA,IAAA,CAAA,qBAAqB,GACjB,sBAAsB,CAAC,qBAAqB,CAAC;QACjD,IAAmB,CAAA,mBAAA,GAAW,EAAE,CAAC;QACjC,IAA0B,CAAA,0BAAA,GAAW,EAAE,CAAC;QACxC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAGjB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;;AAIhC,QAAA,IAAA,CAAA,UAAU,GAAoBA,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;KAIjF;IAED,QAAQ,GAAA;QACJ,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,SAAS,CAAC;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,iBAAiB,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,gBAAgB,CAAC;aACjD;;AAEL,SAAC,CAAC,CAAC;KACN;IAED,MAAM,CAAC,MAA6B,EAAA,GAAI;IAExC,UAAU,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACvB;IAED,SAAS,CAAC,IAAS,EAAA,GAAI;AAEvB,IAAA,SAAS,CAAC,IAAe,EAAA;QACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IAED,OAAO,GAAA;AACH,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,aAAa,CAAC,UAA6B,EAAE,EAAE,SAAc,EAAE,EAAE,WAAoB,KAAK,EAAA;QACtF,MAAM,YAAY,GAAGA,UAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAA,OAAO,CAAC,QAAQ,GAAG,YAAY,GAAGA,UAAC,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KACzE;AAED,IAAA,6BAA6B,CAAC,IAAS,EAAA;QACnC,IAAI,MAAM,GAAW,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAA,EAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;KAC3E;AAED,IAAA,mCAAmC,CAAC,IAAS,EAAE,MAAA,GAAkB,IAAI,EAAA;AACjE,QAAA,IAAI,MAAM,GACN,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,gBAAA,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;;iBAE/C;qBAAM;AACH,oBAAA,MAAM,IAAI,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBAChF;aACJ;SACJ;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAED,0BAA0B,GAAA;AACtB,QAAA,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC;KAC7C;IAED,wBAAwB,GAAA;QACpB,OAAO,CAAA,EAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC;KACjD;IAED,oBAAoB,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS,KAAK,sBAAsB,CAAC,UAAU,CAAC,KAAK;cAC3D,IAAI,CAAC,0BAA0B;AACjC,cAAE,IAAI,CAAC,mBAAmB,CAAC;KAClC;8GAtIQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdxB,g/cAiRA,EAAA,MAAA,EAAA,CAAA,iuOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpQa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,g/cAAA,EAAA,MAAA,EAAA,CAAA,iuOAAA,CAAA,EAAA,CAAA;wDAKL,MAAM,EAAA,CAAA;sBAA3B,SAAS;uBAAC,SAAS,CAAA;gBACU,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;gBACnB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAKF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAiBG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAGE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBASG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;;AAiFV,CAAA,UAAiB,sBAAsB,EAAA;AACnC,IAAA,IAAY,UAGX,CAAA;AAHD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAHW,UAAU,GAAV,sBAAU,CAAA,UAAA,KAAV,iCAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,WAGX,CAAA;AAHD,IAAA,CAAA,UAAY,WAAW,EAAA;AACnB,QAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAHW,WAAW,GAAX,sBAAW,CAAA,WAAA,KAAX,kCAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,qBAGX,CAAA;AAHD,IAAA,CAAA,UAAY,qBAAqB,EAAA;AAC7B,QAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,QAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAHW,qBAAqB,GAArB,sBAAqB,CAAA,qBAAA,KAArB,4CAAqB,GAGhC,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EAfgB,sBAAsB,KAAtB,sBAAsB,GAetC,EAAA,CAAA,CAAA;;MEjJY,oBAAoB,CAAA;IAoB7B,IACI,eAAe,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC7C;IAED,IACI,gBAAgB,CAAC,KAAc,EAAA;QAC/B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;AAKD,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,CAAC,UAAU,EAAE;;AAEd,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3C;KACJ;AAED,IAAA,WAAA,CACY,iBAAmC,EACnC,eAA+B,EAC/B,SAAmB,EAAA;QAFnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QA7CtB,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAChC,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QACxB,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAC1B,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEhC,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QACpB,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAW,OAAO,CAAC;AAC3B,QAAA,IAAA,CAAA,IAAI,GAAsB,IAAI,YAAY,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,gBAAgB,GAA0B,IAAI,YAAY,EAAE,CAAC;QAC/D,IAAQ,CAAA,QAAA,GAAgC,IAAI,CAAC;QAE7C,IAAS,CAAA,SAAA,GAAQ,KAAK,CAAC;QACvB,IAAe,CAAA,eAAA,GAAQ,KAAK,CAAC;AAe7B,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;QAiBtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;AAEzD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,CAAC,UAAU,EAAE;;AAEd,oBAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;iBAClD;aACJ;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAED,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrC,gBAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,YAAA,cAAc,EAAE,CAAC,KAAK,KAAI;AACtB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,MAAA,GAAkB,KAAK,EAAE,eAAwB,IAAI,EAAA;AAChE,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,YAAY,EAAE;gBACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aAC7C;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aAChD;AACD,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACpC;KACJ;IAEO,mBAAmB,CAAC,SAAkB,KAAK,EAAA;AAC/C,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,gBAAgB,GAAaZ,UAAC,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACzE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAE5D,YAAA,IAAI,CAAC,CAAC,UAAU,EAAE;AACd,gBAAA,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;;AAEhC,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;;oBAG5C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,oBAAAA,UAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;iBAChF;qBAAM;;oBAEH,UAAU,CAAC,MAAK;AACZ,wBAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;qBAClD,EAAE,GAAG,CAAC,CAAC;;oBAGR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,oBAAAA,UAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;iBACnF;aACJ;SACJ;;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAGnC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;;QAGtB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,cAAc,CAAC,UAAmB,KAAK,EAAA;AAC3C,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;;YAElB,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;aAC7C;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjB,UAAU,CAAC,MAAK;oBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE;AACjC,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;AACxE,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;qBACvE;iBACJ,EAAE,GAAG,CAAC,CAAC;aACX;SACJ;KACJ;AAED;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;;;YAI9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,oBAAoB,EAAE;gBAC9E,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC3B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAgC,CAAC;YAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;;YAGtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;;AAEzC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;;YAGH,MAAM,QAAQ,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;YAC7F,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAEpC,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClC,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACxD;;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;;;YAKrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;YAG1C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;YAG7C,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;;YAGrE,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;YAGrE,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;SAChC;KACJ;AAED;;AAEG;IACK,KAAK,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ;8GA5OQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AAC5B,iBAAA,CAAA;yIAEY,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,IAAI,EAAA,CAAA;sBAAb,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAOH,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAOF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;gBAUN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCzChC,qBAAqB,CAAA;AAM9B,IAAA,WAAA,CACY,iBAAmC,EACnC,eAA+B,EAC/B,SAAmB,EACnB,yBAAmD,EAAA;QAHnD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACnB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA0B;AATtD,QAAA,IAAA,CAAA,SAAS,GAAuD;YACrE,qBAAqB,CAAC,eAAe,CAAC,KAAK;SAC9C,CAAC;QASE,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACH,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;;;AAI/D,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB;iBACvD,uBAAuB,CAAC,qBAAqB,CAAC;AAC9C,iBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAiC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;;YAG1C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;;YAGhE,MAAM,GAAG,GAAI,qBAAqB,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;;;;AAIjG,YAAA,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;;AAG3B,YAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC7C,YAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;SAClD;KACJ;AAED;;AAEG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ;8GAzDQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC7B,iBAAA,CAAA;gLAEY,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MCJG,wBAAwB,CAAA;IAMjC,IACI,WAAW,CAAC,CAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtBA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAG;AACzB,YAAA,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;;IAGD,IACI,YAAY,CAAC,CAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvBA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAG;AAC1B,YAAA,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;;AAMD,IAAA,WAAA,GAAA;;QAzBS,IAAK,CAAA,KAAA,GAAW,GAAG,CAAC;QACpB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAWtC,IAAa,CAAA,aAAA,GAAgB,EAAE,CAAC;QASvB,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,UAAU,GAAoBA,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAG9E,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG;;;SAGnB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG;;;SAGpB,CAAC;KACL;IAED,QAAQ,GAAA;KAEP;AAED,IAAA,aAAa,CAAC,IAAe,EAAA;AACzB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;8GA/CQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yMCXrC,61DAsCA,EAAA,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD3Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,QAAA,EAAA,61DAAA,EAAA,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA,CAAA;wDAMpB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAIF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAUF,YAAY,EAAA,CAAA;sBADf,KAAK;gBAQG,YAAY,EAAA,CAAA;sBAApB,KAAK;;AA2BV,CAAA,UAAiB,wBAAwB,EAAA;AACrC,IAAA,IAAY,YAKX,CAAA;AALD,IAAA,CAAA,UAAY,YAAY,EAAA;AACpB,QAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,QAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,YAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,QAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC7B,KAAC,EALW,YAAY,GAAZ,wBAAY,CAAA,YAAA,KAAZ,qCAAY,GAKvB,EAAA,CAAA,CAAA,CAAA;AAEY,IAAA,wBAAA,CAAA,YAAY,GAAkE;AACvF,QAAA,CAAC,wBAAwB,CAAC,YAAY,CAAC,OAAO,GAAG;AAC7C,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE,MAAK;aACb;AACJ,SAAA;AACD,QAAA,CAAC,wBAAwB,CAAC,YAAY,CAAC,MAAM,GAAG;AAC5C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,eAAe;YAC9B,OAAO,EAAE,MAAK;aACb;AACJ,SAAA;AACD,QAAA,CAAC,wBAAwB,CAAC,YAAY,CAAC,YAAY,GAAG;AAClD,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,aAAa,EAAE,wBAAwB;YACvC,OAAO,EAAE,MAAK;aACb;AACJ,SAAA;AACD,QAAA,CAAC,wBAAwB,CAAC,YAAY,CAAC,UAAU,GAAG;AAChD,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,aAAa,EAAE,0BAA0B;YACzC,OAAO,EAAE,MAAK;aACb;AACJ,SAAA;KACJ,CAAC;AACN,CAAC,EAlCgB,wBAAwB,KAAxB,wBAAwB,GAkCxC,EAAA,CAAA,CAAA;;MErFY,iBAAiB,CAAA;AAsB1B,IAAA,WAAA,GAAA;QArBS,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAEjC,IAAI,CAAA,IAAA,GAAc,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,KAAK,GAA6B,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;AAClE,QAAA,IAAA,CAAA,KAAK,GAA6B,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;QAIlE,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAC/B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QACjC,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QACjC,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAG7B,QAAA,IAAA,CAAA,MAAM,GAAoC,iBAAiB,CAAC,MAAM,CAAC;AACnE,QAAA,IAAA,CAAA,MAAM,GAAoC,iBAAiB,CAAC,MAAM,CAAC;QAE5E,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;KAEd;AAEhB,IAAA,QAAQ,MAAW;IAEnB,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;KAC1C;AAED,IAAA,aAAa,CAAC,IAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;KACxC;IAED,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAACf,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACzF;8GA1CQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qeCV9B,y9FAyDA,EAAA,MAAA,EAAA,CAAA,stMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,y9FAAA,EAAA,MAAA,EAAA,CAAA,stMAAA,CAAA,EAAA,CAAA;wDAKZ,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;AA8BV,CAAA,UAAiB,iBAAiB,EAAA;AAC9B,IAAA,IAAY,MAIX,CAAA;AAJD,IAAA,CAAA,UAAY,MAAM,EAAA;AACd,QAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,QAAA,MAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC7B,KAAC,EAJW,MAAM,GAAN,iBAAM,CAAA,MAAA,KAAN,wBAAM,GAIjB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,MAGX,CAAA;AAHD,IAAA,CAAA,UAAY,MAAM,EAAA;AACd,QAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,KAAC,EAHW,MAAM,GAAN,iBAAM,CAAA,MAAA,KAAN,wBAAM,GAGjB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,oBAEX,CAAA;AAFD,IAAA,CAAA,UAAY,oBAAoB,EAAA;AAC5B,QAAA,oBAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACf,KAAC,EAFW,oBAAoB,GAApB,iBAAoB,CAAA,oBAAA,KAApB,sCAAoB,GAE/B,EAAA,CAAA,CAAA,CAAA;AAEY,IAAA,iBAAA,CAAA,eAAe,GAAG;AAC3B,QAAA,CAAC,oBAAoB,CAAC,WAAW,GAAG;AAChC,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,aAAa,EAAE,EAAE;AACpB,SAAA;KACJ,CAAC;AACN,CAAC,EAtBgB,iBAAiB,KAAjB,iBAAiB,GAsBjC,EAAA,CAAA,CAAA;;MEjEY,sBAAsB,CAAA;IAM/B,WACY,CAAA,OAAe,EACf,eAA+B,EAAA;QAD/B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAPlC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QACrC,IAAc,CAAA,cAAA,GAAkB,EAAE,CAAC;QAO/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,YAAW;AAC7F,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC;KACN;AAED,IAAA,QAAQ,MAAW;AAEnB;;;;;;;AAOG;IACK,MAAM,iBAAiB,CAC3B,KAAqB,EACrB,GAAc,GAAA,GAAG,EACjB,WAAA,GAA6B,EAAE,EAAA;AAE/B,QAAA,MAAM,QAAQ,GAAqB,KAAK,CAAC,QAAQ,CAAC;QAElD,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;gBAC1B,MAAM,QAAQ,GAAW,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrF,gBAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;AACjB,oBAAA,GAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC;iBACzB;AAED,gBAAA,MAAM,IAAI,GAAgB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;oBACrC,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAW,CAAC;AACxD,oBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;AACnC,wBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;wBAsBhFN,UAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAI;4BAChB,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,yBAAC,CAAC,CAAC;;qBAEN;oBACD,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;iBAC3C;gBAED,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;aAChE;SACJ;AAED,QAAA,OAAOA,UAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;KACnD;AAED,IAAA,IAAI,CAAC,GAAuB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAa,CAAC,CAAC;KAC7C;8GAlFQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,sHCZnC,guBAWA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,guBAAA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,CAAA;4GAKjB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MEKG,wBAAwB,CAAA;AAiBjC,IAAA,WAAA,CAAoB,GAAe,EAAU,OAAe,EAA+B,UAAkB,EAAA;QAAzF,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QAA+B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAhBpG,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;QAEpC,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;QACtC,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QACvC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAE5B,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QACrB,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QAEpC,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;AAE/B,QAAA,IAAA,CAAA,YAAY,GAAwB,IAAI,YAAY,EAAS,CAAC;QAEhE,IAAc,CAAA,cAAA,GAAuB,EAAE,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAkB,CAAC,OAAO,CAAC,CAAC;QAGvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACV;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAED,WAAW,GAAA;QACP,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACV;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACpC;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACV;AAED,QAAA,IAAI,OAAO,CAAC,sBAAsB,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YAChF,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;IAEO,KAAK,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1E;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC5C;aAAM;YACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;KACJ;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACzD;aAAM;YACH,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACpC;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI;AACA,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAuB,CAAC;gBACxF,IAAI,KAAK,EAAE;AACP,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;iBAC/B;aACJ;YAAC,OAAO,GAAG,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;aAChF;SACJ;KACJ;AAEO,IAAA,YAAY,CAAC,EAAS,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,OAAO;SACV;AAED,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEf,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,2BAA2B,EAAE,CAAC;aACtC;SACJ;KACJ;AAED;;;AAGG;AACK,IAAA,aAAa,CAAC,EAAS,EAAA;QAC3B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAClB;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,KAAK,CAAC,EAAS,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,OAAO;SACV;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACtD;AAEO,IAAA,cAAc,CAAC,MAAM,EAAA;AACzB,QAAA,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1C,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC;aACf;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACjF,SAAC,CAAC,CAAC;KACN;IAEO,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpF,SAAC,CAAC,CAAC;KACN;IAEO,iCAAiC,GAAA;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnG,SAAC,CAAC,CAAC;KACN;IAEO,mCAAmC,GAAA;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACtG,SAAC,CAAC,CAAC;KACN;IAEO,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;KACN;IAEO,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAChC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;AA5KQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kEAiBqC,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAjBxE,wBAAwB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC7B,iBAAA,CAAA;;0BAkBkE,MAAM;2BAAC,WAAW,CAAA;yCAhBxE,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;ACNL,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;IAqBpD,IACI,QAAQ,CAAC,KAAc,EAAA;QACvB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B,EAAE,GAAG,CAAC,CAAC;KACX;IAED,IACI,eAAe,CAAC,KAAc,EAAA;QAC9B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC,EAAE,GAAG,CAAC,CAAC;KACX;AAID,IAAA,WAAA,CACY,OAAe,EACf,kBAAqC,EACrC,yBAAmD,EACnD,2BAAuD,EAAA;AAE/D,QAAA,KAAK,EAAE,CAAC;QALA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;QACrC,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA0B;QACnD,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA4B;QAxCzB,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QAEpE,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAE3B,IAAe,CAAA,eAAA,GAAW,GAAG,CAAC;AAEvC,QAAA,IAAA,CAAA,mBAAmB,GAAiD,qBAAqB,CAAC,eAAe,CAAC;QAE1G,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAe,CAAA,eAAA,GAAQ,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAW,CAAC;QAmBlE,IAAE,CAAA,EAAA,GAAWH,EAAM,EAAE,CAAC;AASlB,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC/E,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;;SAE1B,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;;QAEX,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC7C;AAED;;;AAGG;IACH,aAAa,CAAC,UAAgC,IAAI,EAAA;QAC9C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;YAC7B,OAAO;SACV;QACD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC;;AAE9B,QAAA,OAAO,MAAM,EAAE,aAAa,EAAE;AAC1B,YAAA,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC;AAC/B,YAAA,IAAI,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE;gBACxD,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;aACT;SACJ;QACD,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;;AAG7B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;SACvD;KACJ;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,MAAA,GAAkB,CAAC,IAAI,CAAC,SAAS,EAAA;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;KACJ;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,MAAW,EAAA;AAChB,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;SACzE;KACJ;AAED;;;AAGG;IACH,gBAAgB,CAAC,IAAkB,IAAI,EAAA;QACnC,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7B;KACJ;AAED;;AAEG;IACH,eAAe,GAAA;QACX,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,MAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED;;AAEG;IACH,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChF;KACJ;AAED,IAAA,OAAO,CAAC,SAAkB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;SACnC;KACJ;8GAzJQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEK,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BpD,8mCAyBA,EAAA,MAAA,EAAA,CAAA,+tQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDAa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,8mCAAA,EAAA,MAAA,EAAA,CAAA,+tQAAA,CAAA,EAAA,CAAA;0LAKoB,iBAAiB,EAAA,CAAA;sBAA1D,WAAW;uBAAC,kBAAkB,CAAA;;sBAAG,KAAK;gBACa,SAAS,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACzC,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAeF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAQF,eAAe,EAAA,CAAA;sBADlB,KAAK;;;ME9CG,sBAAsB,CAAA;AAO/B,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;8GATV,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yKCPnC,uYAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDGa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,uYAAA,EAAA,CAAA;wDAKlB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEJG,uBAAuB,CAAA;IAIhC,IACI,IAAI,CAAC,CAAY,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AAChC,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,WAAA,GAAA;KACC;IAED,QAAQ,GAAA;KACP;IAED,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SACxB;KACJ;8GA7BQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,kFCRpC,mzDAuCA,EAAA,MAAA,EAAA,CAAA,krDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,mzDAAA,EAAA,MAAA,EAAA,CAAA,krDAAA,CAAA,EAAA,CAAA;wDASxB,IAAI,EAAA,CAAA;sBADP,KAAK;;;MEPG,gCAAgC,CAAA;AAEzC,IAAA,WAAA,CAAmB,iBAAmC,EAAA;QAAnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;KACrD;8GAHQ,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AAC3C,iBAAA,CAAA;;;MCCY,sBAAsB,CAAA;AAC/B,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;IAIjB,YAAY,GAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChE;IAE2B,YAAY,GAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnE;8GAXQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAChC,iBAAA,CAAA;+EAI6B,UAAU,EAAA,CAAA;sBAAnC,KAAK;uBAAC,iBAAiB,CAAA;gBAEI,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;gBAIE,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;;;ACKxB,MAAO,6BAA8B,SAAQ,gBAAgB,CAAA;IAY/D,IACI,MAAM,CAAC,CAAM,EAAA;;AAEb,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;;AAEvB,QAAA,IAAIJ,UAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAGC,EAAM,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClE,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;;AAEvF,oBAAA,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;iBAExF,CAAC,CACL,CAAC;aACL;SACJ;QACD,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,oBAAA,IAAI,CAAC,QAAQ,GAAGD,UAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;iBACjD;aACJ;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;SACnD,EAAE,GAAG,CAAC,CAAC;KACX;IAOD,IAAa,SAAS,CAAC,CAAS,EAAA;QAC5B,IAAI,CAAC,WAAW,GAAGA,UAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAOA,UAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACxC;IAiBD,IACI,IAAI,CAAC,CAAQ,EAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;KACnD;IASD,IACI,YAAY,CAAC,CAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;KACnD;AAOD,IAAA,WAAA,CACY,iBAAmC,EACnC,eAA+B,EAC/B,SAAmB,EACnB,0BAAqD,EAAA;AAE7D,QAAA,KAAK,EAAE,CAAC;QALA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACnB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;QA/FxD,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;QAC3B,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAChB,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAmC/C,QAAA,IAAA,CAAA,YAAY,GAClB,IAAI,YAAY,EAAyC,CAAC;QAEtD,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;;;AAoBnC;;;AAGG;QACK,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAOjB,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;AAE/E;;;AAGG;QACK,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAO1B,IAAQ,CAAA,QAAA,GAAyC,IAAI,CAAC;AAG9D,QAAA,IAAA,CAAA,eAAe,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;KASzE;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YAClE,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,CAAC,EACF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;YACjC,IAAI,EAAE,EAAE;;;aAGP;SACJ,CAAC,CACL,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;;;YAI9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,6BAA6B,EAAE;gBACvF,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC3B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAyC,CAAC;AACvE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;;YAGhD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;;AAE1C,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;;YAGH,MAAM,QAAQ,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;YAC7F,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,YAAA,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAErD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAEzC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,YAAA,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;AAGlC,YAAA,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;;YAG7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACxC;KACJ;IAEO,cAAc,GAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;;YAErC,IAAI,YAAY,GAAGA,UAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;YAa3C,IAAI,IAAI,GAAiC,EAAE,CAAC;AAC5C,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;;gBAE5B,IAAI,GAAGA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACrE;iBAAM;AACH,gBAAA,IAAI,GAAGA,UAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM;oBAC/B,KAAK,EAAEA,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAC9B,KAAK,EAAEA,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;AAClC,iBAAA,CAAC,CAAC,CAAC;aACP;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;AAErC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAGA,UAAC,CAAC,GAAG,CACtBA,UAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAI;gBAClB,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC;aACxE,CAAC,EACF,CAAC,CAAC,EAAE,CAAC,MAAM;AACP,gBAAA,KAAK,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,WAAW,GAAG,IAAI,GAAG,CAAC;gBACnD,KAAK,EAAEA,UAAC,CAAC,IAAI,CAACA,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3C,aAAA,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;;;;;;YAQ3E,UAAU,CAAC,MAAK;;;;AAIZ,gBAAA,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;;AAG9B,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;iBAC9C;aACJ,EAAE,GAAG,CAAC,CAAC;AAER,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;SAChC;KACJ;AAEO,IAAA,YAAY,CAAC,MAAM,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;YAEjBA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AAC1B,gBAAA,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,EAAE;oBACnC,CAAC,CAAC,IAAI,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC9D,oBAAA,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;iBAC3B;AACL,aAAC,CAAC,CAAC;SACN;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACrB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,OAAO,EAAE;gBACL,aAAa,EAAE,MAAK;AAChB,oBAAA,IAAI,CAAC,0BAA0B;AAC1B,yBAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;0BAC7B,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC/C;AACJ,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,YAAY,CAAC,OAAY,EAAA;QAC7B,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,GAAGA,UAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;;AAEvB,QAAA,MAAM,KAAK,GAAQA,UAAC,CAAC,MAAM,CACvBA,UAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM;AACxB,YAAA,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,CAAC,EAAE,IAAI;AAChB,SAAA,CAAC,CAAC,EACH,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,6BAA6B,CAAC,mBAAmB,CAAC,EAAE,CACzE,CAAC;AACF,QAAA,UAAU,GAAGA,UAAC,CAAC,OAAO,CAClB,UAAU,EACVA,UAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAC1BA,UAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC;;QAGFA,UAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,KAAI;YACtB,UAAU,GAAGA,UAAC,CAAC,MAAM,CACjB,UAAU,EACV,CAAC,CAAC,KAAK,CAAC,CAACA,UAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAACA,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CACjF,CAAC;AACN,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,UAAU,CAAC;KACrB;8GAzRQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AACrC,iBAAA,CAAA;mLAEY,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBASF,MAAM,EAAA,CAAA;sBADT,KAAK;gBA4BI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAKM,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAYG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAUF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAMG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAQF,YAAY,EAAA,CAAA;sBADf,KAAK;;;MCpGG,eAAe,CAAA;IAKxB,WAAmB,CAAA,OAAwB,EAAE,OAAoC,EAAA;AAC7E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;KAClC;AACJ;;ACVD;;;AAGK;AAQC,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;IAOrD,WAAoC,CAAA,OAAmB,EAAmB,IAAY,EAAA;AAClF,QAAA,KAAK,EAAE,CAAC;QADwB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAAmB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAElF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAmB,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC/F;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACrD;IAEe,WAAW,GAAA;QACvB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;AAEO,IAAA,OAAO,CAAC,OAA8B,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACnC;8GA3BQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AAC3B,iBAAA,CAAA;oGAMmB,OAAO,EAAA,CAAA;sBADtB,MAAM;;;MCPE,sBAAsB,CAAA;AAI/B,IAAA,WAAA,GAAA;KACC;IAED,QAAQ,GAAA;KACP;8GARQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iGCRnC,ooEA2CA,EAAA,MAAA,EAAA,CAAA,sWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDnCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,ooEAAA,EAAA,MAAA,EAAA,CAAA,sWAAA,CAAA,EAAA,CAAA;wDAKlB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEHG,kBAAkB,CAAA;AAE7B,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;8GALU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,kDCP/B,8CAEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDKa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA;;;AEQlB,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAkB3D,IAAA,WAAA,CAAoB,2BAAuD,EAAA;AACvE,QAAA,KAAK,EAAE,CAAC;QADQ,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA4B;QAdlE,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAW,2BAA2B,CAAC;AAE3D;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAKnB,IAAE,CAAA,EAAA,GAAWL,EAAM,EAAE,CAAC;AAIlB,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;;YAE/E,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;aAC/C;iBAAM;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;SACJ,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;;;QAGX,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,GAAG;gBACjB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa;aACzD,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;AAChD,SAAC,CAAC,CAAC;KACN;AAED,IAAA,aAAa,CAAC,MAAkB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,OAAO,GAAI,MAAM,CAAC,MAAkB,EAAE,aAAwB,CAAC;aACrF;YACD,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC9F;KACJ;8GAtDQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAiB,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uTCXtC,o3EA+CA,EAAA,MAAA,EAAA,CAAA,oyDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,oBAAoB,EAAA,QAAA,EAAA,o3EAAA,EAAA,MAAA,EAAA,CAAA,oyDAAA,CAAA,EAAA,CAAA;4FAKA,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;gBACnB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;METG,yBAAyB,CAAA;AAEpC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;8GALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,8DCPtC,sCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,sCAAA,EAAA,CAAA;;;MEKvB,sBAAsB,CAAA;AAK/B,IAAA,WAAA,GAAA;AAHU,QAAA,IAAA,CAAA,QAAQ,GAA4B,IAAI,YAAY,EAAa,CAAC;KAI3E;IAED,QAAQ,GAAA;KACP;AAED,IAAA,QAAQ,CAAC,IAAe,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;8GAdQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,sHCRnC,ytDAkCA,EAAA,MAAA,EAAA,CAAA,6gDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD1Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,ytDAAA,EAAA,MAAA,EAAA,CAAA,6gDAAA,CAAA,EAAA,CAAA;wDAKlB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;MEGE,WAAW,CAAA;IA2BpB,IACI,IAAI,CAAC,CAAc,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;;AAEf,QAAA,IAAI,CAAC,iBAAiB,GAAGJ,UAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;;QAGnG,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAMD,IACI,QAAQ,CAAC,CAAU,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;KACzB;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IACI,UAAU,CAAC,CAAU,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAoBD,IAAA,WAAA,CAAoB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AAnFzB,QAAA,IAAA,CAAA,IAAI,GAA+C,IAAI,YAAY,EAAgC,CAAC;;QAKrG,IAAiB,CAAA,iBAAA,GAAW,oBAAoB,CAAC;QACjD,IAAe,CAAA,eAAA,GAAW,mBAAmB,CAAC;QAC9C,IAA4B,CAAA,4BAAA,GAAY,KAAK,CAAC;;QAG9C,IAAM,CAAA,MAAA,GAAyB,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAA8B,WAAW,CAAC,MAAM,CAAC;;AAGvD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,iBAAiB,CAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,uBAAuB,EAAa,CAAC;AAEtD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;AAE1D;;;AAGG;QACH,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;;QAoBlC,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;QAsBlB,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;;QAGhC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAEpC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;AAGhB,QAAA,IAAA,CAAA,aAAa,GAAqC,IAAI,YAAY,EAAsB,CAAC;AACzF,QAAA,IAAA,CAAA,YAAY,GAAoC,IAAI,YAAY,EAAqB,CAAC;QAEhG,IAAQ,CAAA,QAAA,GAAgB,EAAE,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAoBA,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzE,QAAA,IAAA,CAAA,SAAS,GAAkC,WAAW,CAAC,UAAU,CAAC;AAC3E,QAAA,IAAA,CAAA,QAAQ,GAA2B,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;AA6ClE;;;;;AAKG;QACH,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAS,EAAE,IAAe,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAhDnF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,6BAA6B,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,iBAAiB,CAAC;KACtD;AAED,IAAA,QAAQ,MAAK;IAEb,eAAe,GAAA;QACX,UAAU,CAAC,MAAK;;YAEZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACN;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAK;YAC9BA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;KACL;AAED;;AAEG;IACK,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;;QAGxCA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;AACvB,YAAA,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAChC;iBAAM;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC9B;AACL,SAAC,CAAC,CAAC;KACN;AAUD;;;AAGG;IACH,YAAY,CAAC,IAAe,EAAA,GAAI;AAEhC;;;;;AAKG;IACH,WAAW,CAAC,IAAiB,EAAE,KAAA,GAAgB,CAAC,CAAC,EAAE,SAA2B,IAAI,EAAA;AAC9E,QAAA,KAAK,EAAE,CAAC;QACRA,UAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAY,KAAI;AACzB,YAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAEtB,YAAA,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;;YAGlBA,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAI;AACpB,gBAAA,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,CAAC,aAAa,EAAE;AACjB,oBAAA,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC;iBACnC;AACL,aAAC,CAAC,CAAC;;YAEH,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC7B,gBAAA,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;aACxB;;AAED,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;iBACtB;aACJ;;AAED,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC7B,oBAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;iBACvB;aACJ;AACD,YAAA,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACrB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,wBAAwB,EAAE;AACpE,gBAAA,CAAC,CAAC,OAAO,GAAG,MAAK;AACb,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjC,iBAAC,CAAC;aACL;AACL,SAAC,CAAC,CAAC;KACN;;AAGD,IAAA,IAAI,CAAC,MAA6B,EAAA;;;;AAI9B,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE;;AAErD,YAAA,MAAM,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AACvC,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW;AAC9B,iBAAA,IAAI,CACD,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CACV;AACA,iBAAA,SAAS,CAAC,CAAC,EAAE,KAAI;;gBAEd,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE,KAAK,WAAW,EAAE;AACzC,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,wBAAA,MAAM,EAAE,WAAW;AACnB,wBAAA,WAAW,EAAE,EAAE;AAClB,qBAAA,CAAC,CAAC;iBACN;AACL,aAAC,CAAC,CAAC;YACP,UAAU,CAAC,MAAK;gBACZ,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/B,EAAE,IAAI,CAAC,CAAC;SACZ;KACJ;AAED,IAAA,UAAU,CAAC,MAAW,EAAA;;;;AAIlB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;AAED,IAAA,SAAS,CAAC,IAAI,EAAA;;KAEb;IAED,YAAY,GAAA;;KAEX;IAED,SAAS,GAAA;AACL,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB;AAED,IAAA,OAAO,CAAC,MAAM,EAAA;AACV,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAEvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,MAAM,EAAA;AACd,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;;AAG3B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW;AAC9B,aAAA,IAAI,CACD,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CACV;AACA,aAAA,SAAS,CAAC,CAAC,EAAE,KAAI;;YAEd,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE,KAAK,WAAW,EAAE;AACzC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,WAAW,EAAE,EAAE;AAClB,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;QACP,UAAU,CAAC,MAAK;YACZ,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,EAAE,IAAI,CAAC,CAAC;KACZ;IAED,UAAU,GAAA;;KAET;IAED,WAAW,CAAC,UAAiC,EAAE,MAAc,EAAA;AACzD,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/BA,UAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AACnB,YAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,oBAAoB,CAAC,IAAI,EAAA;QACrB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/D;aAAM;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SAC7D;KACJ;8GAnSQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,SAAS;6EAEI,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEE,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAGG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,4BAA4B,EAAA,CAAA;sBAApC,KAAK;gBAGG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAiBF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAqBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAUG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAII,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;;AA0NX,CAAA,UAAiB,WAAW,EAAA;AACxB,IAAA,IAAY,MAEX,CAAA;AAFD,IAAA,CAAA,UAAY,MAAM,EAAA;AACd,QAAA,MAAA,CAAA,MAAA,CAAA,2BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,2BAAyB,CAAA;AAC7B,KAAC,EAFW,MAAM,GAAN,WAAM,CAAA,MAAA,KAAN,kBAAM,GAEjB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAY,UAGX,CAAA;AAHD,IAAA,CAAA,UAAY,UAAU,EAAA;AAClB,QAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,QAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,KAAC,EAHW,UAAU,GAAV,WAAU,CAAA,UAAA,KAAV,sBAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;AAaD,IAAA,MAAa,WAAW,CAAA;AAEvB,KAAA;AAFY,IAAA,WAAA,CAAA,WAAW,cAEvB,CAAA;AAED,IAAA,MAAa,aAAa,CAAA;AAEzB,KAAA;AAFY,IAAA,WAAA,CAAA,aAAa,gBAEzB,CAAA;AACL,CAAC,EA5BgB,WAAW,KAAX,WAAW,GA4B3B,EAAA,CAAA,CAAA,CAAA;AAOK,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAI7C,IACI,QAAQ,CAAC,CAAmB,EAAA;AAC5B,QAAA,IAAI,CAACF,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACtB;KACJ;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,WAAA,CAAY,OAAe,EAAA;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;;AAdT,QAAA,IAAA,CAAA,eAAe,GAAmC,IAAI,YAAY,EAAoB,CAAC;QAe7F,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;KAClD;AAEQ,IAAA,YAAY,CAAC,IAAe,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;aACxD;iBAAM;AACH,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;SACJ;;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,EAAE,OAAO,EAAE;AACf,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;KACJ;8GAjCQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0JCtV7B,wkSAoKA,EAAA,MAAA,EAAA,CAAA,gzPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDkLa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACI,UAAU,EAAA,QAAA,EAAA,wkSAAA,EAAA,MAAA,EAAA,CAAA,gzPAAA,CAAA,EAAA,CAAA;6EAMV,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAGH,QAAQ,EAAA,CAAA;sBADX,KAAK;;AAqCJ,MAAO,qBAAsB,SAAQ,WAAW,CAAA;AAClD,IAAA,WAAA,CAAY,OAAe,EAAA;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;KAChD;8GAJQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6EC/XlC,wkSAoKA,EAAA,MAAA,EAAA,CAAA,gzPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD2Na,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,wkSAAA,EAAA,MAAA,EAAA,CAAA,gzPAAA,CAAA,EAAA,CAAA;;;MEpXjB,qBAAqB,CAAA;AAS9B,IAAA,WAAA,GAAA;QARS,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAA0B,IAAI,YAAY,CAAU,IAAW,CAAC,CAAC;AACjF,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,CAAM,IAAW,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,oBAAoB,GAAsB,IAAI,YAAY,CAAM,IAAW,CAAC,CAAC;KAEvE;AAEhB,IAAA,QAAQ,MAAW;IAEnB,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC9C;KACJ;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxC;8GA1BQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+SCPlC,wrCAmBA,EAAA,MAAA,EAAA,CAAA,ihHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,wrCAAA,EAAA,MAAA,EAAA,CAAA,ihHAAA,CAAA,EAAA,CAAA;wDAKjB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;MENE,sBAAsB,CAAA;AAK/B,IAAA,WAAA,GAAA;QAJS,IAAI,CAAA,IAAA,GAAgB,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;KAG/C;IAED,QAAQ,GAAA;KACP;AAED,IAAA,WAAW,CAAC,IAAe,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,IAAI,EAAE,OAAO,EAAE;YACf,IAAI,EAAE,OAAO,EAAE,CAAC;SACnB;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/C;8GAjBQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,8JCRnC,wQAMA,EAAA,MAAA,EAAA,CAAA,ktCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,wQAAA,EAAA,MAAA,EAAA,CAAA,ktCAAA,CAAA,EAAA,CAAA;wDAKlB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;;MEUE,sBAAsB,CAAA;IAuB/B,IACI,OAAO,CAAC,CAAoB,EAAA;;AAE5B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACrB;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;KAC/E;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;KACzG;IAiBD,IACI,IAAI,CAAC,CAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAcD;;;AAGG;IACH,IACI,QAAQ,CAAC,CAAU,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGD,IACI,QAAQ,CAAC,KAAK,EAAA;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;QAGvB,IAAI,CAAC,aAAa,EAAE,CAAC;;AAGrB,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBACrD,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,CAClD,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,EACxD,CAAC,CACJ,CAAC;AACN,aAAC,CAAC,CAAC;SACN;aAAM;;YAEH,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBACrD,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,CAClD,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,CAC3D,CAAC;AACN,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAUD,IACI,IAAI,CAAC,CAAS,EAAA;;;KAGjB;AAED,IAAA,WAAA,GAAA;;AArIA,QAAA,IAAA,CAAA,aAAa,GAAsB;AAC/B,YAAA;AACI,gBAAA,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;iBAC3D;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChC;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACzC;AACJ,aAAA;SACJ,CAAC;QACF,IAAQ,CAAA,QAAA,GAAsB,EAAE,CAAC;QAexB,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;;QAMpC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAGtC;;;AAGG;AACO,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;QAYzD,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;QAE3B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAI1B,IAAwB,CAAA,wBAAA,GAAY,KAAK,CAAC;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;AACtD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAkDhE,QAAA,IAAA,CAAA,YAAY,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,QAAQ,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,QAAA,IAAA,CAAA,UAAU,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,QAAQ,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,QAAA,IAAA,CAAA,SAAS,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,WAAW,GAAoB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAU/E,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,6BAA6B,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,6BAA6B,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACxB;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACrD,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,6BAA6B,CAAC;AAC/D,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,MAAK;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,6BAA6B,CAAC;AAC7D,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,iCAAiC,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,QAAQ,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,IAAqB,KAAI;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,iCAAiC,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,QAAQ,CAAC;KAC1C;AAED,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;QACX,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB,EAAE,GAAG,CAAC,CAAC;KACX;IAEO,kBAAkB,GAAA;QACtB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAI;AACnB,YAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACT,oBAAA,CAAE,CAAC,UAAW,CAAC,OAAO,EAAE,CAAC;AACzB,oBAAA,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;iBAC7B;AACL,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;KAC7D;AAED,IAAA,WAAW,CAAC,IAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;KAC5D;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SAC1B;KACJ;AAED,IAAA,SAAS,CAAC,UAA4C,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAA2B,CAAC;SACnD;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,YAAY,CAAC,gBAAmC,EAAA;AAC5C,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,QAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAA0B,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC3D,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACjC;iBAAM;AACH,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;KACrD;AAED,IAAA,iBAAiB,CAAC,eAAuC,EAAA;QACrD,IAAI,eAAe,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;SACzE;KACJ;8GAtOQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAuCjB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DrC,iuMAmHA,EAAA,MAAA,EAAA,CAAA,u0FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Fa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,iuMAAA,EAAA,MAAA,EAAA,CAAA,u0FAAA,CAAA,EAAA,CAAA;wDA4BvB,OAAO,EAAA,CAAA;sBADV,KAAK;gBAcG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAE6B,OAAO,EAAA,CAAA;sBAAzC,YAAY;uBAAC,mBAAmB,CAAA;gBACxB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAOI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGH,IAAI,EAAA,CAAA;sBADP,KAAK;gBAUG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAGG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAQH,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAYF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAyCF,IAAI,EAAA,CAAA;sBADP,KAAK;;AAwGV,CAAA,UAAiB,sBAAsB,EAAA;AAOnC,IAAA,MAAa,UAAU,CAAA;AAEtB,KAAA;AAFY,IAAA,sBAAA,CAAA,UAAU,aAEtB,CAAA;AAED,IAAA,MAAa,SAAS,CAAA;AAErB,KAAA;AAFY,IAAA,sBAAA,CAAA,SAAS,YAErB,CAAA;AAED,IAAA,MAAa,iBAAiB,CAAA;AAE7B,KAAA;AAFY,IAAA,sBAAA,CAAA,iBAAiB,oBAE7B,CAAA;AAED,IAAA,MAAa,kBAAkB,CAAA;AAE9B,KAAA;AAFY,IAAA,sBAAA,CAAA,kBAAkB,qBAE9B,CAAA;AACL,CAAC,EAtBgB,sBAAsB,KAAtB,sBAAsB,GAsBtC,EAAA,CAAA,CAAA;;AE3PK,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;IAQxD,IACI,IAAI,CAAC,CAAc,EAAA;QACnB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AA2BD,IAAA,WAAA,CAAoB,2BAAuD,EAAA;AACvE,QAAA,KAAK,EAAE,CAAC;QADQ,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA4B;AAxClE,QAAA,IAAA,CAAA,sBAAsB,GAAW,sBAAsB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACpF,QAAA,IAAA,CAAA,SAAS,GAAsC,sBAAsB,CAAC,UAAU,CAAC,MAAM,CAAC;QACxF,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QACpC,IAAK,CAAA,KAAA,GAAgB,EAAE,CAAC;AAYtB,QAAA,IAAA,CAAA,IAAI,GAAkD,IAAI,YAAY,EAAmC,CAAC;;QAG3G,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;QACtB,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;QAE/B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;QAC5B,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;;AAIxC,QAAA,IAAA,CAAA,UAAU,GAAoBX,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;;AAMlF,QAAA,IAAA,CAAA,qBAAqB,GACjB,sBAAsB,CAAC,qBAAqB,CAAC;AAM7C,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;;;;;;;SAOlF,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;;;QAGX,UAAU,CAAC,MAAK;;;;;;AAMhB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,CAAc,EAAA;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC;QACfA,UAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAY,KAAI;;AAE/B,YAAA,CAAC,CAAC,EAAE,GAAGC,EAAM,EAAE,CAAC;YAEhB,IAAID,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AAC9B,gBAAA,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;aACzB;YACD,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,oBAAoB,EAAE;AACjD,gBAAA,MAAM,MAAM,GAAG;AACX,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,eAAe;AAC7C,oBAAA,aAAa,EACT,iBAAiB;yBAChB,IAAI,CAAC,SAAS,KAAK,sBAAsB,CAAC,UAAU,CAAC,KAAK;AACvD,8BAAE,GAAG,GAAG,sBAAsB,CAAC,cAAc,CAAC,eAAe;8BAC3D,EAAE,CAAC;AACb,oBAAA,eAAe,EAAE,IAAI;oBACrB,OAAO,EAAE,MAAK;AACV,wBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;qBAClC;iBACJ,CAAC;AAEF,gBAAA,IACI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM;oBAClB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,EAC7F;AACE,oBAAA,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;iBAC9C;;AAGD,gBAAA,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,wBAAwB,EAAE;AACpE,oBAAA,CAAC,CAAC,OAAO,GAAG,MAAK;AACb,wBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnC,qBAAC,CAAC;iBACL;gBAED,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;aACjD;;AAGD,YAAA,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW;kBACzB,CAAC,CAAC,WAAW;AACf,kBAAE,CAAC,IAAI,CAAC,QAAQ;sBACR,IAAI,CAAC,cAAc;AACrB,sBAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACtE,qBAAC,IAAI,CAAC,SAAS,KAAK,CAAC;AACrB,wBAAA,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;AACpB,wBAAA,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI;0BACzD,IAAI,CAAC,iBAAiB;0BACtB,CAAC,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,WAAW,EAAE,MAAK;gBACd,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;YACD,SAAS,EAAE,MAAK;gBACZ,IAAI,CAAC,SAAS,EAAE,CAAC;aACpB;AACD,YAAA,MAAM,EAAE,CAAC,IAAe,KAAI;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrB;AACJ,SAAA,CAAC,CAAC;;;;;KAMN;AAED,IAAA,MAAM,CAAC,IAAe,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;SACpC;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;KACnC;IAED,WAAW,GAAA;QACP,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI;AAC5C,YAAA,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACrB,MAAM,cAAc,GAAGA,UAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACrG,gBAAA,IAAI,CAAC,CAAC,cAAc,EAAE;oBAClB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;iBAChD;aACJ;AACL,SAAC,CAAC,CAAC;KACN;IAED,SAAS,GAAA;QACL,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI;AAC5C,YAAA,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACrB,MAAM,cAAc,GAAGA,UAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACrG,gBAAA,IAAI,CAAC,CAAC,cAAc,EAAE;oBAClB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;iBACjD;aACJ;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,cAAc,CAAC,IAAe,EAAE,MAAiB,EAAE,WAAqB,EAAA;AACpE,QAAA,IAAI,OAAO,WAAW,IAAI,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAClC;aAAM;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;SACxC;AACD,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AACvD,QAAA,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxG,QAAA,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtG,QAAA,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;KACxF;;;;IAMD,aAAa,CAAC,MAAkB,EAAE,KAAa,EAAA;;;;;QAK3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;;;;;QAMjD,IAAI,CAAC,aAAa,GAAG;AACjB,YAAA,QAAQ,EAAE,QAAuC;YACjD,OAAO,EAAE,OAAO,EAAE,aAAmC;SACxD,CAAC;QACF,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;KAE9F;8GAnNQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAkB,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBnC,kvIAwFA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/Da,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,kvIAAA,EAAA,CAAA;4FAKF,QAAQ,EAAA,CAAA;sBAAhC,YAAY;uBAAC,SAAS,CAAA;gBACU,eAAe,EAAA,CAAA;sBAA/C,YAAY;uBAAC,iBAAiB,CAAA;gBACtB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAGF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAWI,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAGE,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;;AAsLV,CAAA,UAAiB,sBAAsB,EAAA;AAQnC,IAAA,IAAY,cAEX,CAAA;AAFD,IAAA,CAAA,UAAY,cAAc,EAAA;AACtB,QAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC,CAAA;AACtC,KAAC,EAFW,cAAc,GAAd,sBAAc,CAAA,cAAA,KAAd,qCAAc,GAEzB,EAAA,CAAA,CAAA,CAAA;AACL,CAAC,EAXgB,sBAAsB,KAAtB,sBAAsB,GAWtC,EAAA,CAAA,CAAA;;MEpOY,4BAA4B,CAAA;IAKrC,IACI,IAAI,CAAC,CAAe,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAID,IAAA,WAAA,CACY,iBAAmC,EACnC,SAAmB,EACnB,yBAAmD,EAAA;QAFnD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACnB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA0B;AALrD,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAO,CAAC;KAMhE;AAEJ,IAAA,QAAQ,MAAW;IAEnB,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErG,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACzD,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAEzB,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;;AAGxE,YAAA,MAAM,QAAQ,GAAsB,YAAY,CAAC,QAAQ,CAAC;AAE1D,YAAApB,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3B,gBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACvB,QAAQ,CAAC,YAAY,EAAE,CAAC;aAC3B;AAED,YAAA,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACvB,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;;AAEnC,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ;8GAtDQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC1B,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB/C,0DACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,gCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDqBa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,uBAAuB,EAAA,QAAA,EAAA,0DAAA,EAAA,CAAA;mJAKY,QAAQ,EAAA,CAAA;sBAApD,SAAS;uBAAC,gCAAgC,CAAA;gBAKvC,IAAI,EAAA,CAAA;sBADP,KAAK;gBAYI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;AE5BL,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;IAK1D,IACI,IAAI,CAAC,CAAY,EAAA;AACjB,QAAA,IAAI,CAAC,CAAC,CAAC,EAAE;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;SACtC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAYD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;QAjCH,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAsBnC,QAAA,IAAA,CAAA,cAAc,GAA4C,IAAI,wBAAwB,CAAC,cAAc,EAAE,CAAC;AAE9F,QAAA,IAAA,CAAA,IAAI,GACV,IAAI,YAAY,EAA2C,CAAC;QAEhE,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAY,CAAA,YAAA,GAAW,wCAAwC,CAAC;QAChE,IAAc,CAAA,cAAA,GAAW,gDAAgD,CAAC;KAIzE;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;YAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B,CAAC,CACL,CAAC;KACL;IAED,mBAAmB,GAAA;QACf,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,QAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK;AACvC,YAAA,KAAK,wBAAwB,CAAC,aAAa,CAAC,IAAI;AAC5C,gBAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7B,MAAM;AACV,YAAA,KAAK,wBAAwB,CAAC,aAAa,CAAC,OAAO;AAC/C,gBAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,MAAM;AACV,YAAA,KAAK,wBAAwB,CAAC,aAAa,CAAC,SAAS;AACjD,gBAAA,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;gBAClC,MAAM;SACb;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW,CAAC;SAC1C;KACJ;8GA9DQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,2JCXrC,u2CA4BA,EAAA,MAAA,EAAA,CAAA,u6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDjBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,QAAA,EAAA,u2CAAA,EAAA,MAAA,EAAA,CAAA,u6CAAA,CAAA,EAAA,CAAA;wDAKpB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAKF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAoBI,IAAI,EAAA,CAAA;sBAAb,MAAM;;AAwCX,CAAA,UAAiB,wBAAwB,EAAA;AACrC,IAAA,IAAY,aAIX,CAAA;AAJD,IAAA,CAAA,UAAY,aAAa,EAAA;AACrB,QAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,QAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,QAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACb,KAAC,EAJW,aAAa,GAAb,wBAAa,CAAA,aAAA,KAAb,sCAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,MAAa,cAAc,CAAA;AAGvB,QAAA,WAAA,GAAA;YAFA,IAAS,CAAA,SAAA,GAAmC,IAAI,eAAe,CAAgB,aAAa,CAAC,IAAI,CAAC,CAAC;SAEnF;AAEhB,QAAA,WAAW,CAAC,UAA2B,EAAA;YACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3E,aAAC,CAAC,CAAC;SACN;AACJ,KAAA;AAXY,IAAA,wBAAA,CAAA,cAAc,iBAW1B,CAAA;AACL,CAAC,EAnBgB,wBAAwB,KAAxB,wBAAwB,GAmBxC,EAAA,CAAA,CAAA;;MExFY,iBAAiB,CAAA;AAC1B,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;8GAHV,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,iDCP9B,2BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA;;;MEOZ,sBAAsB,CAAA;IAwB/B,IACI,UAAU,CAAC,CAAU,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAUD,IACI,IAAI,CAAC,CAAc,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;;AAEf,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrC,OAAO;SACV;;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAGtB,UAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAGnG,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAG7B,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAMD,IACI,QAAQ,CAAC,CAAmB,EAAA;;QAE5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACtB;KACJ;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAcD,IAAA,WAAA,GAAA;AA7FU,QAAA,IAAA,CAAA,IAAI,GACV,IAAI,YAAY,EAAuC,CAAC;;QAKnD,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAEpC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAQ,CAAA,QAAA,GAAgB,EAAE,CAAC;AAE3B;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAElC;;;AAGG;QACH,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAgB5B,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;;QA4BzB,IAAiB,CAAA,iBAAA,GAAW,aAAa,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAmC,IAAI,YAAY,EAAoB,CAAC;;QAexF,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;;QAGhC,IAAiB,CAAA,iBAAA,GAAW,mCAAmC,CAAC;QAChE,IAAe,CAAA,eAAA,GAAW,kCAAkC,CAAC;QAC7D,IAA0B,CAAA,0BAAA,GAAW,aAAa,CAAC;QACnD,IAA4B,CAAA,4BAAA,GAAY,IAAI,CAAC;;AAGtD,QAAA,IAAA,CAAA,UAAU,GAAoBA,UAAC,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAG9E,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,6BAA6B,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,iBAAiB,CAAC;KACtD;AAED,IAAA,QAAQ,MAAW;AAEX,IAAA,MAAM,MAAK;AAEnB;;;AAGG;AACH,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC1C;AAED;;;;;AAKG;IACH,WAAW,CAAC,IAAiB,EAAE,KAAA,GAAgB,CAAC,CAAC,EAAE,SAA2B,IAAI,EAAA;AAC9E,QAAA,KAAK,EAAE,CAAC;QACRA,UAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAY,KAAI;AACzB,YAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGtB,YAAA,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;AACR,gBAAA,CAAC,CAAC,EAAE,GAAGC,EAAM,EAAE,CAAC;aACnB;;AAED,YAAA,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;;YAGlBD,UAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAI;AACpB,gBAAA,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,CAAC,aAAa,EAAE;AACjB,oBAAA,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC;iBACnC;AACL,aAAC,CAAC,CAAC;;YAEH,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC7B,gBAAA,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;aACxB;;AAED,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;iBACtB;aACJ;;AAED,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAIA,UAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC7B,oBAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;iBACvB;aACJ;AACD,YAAA,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACrB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,wBAAwB,EAAE;AACpE,gBAAA,CAAC,CAAC,OAAO,GAAG,MAAK;AACb,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjC,iBAAC,CAAC;aACL;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,oBAAoB,CAAC,IAAe,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;KAUvC;AAED,IAAA,cAAc,CAAC,IAAe,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;KACzC;AAED,IAAA,OAAO,CAAC,IAAe,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5C;IAED,aAAa,GAAA;QACT,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;KACL;IAED,WAAW,GAAA;QACPA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;AACvB,YAAA,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;IAED,SAAS,GAAA;QACLA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;AACvB,YAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;8GA5MQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,wiBCVnC,ixKAiHA,EAAA,MAAA,EAAA,CAAA,03FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDvGa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,ixKAAA,EAAA,MAAA,EAAA,CAAA,03FAAA,CAAA,EAAA,CAAA;wDAKjB,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAGE,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBASG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAQF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAkBF,IAAI,EAAA,CAAA;sBADP,KAAK;gBA0BG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAGH,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAaG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAGG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,4BAA4B,EAAA,CAAA;sBAApC,KAAK;;;MElFG,gBAAgB,CAAA;AAOzB,IAAA,WAAA,CACY,iBAAmC,EACnC,uBAA+C,EAC/C,SAAmB,EAAA;QAFnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;QAC/C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QAPtB,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;QACpB,IAAe,CAAA,eAAA,GAAW,MAAM,CAAC;KAOtC;IAEJ,eAAe,GAAA;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,EAAE,YAAY,EAAE;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;AAEvD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE;gBACvG,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC3B,aAAA,CAAC,CAAC;;AAEH,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,YAAA,SAAS,CAAC,WAAW,CAAE,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC,CAAC;SACtG;KACJ;8GAzBQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACO,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBpD,ieAUA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACI,cAAc,EAAA,QAAA,EAAA,ieAAA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA,CAAA;mJAK2C,SAAS,EAAA,CAAA;sBAA3E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAExD,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;AEJJ,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;IAOlD,IAAa,QAAQ,CAAC,CAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnC;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAQD,IAAA,WAAA,CACY,iBAAmC,EACnC,eAA+B,EAC/B,SAAmB,EAAA;AAE3B,QAAA,KAAK,EAAE,CAAC;QAJA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QAxBtB,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;QACpB,IAAe,CAAA,eAAA,GAAW,MAAM,CAAC;QACjC,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;QAGnB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAU3B,IAAQ,CAAA,QAAA,GAA4B,IAAI,CAAC;AAIjD,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;KAQ5D;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACjC,CAAC,CACL,CAAC;KACL;AAED,IAAA,eAAe,MAAK;AAEpB;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;;;YAI9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,EAAE;gBAC1E,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC3B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAA4B,CAAC;YAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;;YAGtB,IAAI,CAAC,QAAQ,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;;;;;;;;;;;YAW5F,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAE1C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACpD;KACJ;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAClD;KACJ;AAEO,IAAA,cAAc,CAAC,QAAiB,EAAA;QACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC5C;aAAM;YACH,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChD,aAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAClB;KACJ;8GA9FQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACxB,iBAAA,CAAA;yIAEY,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAGO,QAAQ,EAAA,CAAA;sBAApB,KAAK;;;MCYG,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAvBrB,oBAAoB;YACpB,cAAc;YACd,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,mBAAmB;YACnB,gBAAgB;YAChB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAalB,YAAY,CAAA,EAAA,OAAA,EAAA,CAVlB,oBAAoB;YACpB,cAAc;YACd,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,mBAAmB;YACnB,gBAAgB;YAChB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAInB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAFf,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,oBAAoB;wBACpB,cAAc;wBACd,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,mBAAmB;wBACnB,gBAAgB;wBAChB,wBAAwB;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,cAAc;wBACd,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,mBAAmB;wBACnB,gBAAgB;wBAChB,wBAAwB;AAC3B,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;MCrBY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,CAJT,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACxE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,aAC1E,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEpE,eAAe,EAAA,OAAA,EAAA,CAHd,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG3E,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC;oBACnF,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,CAAC;AACrF,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC;AACjF,iBAAA,CAAA;;;MC6EY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBA1DnB,sBAAsB;YACtB,wBAAwB;YACxB,iBAAiB;YACjB,sBAAsB;YACtB,kBAAkB;YAClB,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,qBAAqB;YACrB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,sBAAsB;YACtB,4BAA4B;YAC5B,wBAAwB;YACxB,iBAAiB;YACjB,sBAAsB;YACtB,gBAAgB;YAChB,yBAAyB;AACzB,YAAA,sBAAsB,aAGtB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;AACnB,YAAA,eAAe,aAGf,sBAAsB;YACtB,wBAAwB;YACxB,iBAAiB;YACjB,sBAAsB;YACtB,kBAAkB;YAClB,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,qBAAqB;YACrB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,eAAe;YACf,sBAAsB;YACtB,qBAAqB;YACrB,sBAAsB;YACtB,4BAA4B;YAC5B,wBAAwB;YACxB,iBAAiB;YACjB,sBAAsB;YACtB,gBAAgB;YAChB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlCnB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;AACnB,YAAA,eAAe,EAef,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAYV,cAAc,EAAA,UAAA,EAAA,CAAA;kBA5D1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,sBAAsB;wBACtB,wBAAwB;wBACxB,iBAAiB;wBACjB,sBAAsB;wBACtB,kBAAkB;wBAClB,yBAAyB;wBACzB,sBAAsB;wBACtB,yBAAyB;wBACzB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,sBAAsB;wBACtB,4BAA4B;wBAC5B,wBAAwB;wBACxB,iBAAiB;wBACjB,sBAAsB;wBACtB,gBAAgB;wBAChB,yBAAyB;wBACzB,sBAAsB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;wBACnB,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,sBAAsB;wBACtB,wBAAwB;wBACxB,iBAAiB;wBACjB,sBAAsB;wBACtB,kBAAkB;wBAClB,yBAAyB;wBACzB,sBAAsB;wBACtB,yBAAyB;wBACzB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,qBAAqB;wBACrB,eAAe;wBACf,sBAAsB;wBACtB,qBAAqB;wBACrB,sBAAsB;wBACtB,4BAA4B;wBAC5B,wBAAwB;wBACxB,iBAAiB;wBACjB,sBAAsB;wBACtB,gBAAgB;wBAChB,sBAAsB;AACzB,qBAAA;AACJ,iBAAA,CAAA;;;MCnFY,uBAAuB,CAAA;AAElC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;8GALU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4DCPpC,oCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,oCAAA,EAAA,CAAA;;;MEKrB,wBAAwB,CAAA;AAGjC,IAAA,WAAA,CAAoB,2BAAuD,EAAA;QAAvD,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA4B;KAAI;IAE/E,QAAQ,GAAA;QACJ,IAAI,CAAC,2BAA2B,CAAC,oCAAoC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;YACnF,IAAI,EAAE,EAAE;AACJ,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;aAC9B;AACL,SAAC,CAAC,CAAC;KACN;8GAXQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yDCRrC,gnBAgBA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDRa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,QAAA,EAAA,gnBAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,CAAA;;;AEmB3B,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;IAwC1D,WACY,CAAA,OAAe,EACf,SAAmB,EACnB,yBAAmD,EACnD,2BAAuD,EACvD,kBAAqC,EAAA;AAE7C,QAAA,KAAK,EAAE,CAAC;QANA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACnB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA0B;QACnD,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA4B;QACvD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AA3CjD,QAAA,IAAA,CAAA,QAAQ,GAAgB;AACpB,YAAA;AACI,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,aAAa,EAAE,uCAAuC;AACtD,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,QAAQ,EAAE;AACN,oBAAA;AACI,wBAAA,IAAI,EAAE,iBAAiB;AACvB,wBAAA,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC;AACnC,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,UAAU,EAAE,iBAAiB;AAC7B,wBAAA,QAAQ,EAAE,EAAE;AACf,qBAAA;AACD,oBAAA;AACI,wBAAA,IAAI,EAAE,yBAAyB;AAC/B,wBAAA,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC;AAC3C,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,UAAU,EAAE,iBAAiB;AAC7B,wBAAA,QAAQ,EAAE,EAAE;AACf,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,4BAA4B;AAC3C,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,cAAc;AAC5B,aAAA;SACJ,CAAC;AAeE,QAAA,IAAI,CAAC,aAAa,CACd,aAAa,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,MAAM;YACnB,IAAI,CAAC,2BAA2B,CAAC,iCAAiC;SACrE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;AAC9B,YAAA,IAAI,MAAM,YAAY,aAAa,EAAE;gBACjC,UAAU,CAAC,MAAK;AACZ,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpB,oBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE;AACjC,wBAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;AAC9B,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBAC3C;AACL,iBAAC,CAAC,CAAC;aACN;SACJ,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,MAAW;IAEnB,eAAe,GAAA;;;;;;;QAQX,IAAI,CAAC,2BAA2B,CAAC,mCAAmC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAClF,YAAA,IAAI,CAAC,CAAC,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAiB,CAAC;AAClC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;aAC3C;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,YAAY,CAAC,SAA2B,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI;AACA,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aACzB;AAAC,YAAA,OAAO,CAAC,EAAE,GAAE;SACjB;QACD,IAAI,SAAS,EAAE;YACX,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,SAA0B,CAAC,CAAC;AAE5G,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;YAC7C,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAEzB,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAExE,YAAA,IAAI,CAAC,QAAQ,GAAqB,YAAY,CAAC,QAAQ,CAAC;YACxD,IAAI,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChF;KACJ;IAED,MAAM,GAAA;AACF,QAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;KACnD;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;KACpE;8GA/GQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzB,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACI,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBzD,22CA+BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDRa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,QAAA,EAAA,22CAAA,EAAA,CAAA;iNAK4B,cAAc,EAAA,CAAA;sBAAtE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MEjB9C,sBAAsB,CAAA;AAEjC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;8GALU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uDCPnC,y4EAuDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5B,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDhDa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,y4EAAA,EAAA,CAAA;;;ME8BhB,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAnBlB,uBAAuB;YACvB,wBAAwB;YACxB,sBAAsB;AACtB,YAAA,wBAAwB,aAGxB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;AACd,YAAA,eAAe,aAGf,uBAAuB;YACvB,wBAAwB;YACxB,sBAAsB;YACtB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAblB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;YACd,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASV,aAAa,EAAA,UAAA,EAAA,CAAA;kBArBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,uBAAuB;wBACvB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,uBAAuB;wBACvB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;AAC3B,qBAAA;AACJ,iBAAA,CAAA;;;MClBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJrB,YAAY,CAAA,EAAA,OAAA,EAAA,CAEN,WAAW,EAAE,cAAc,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;AAE3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJrB,YAAY,EAEN,WAAW,EAAE,cAAc,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE3C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC;AACxD,iBAAA,CAAA;;;MCHY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHjB,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC/C,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEhD,kBAAkB,EAAA,OAAA,EAAA,CAHjB,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAC/C,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAC1D,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAC7D,iBAAA,CAAA;;;ACPY,MAAA,kBAAkB,GAAG,CAAC,MAAW,KAAiB;IAC3D,OAAO,CAAC,OAAwB,KAAI;AAChC,QAAA,IAAI,QAAQ,GAAW,MAAM,CAAC,OAAO,CAAC;AACtC,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACjD,OAAO;gBACH,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI;aACzC,CAAC;SACL;aAAM;AACH,YAAA,OAAO,IAAI,CAAC;SACf;AACL,KAAC,CAAC;AACN;;ACVO,MAAM,cAAc,GAAgB,kBAAkB,CAAC;AAC1D,IAAA,OAAO,EAAE,mCAAmC;AAC5C,IAAA,GAAG,EAAE,OAAO;AACf,CAAA;;ACJY,MAAA,qBAAqB,GAAgB,CAAC,OAAwB,KAAI;AAC3E,IAAA,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE;AACtG,UAAE,IAAI;AACN,UAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/B;;ACNA;;AAEG;;ACFH;;AAEG;;;;"}