{"version":3,"file":"sedeh-flexible-table.mjs","sources":["../../../projects/flexible-table/src/lib/components/table.component.ts","../../../projects/flexible-table/src/lib/components/table.component.html","../../../projects/flexible-table/src/lib/interfaces/flexible-table.interface.ts","../../../projects/flexible-table/src/lib/components/table-headers-generator.ts","../../../projects/flexible-table/src/lib/components/configuration.component.ts","../../../projects/flexible-table/src/lib/components/configuration.component.html","../../../projects/flexible-table/src/lib/components/pagination.component.ts","../../../projects/flexible-table/src/lib/components/pagination.component.html","../../../projects/flexible-table/src/lib/flexible.table.component.ts","../../../projects/flexible-table/src/lib/flexible.table.component.html","../../../projects/flexible-table/src/lib/lock.table.component.ts","../../../projects/flexible-table/src/lib/lock.table.component.html","../../../projects/flexible-table/src/lib/flexible-table-module.ts","../../../projects/flexible-table/src/lib/components/data.service.ts","../../../projects/flexible-table/src/public-api.ts","../../../projects/flexible-table/src/sedeh-flexible-table.ts"],"sourcesContent":["/*\r\n* Provides rendering of a table which is using the given FlexibleTableHeader set in\r\n* order to tabulate the given data. As per definition of earch header component,\r\n* a column could be hidden, sortable, or dragable. Each table row can expand/collapse\r\n* or respond to a click action.\r\n*/\r\nimport {\r\n    Component,\r\n\tInput,\r\n\tOutput,\r\n\tViewChild,\r\n\tOnInit,\r\n\tOnChanges,\r\n\tEventEmitter,\r\n\tElementRef\r\n} from '@angular/core';\r\n\r\nimport { \r\n\tActionEventInfo, \r\n\tCellEditInfo, \r\n\tChangedtemsInfo, \r\n\tFilteredItemsInfo, \r\n\tFlexibleTableHeader, \r\n\tPaginationInfo, \r\n\tDataServiceInterface, \r\n\tStylePositionInterface, \r\n\tStyleServiceInterface, \r\n\tVocabularyInterface \r\n} from '../interfaces/flexible-table.interface';\r\nimport { DataService } from './data.service';\r\n\r\nclass DefaultStylerService implements StyleServiceInterface {\r\n\tstyleFor(location: StylePositionInterface){return ''}\r\n}\r\n\r\nexport const defaultPageInfo: PaginationInfo = {defaultSize:8, pageSize:8,currentPage:1,from:0,to: 8, pages: 1, resetSize: true, contentSize: 0};\r\n\r\n@Component({\r\n\tselector: 'table-view',\r\n\ttemplateUrl: './table.component.html',\r\n\tstyleUrls: ['./table.component.scss']\r\n})\r\nexport class TableViewComponent implements OnInit, OnChanges {\r\n\tdragging = false;\r\n\tprintMode = false;\r\n\tfilteredItems: any[] = [];\r\n\tsortedItems: any[] = [];\r\n\tfilteringTimerId: any;\r\n\tdetailerContext: any;\r\n\trowDetailer: any;\r\n    validate = (item: any, newValue: any) => true;\r\n\r\n    @Input(\"vocabulary\")\r\n    public vocabulary: VocabularyInterface = {\r\n\t\tconfigureTable: \"Configure Table\",\r\n\t\tconfigureColumns: \"Configure Columns\",\r\n\t\tclickSort: \"Click to Sort\",\r\n\t\tsetSize: \"Set Size\",\r\n\t\tfirstPage: \"First\",\r\n\t\tlastPage: \"Last\",\r\n\t\tpreviousPage: \"Previous\"\r\n\t};\r\n\r\n\t@Input() id!: string;\r\n\t@Input() headerSeparation = true;\r\n\t@Input() caption!: string;\r\n    @Input() action!: string;\r\n    @Input() pageInfo: PaginationInfo = defaultPageInfo;\r\n    @Input() actionKeys: any;\r\n    @Input() tableClass = 'default-flexible-table';\r\n\t@Input() headers!: FlexibleTableHeader[];\r\n\t@Input() items!: any[];\r\n\t@Input() tableInfo: any;\r\n    @Input() enableIndexing!: boolean;\r\n    @Input() enableFiltering!: boolean;\r\n\t@Input() showActionable = true;\r\n    @Input() expandable: any;\r\n    @Input() filterwhiletyping!: boolean;\r\n\t@Input() styler: StyleServiceInterface = new DefaultStylerService();\r\n\t@Input() detailers: any;\r\n\t\r\n\t@Output() onaction = new EventEmitter<ActionEventInfo>();\r\n\t@Output() onchange = new EventEmitter<ChangedtemsInfo>();\r\n\t@Output() onfilter = new EventEmitter<FilteredItemsInfo>();\r\n\t@Output() onCellContentEdit = new EventEmitter<CellEditInfo>();\r\n\r\n\t@ViewChild('flexible', {static: false}) private table: any;\r\n\r\n    constructor(public host:ElementRef) {}\r\n\r\n\tprivate findColumnWithID(id: string) {\r\n        const list = this.headerColumnElements();\r\n\t\tlet column = null;\r\n\t\tfor (let i = 0; i < list.length; i++) {\r\n\t\t\tif (list[i].getAttribute(\"id\") === id) {\r\n\t\t\t\tcolumn = list[i];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn column;\r\n\t}\r\n\r\n\tprivate emitFilterChange() {\r\n\t\tconst filters: any[] = this.headers.map((h, i) => {return {filter: (h.filter ? h.filter : ''), column: i}});\r\n\t\tthis.onfilter.emit({\r\n\t\t\tfilters,\r\n\t\t\titems: this.filteredItems,\r\n\t\t\ttableInfo: this.tableInfo\r\n\t\t});\r\n\t}\r\n\tprivate emitOnChange(type: string, from: number, to?: number) {\r\n\t\tthis.onchange.emit({\r\n\t\t\taction: type,\r\n\t\t\tsourceIndex: from,\r\n\t\t\tdestinationIndex: to,\r\n\t\t\ttableInfo: this.tableInfo,\r\n\t\t\theaders: this.headers\r\n\t\t});\r\n\t}\r\n\tprivate swapColumns(source: any, destination: any) {\r\n\t\tconst srcIndex = this.getColumnIndex(source.medium.key);\r\n\t\tconst desIndex = this.getColumnIndex(destination.medium.key);\r\n\t\tif (source.node.parentNode === destination.node.parentNode) {\r\n\t\t\tif (srcIndex < 0 || desIndex < 0) {\r\n\t\t\t\tconsole.log(\"invalid drop id\", source.medium.key, destination.medium.key);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst x = this.filteredItems;\r\n\t\t\tthis.filteredItems = [];\r\n\r\n\t\t\tsetTimeout(()=>{\r\n\t\t\t\tconst sobj = this.headers[srcIndex];\r\n\t\t\t\tthis.headers[srcIndex] = this.headers[desIndex];\r\n\t\t\t\tthis.headers[desIndex] = sobj;\r\n\t\t\t\tthis.filteredItems = x;\r\n\r\n\t\t\t\tthis.emitFilterChange();\r\n\t\t\t\tthis.emitOnChange('swap columns', srcIndex, desIndex);\r\n\t\t\t}, 33);\r\n\t\r\n\t\t} else if (source.medium.locked || destination.medium.locked) {\r\n\t\t\tconst x = this.filteredItems;\r\n\t\t\tthis.filteredItems = [];\r\n\t\t\tthis.emitFilterChange();\r\n\t\t\tsetTimeout(()=>{\r\n\t\t\t\tsource.medium.locked = !source.medium.locked;\r\n\t\t\t\tdestination.medium.locked = !destination.medium.locked;\r\n\t\t\t\tthis.filteredItems = x;\r\n\t\t\t\tthis.emitFilterChange();\r\n\t\t\t\tthis.emitOnChange('column lock', srcIndex, desIndex);\r\n\t\t\t},33);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getColumnIndex(id: string) {\r\n\t\tlet index = -1;\r\n\t\tfor (let i = 0; i < this.headers.length; i++) {\r\n\t\t\tif (this.headers[i].key === id) {\r\n\t\t\t\tindex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn index;\r\n\t}\r\n\tprivate itemValue(item: any, hpath: any) {\r\n\t\tlet subitem = item;\r\n\t\thpath.map( (subkey: any) => {\r\n\t\t\tif (subitem) {\r\n\t\t\t\tsubitem = subitem[subkey];\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn subitem === undefined || subitem === null || subitem === \"null\" ? \"\" : subitem;\r\n\t}\r\n\t// <5, !5, >5, *E, E*, *E*\r\n\tprivate shouldSkipItem(value: any, filterBy: any) {\r\n\t\tlet result = false;\r\n\r\n\t\tif (value !== undefined && value !== null && String(value).length) {\r\n\t\t\tconst v = String(value);\r\n\t\t\tif (filterBy[0] === '<') {\r\n\t\t\t\tresult = filterBy.length > 1 && parseFloat(v) >= parseFloat(filterBy.substring(1));\r\n\t\t\t} else if (filterBy[0] === '>') {\r\n\t\t\t\tresult = filterBy.length > 1 && parseFloat(v) <= parseFloat(filterBy.substring(1));\r\n\t\t\t} else if (filterBy[0] === '!') {\r\n\t\t\t\tresult = filterBy.length > 1 && parseFloat(v) == parseFloat(filterBy.substring(1));\r\n\t\t\t} else if (filterBy[0] === '=') {\r\n\t\t\t\tresult = filterBy.length == 1 || parseFloat(v) !== parseFloat(filterBy.substring(1));\r\n\t\t\t} else if (filterBy[0] === '*' && filterBy[filterBy.length-1] !== '*') {\r\n\t\t\t\tconst f = filterBy.substring(1);\r\n\t\t\t\tresult = v.indexOf(f) !== v.length - f.length\r\n\t\t\t} else if (filterBy[0] !== '*' && filterBy[filterBy.length-1] === '*') {\r\n\t\t\t\tconst f = filterBy.substring(0, filterBy.length-1);\r\n\t\t\t\tresult = v.indexOf(f) !== 0;\r\n\t\t\t} else if (filterBy[0] === '*' && filterBy[filterBy.length-1] === '*') {\r\n\t\t\t\tresult = filterBy.length > 1 && v.indexOf( filterBy.substring(1, filterBy.length-1) ) < 0;\r\n\t\t\t} else {\r\n\t\t\t\tresult = v.indexOf(filterBy) < 0;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\tprivate toggleRow(item: any, header?: FlexibleTableHeader) {\r\n\t\tif (this.detailers && this.expandable && this.expandable(item, true) ) {\r\n            if (item.expanded) {\r\n                delete item.expanded;\r\n            } else {\r\n\t\t\t\tthis.rowDetailer = header ? this.detailers[header.key] : this.detailers['global'];\r\n\t\t\t\tthis.detailerContext = {\r\n\t\t\t\t\tid: this.id,\r\n\t\t\t\t\tdata: item,\r\n\t\t\t\t\ttableInfo: this.tableInfo,\r\n\t\t\t\t\theaders: this.headers // just incase if need to display specific items from other columns.\r\n\t\t\t\t};\r\n\t\t\t\tsetTimeout(() => item.expanded = true, 0);\r\n            }\r\n        } else {\r\n            this.onaction.emit({action: 'click', index: item.index, row: item, tableInfo: this.tableInfo});\r\n\t\t}\r\n\t}\r\n\tinitVisibleRows(filtered: any[] | undefined) {\r\n\t\tconst result = [];\r\n\t\tconst list = filtered ? filtered : this.filteredItems;\r\n\t\tif (this.pageInfo) {\r\n\t\t\tfor (let i = 0; i < list.length; i++) {\r\n\t\t\t\tif (i >= this.pageInfo.from && i <= this.pageInfo.to) {\r\n\t\t\t\t\tresult.push(list[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.filteredItems = result;\r\n\t\t}\r\n\t\tif (filtered) {\r\n\t\t\tthis.emitFilterChange();\r\n\t\t}\r\n\t}\r\n\tlock(header: FlexibleTableHeader, event: any) {\r\n\t\tconst index = this.getColumnIndex(header.key);\r\n\r\n        event.stopPropagation();\t\r\n        event.preventDefault();\r\n\t\theader.locked = !header.locked;\r\n\t\tthis.emitOnChange('column lock', index, index);\r\n\t}\r\n\tsort(header: FlexibleTableHeader, icon: any) {\r\n\t\tif (header.sortable && this.items && this.items.length) {\r\n\t\t\tfor (let i = 0; i < this.headers.length ; i++) {\r\n                const h = this.headers[i];\r\n\r\n                if (h.key !== header.key) {\r\n\t\t\t\t\tconst item = this.findColumnWithID(h.key);\r\n\r\n\t\t\t\t\tif (item) {\r\n\t\t\t\t\t\titem.classList.remove(\"ascending\");\r\n\t\t\t\t\t\titem.classList.remove(\"descending\");\r\n\t\t\t\t\t\titem.classList.add(\"sortable\");\r\n\t\t\t\t\t}\r\n                    h.descending = false;\r\n                    h.ascending = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n            icon.classList.remove(\"fa-sort\");\r\n\t\t\tif (header.ascending || (!header.ascending && !header.descending)) {\r\n\t\t\t\theader.descending = true;\r\n\t\t\t\theader.ascending = false;\r\n\t\t\t\ticon.classList.remove(\"fa-sort-asc\");\r\n\t\t\t\ticon.classList.add(\"fa-sort-desc\");\r\n\t\t\t} else {\r\n\t\t\t\theader.descending = false;\r\n\t\t\t\theader.ascending = true;\r\n\t\t\t\ticon.classList.remove(\"fa-sort-desc\");\r\n\t\t\t\ticon.classList.add(\"fa-sort-asc\");\r\n\t\t\t}\r\n\t\t\tconst hpath = header.key.split(\".\");\r\n\t\t\tlet filtered = [];\r\n\t\t\tif (this.enableFiltering) {\r\n\t\t\t\tfiltered = this.filterItems();\r\n\t\t\t} else {\r\n\t\t\t\tfiltered = this.items ? this.items : [];\r\n\t\t\t}\r\n\t\t\tfiltered.sort((a, b) => {\r\n\t\t\t\tconst v1 = this.itemValue(a, hpath);\r\n\t\t\t\tconst v2 = this.itemValue(b, hpath);\r\n\r\n\t\t\t\tif (header.ascending) {\r\n\t\t\t\t\treturn v1 > v2 ? 1 : -1;\r\n\t\t\t\t}\r\n\t\t\t\treturn v1 < v2 ? 1 : -1;\r\n\t\t\t});\r\n\t\t\tthis.sortedItems = filtered;\r\n\t\t\tthis.initVisibleRows(filtered);\r\n\t\t}\r\n\t}\r\n\r\n\toffsetWidth() {\r\n\t\treturn this.table.nativeElement.offsetWidth;\r\n\t}\r\n\r\n\tngOnChanges(changes:any) {\r\n\t\t// if (changes.items) {\r\n\t\t// \tthis.evaluateRows();\r\n\t\t// }\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.pageInfo) {\r\n\t\t\tif (!this.pageInfo.to) {\r\n\t\t\t\tthis.pageInfo.to = this.pageInfo.pageSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.pageInfo = {\r\n\t\t\t\tdefaultSize: 8,\r\n\t\t\t\tcontentSize: 100000,\r\n\t\t\t\tpageSize: 100000,\r\n\t\t\t\tresetSize: true,\r\n\t\t\t\tpages: 1,\r\n\t\t\t\tfrom: 0,\r\n\t\t\t\tto: 100000,\r\n\t\t\t\tcurrentPage: 1\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!this.headers) {\r\n\t\t\tthis.headers = [];\r\n\t\t}\r\n\t\tthis.evaluateRows();\r\n        if (this.actionKeys) {\r\n            this.actionKeys = this.actionKeys.split(\",\");\r\n\t\t}\r\n\t}\r\n\tevaluateRows() {\r\n\t\tlet filtered = [];\r\n\t\tif (this.sortedItems && this.sortedItems.length) {\r\n\t\t\tfiltered =this.sortedItems;\r\n\t\t} else {\r\n\t\t\tif (this.enableFiltering) {\r\n\t\t\t\tfiltered = this.filterItems();\r\n\t\t\t} else {\r\n\t\t\t\tfiltered = this.items ? this.items : [];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.initVisibleRows(filtered);\r\n\t}\r\n\r\n    headerColumnElements() {\r\n\t\tlet result = [];\r\n\r\n\t\tif (this.table.nativeElement.children) {\r\n\t\t\tconst list = this.table.nativeElement.children;\r\n\t\t\tresult = this.caption ? list[1].children[0].children : list[0].children[0].children;\r\n\t\t}\r\n\t\treturn result;\r\n    }\r\n\r\n\theaderById(id: string) {\r\n\t\tlet header;\r\n\t\tfor (const i in this.headers) {\r\n\t\t\tif (this.headers[i].key === id) {\r\n\t\t\t\theader = this.headers[i];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn header;\r\n\t}\r\n\theaderByValue(v: string): FlexibleTableHeader {\r\n\t\tlet header: FlexibleTableHeader = {key: 'unknown', value: 'unknown', active: true, disabled: false, present: false};\r\n\t\tfor (const i in this.headers) {\r\n\t\t\tif (this.headers[i].value === v) {\r\n\t\t\t\theader = this.headers[i];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn header;\r\n\t}\r\n\r\n    columnsCount() {\r\n\t\tlet count = 0;\r\n\t\tthis.headers.map( (header: FlexibleTableHeader) => {\r\n            if (header.present) {\r\n                count++;\r\n            }\r\n\t\t});\r\n        if (this.showActionable) {\r\n            count++;\r\n        }\r\n        return count;\r\n\t}\r\n\thover(item: any, flag: boolean) {\r\n\t\tif (flag) {\r\n\t\t\titem.hover = true;\r\n\t\t} else {\r\n\t\t\tdelete item.hover;\r\n\t\t}\r\n\t}\r\n\r\n\ttoCssClass(header: any) {\r\n\t\treturn header.key.replace(/\\./g,'-');\r\n\t}\r\n    keydown(event: any, item: any) {\r\n        const code = event.which;\r\n        if ((code === 13) || (code === 32)) {\r\n\t\t\titem.click();\r\n\t\t}\r\n    }\r\n    offScreenMessage(item: any) {\r\n\t\tlet message: string = this.action;\r\n\t\tif (this.actionKeys) {\r\n\t\t\tthis.actionKeys.map((key: string) => { message = message.replace(key, item[key.substring(1, key.length - 1)]); })\r\n\t\t}\r\n        return message;\r\n    }\r\n\r\n    cellContent(item: any, header: any) {\r\n\t\tlet content = this.itemValue(item, header.key.split(\".\"));\r\n        return (content !== undefined && content != null && String(content).length) ? content : '&nbsp;';\r\n\t}\r\n\tchangeSelectedFilter(event: any, header: FlexibleTableHeader) {\r\n\t\tconst index = event.target.selectedIndex;\r\n\t\theader.selectedFilterOption = (index > 0 && header.filterOptions) ? header.filterOptions[index - 1] : '';\r\n\t\tthis.initVisibleRows(this.filterItems());\r\n\t}\r\n\tchangeFilter(event: any, header: any) {\r\n        const code = event.which;\r\n\r\n\t\theader.filter = event.target.value;\r\n\r\n\t\tif (this.filterwhiletyping || code === 13) {\r\n\t\t\tif(this.filteringTimerId) {\r\n\t\t\t\tclearTimeout(this.filteringTimerId);\r\n\t\t\t}\r\n\t\t\tthis.filteringTimerId = setTimeout(()=>{\r\n\t\t\t\tthis.initVisibleRows(this.filterItems());\r\n\t\t\t\tthis.filteringTimerId  = undefined;\r\n\t\t\t}, 123);\r\n\t\t}\r\n\t}\r\n\tactionClick(event: any, item: any) {\r\n\t\tevent.stopPropagation();\r\n        this.toggleRow(item);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprint() {\r\n\t\tthis.printMode = true;\r\n\t\tsetTimeout(()=>{\r\n\t\t\tconst content = this.host.nativeElement.innerHTML;\r\n\t\t\tconst styles: any = document.getElementsByTagName('style');\r\n\t\t\tthis.printMode = false;\r\n\t\t\tconst popupWin: any = window.open('', '_blank', 'width=300,height=300');\r\n\t\t\tlet copiedContent = '<html>';\r\n\t\t\tfor(let i = 0; i < styles.length; i++) {\r\n\t\t\t\tcopiedContent += styles[i].outerHTML;\r\n\t\t\t}\r\n\t\t\tcopiedContent += '<body onload=\"window.print()\">' + content + '</html>';\r\n\r\n\t\t\r\n\t\t\tpopupWin.document.open();\r\n        \tpopupWin.document.write(copiedContent);\r\n        \tpopupWin.document.close();\r\n\t\t},3);\r\n\t}\r\n\r\n\tfilterItems() {\r\n\t\treturn this.items ? this.items.filter((item) => this.isAkeeper(item)) : [];\r\n\t}\r\n\tprivate isAkeeper(item: any) {\r\n\t\tconst shouldSkipItem = this.headers.some(\r\n\t\t\t(header: FlexibleTableHeader) => {\r\n\t\t\t\tlet skipper = false\r\n\t\t\t\tif (header.filter && header.filter.length) {\r\n\t\t\t\t\tconst v = this.itemValue(item, header.key.split(\".\"));\r\n\r\n\t\t\t\t\tif (this.shouldSkipItem(v,header.filter)) {\r\n\t\t\t\t\t\tskipper =  true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (header.filterOptions && header.filterOptions.length) {\r\n\t\t\t\t\tif (header.selectedFilterOption?.length) {\r\n\t\t\t\t\t\tconst v = String(this.itemValue(item, header.key.split(\".\")));\r\n\r\n\t\t\t\t\t\tif (v !== header.selectedFilterOption) {\r\n\t\t\t\t\t\t\tskipper = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn skipper;\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn !shouldSkipItem;\r\n\t}\r\n\r\n\tonTableCellEdit(event: any) {\r\n\t\tif (event.type === 'toggle') {\r\n\t\t\tthis.toggleRow(event.item, this.headerById(event.name));\r\n\t\t}\r\n\t\tconst id = event.id.split(\"-\");\r\n\t\tconst v = event.type === 'check' ? Boolean(event.value) : event.value;\r\n\t\tconst k = id[0];\r\n\t\tthis.onCellContentEdit.emit({\r\n\t\t\tindex: parseInt(id[1], 10),\r\n\t\t\theader: this.headerByValue(event.name), \r\n\t\t\tkey: k, \r\n\t\t\tvalue: v, \r\n\t\t\ttype: event.type,\r\n\t\t\titem: event.item,\r\n\t\t\ttableInfo: this.tableInfo\r\n\t\t});\r\n    }\r\n\tonDragStart(event: any){\r\n       this.dragging = true;\r\n\t}\r\n\tonDragEnd(event: any){\r\n       this.dragging = false;\r\n\t}\r\n\tonDrop(event: any){\r\n\t\tthis.swapColumns(event.source, event.destination);\r\n\t}\r\n}\r\n","<table [class]=\"tableClass\"  #flexible>\r\n    <caption><ng-content></ng-content></caption>\r\n    <thead>\r\n        <tr [style]=\"styler.styleFor({type: 'header'})\">\r\n            <th scope=\"col\" *ngIf=\"enableIndexing && !printMode\" id=\"indexable-{{id}}\" class=\"indexable hide-on-print\"></th>\r\n            <th scope=\"col\" *ngFor=\"let header of headers; let hh = index\" #th\r\n                [dragEnabled]=\"header.dragable ? true:false\"\r\n                [dropEnabled]=\"header.dropable ? true:false\"\r\n                [medium]=\"header\"\r\n                (onDragStart)=\"onDragStart($event)\"\r\n                (onDragEnd)=\"onDragEnd($event)\"\r\n                (onDrop)=\"onDrop($event)\"\r\n                [id]=\"header.key\"\r\n                [attr.width]=\"header.width ? header.width : null\" \r\n                [style]=\"(header.minwidth ? 'min-width: ' + header.minwidth + ';' : '') + styler.styleFor({type: 'header', header: header})\"\r\n                [attr.tabindex]=\"header.sortable ? 0 : -1\"\r\n                [class.hide-on-print]=\"header.hideOnPrint\"\r\n                [class.distinct]=\"headerSeparation && hh < (headers.length -1)\"\r\n                [class.grabbable]=\"header.dragable\"\r\n                (keydown)=\"keydown($event, th)\" (click)=\"sort(header, icon)\">\r\n                <span class=\"header-wrapper\">\r\n                    <span \r\n                        *ngIf=\"!printMode && header.sortable\" \r\n                        class=\"off-screen\"  \r\n                        [textContent]=\"vocabulary.clickSort\"></span>\r\n                    <span class=\"locker icon fa\" #locker\r\n                        *ngIf=\"!printMode && header.lockable && (headers.length > 1 || header.locked)\"\r\n                        tabindex=\"0\"\r\n                        title=\"lock/unlock this column\"\r\n                        (keydown)=\"keydown($event, locker)\" (click)=\"lock(header, $event)\"\r\n                        [class.fa-lock]=\"header.locked\"\r\n                        [class.fa-unlock]=\"!header.locked\"></span>\r\n                    <span class=\"title\"\r\n                        [class.lockable]=\"header.lockable\"\r\n                        [class.dragable]=\"header.dragable\"\r\n                        [textContent]=\"header.value\"></span>\r\n                    <span class=\"icon fa\" [class.hidden]=\"printMode || !items || items.length === 0\" #icon\r\n                        [class.fa-sort]=\"header.sortable\"\r\n                        [class.fa-sort-asc]=\"header.ascending\"\r\n                        [class.fa-sort-desc]=\"header.descending\"></span>\r\n                </span>\r\n            </th>\r\n            <th scope=\"col\" *ngIf=\"showActionable && !printMode\" id=\"actionable-{{id}}\" class=\"actionable hide-on-print\"></th>\r\n        </tr>\r\n    </thead>\r\n    <tbody>\r\n        <tr \r\n            *ngIf=\"!printMode && enableFiltering && items && items.length\" \r\n            class=\"filters hide-on-print\"\r\n            [style]=\"styler.styleFor({type: 'filters'})\">\r\n            <td scope=\"row\" *ngIf=\"enableIndexing && !printMode\" class=\"index filter hide-on-print\">\r\n                <input type=\"text\" disabled style=\"opacity:0\" />\r\n            </td>\r\n            <td scope=\"row\" \r\n                *ngFor=\"let header of headers; let i=index\" \r\n                [attr.data-label]=\"header.value\" \r\n                [class.hide-on-print]=\"header.hideOnPrint\"\r\n                class=\"filter\"\r\n                [style]=\"styler.styleFor({type: 'filters', header: header})\">\r\n                <span *ngIf=\"header.filter === undefined && header.filterOptions === undefined\">&nbsp;</span>\r\n                <ng-container *ngIf=\"header.filterOptions; else textFilter\">\r\n                    <select (change)=\"changeSelectedFilter($event, header)\">\r\n                        <option value=\"\" [selected]=\"header.selectedFilterOption===''\">Clear filter</option>\r\n                        <option *ngFor=\"let option of header.filterOptions\" \r\n                          [value]=\"option\" \r\n                          [selected]=\"header.selectedFilterOption===option\"\r\n                          [textContent]=\"option\">\r\n                        </option>\r\n                    </select>\r\n                </ng-container>\r\n                <ng-template #textFilter>\r\n                    <input  *ngIf=\"header.filter !== undefined\"\r\n                        id=\"filter-{{id}}-{{header.key}}\"\r\n                        type=\"text\" \r\n                        (keyup)=\"changeFilter($event, header)\"\r\n                        [value]=\"header.filter ? header.filter : ''\" />\r\n                    <label *ngIf=\"header.filter !== undefined\" for=\"filter-{{id}}-{{header.key}}\" >\r\n                        <span class=\"off-screen\" >Filter \"{{header.value}}\"</span>\r\n                        <span class=\"fa fa-search\"></span>\r\n                    </label>\r\n                </ng-template>\r\n            </td>\r\n            <td scope=\"row\" *ngIf=\"showActionable && !printMode\" class=\"hide-on-print\"></td>\r\n        </tr>\r\n       <ng-template ngFor let-item [ngForOf]=\"printMode ? items: filteredItems\" let-i=\"index\">\r\n            <tr (mouseover)=\"hover(item, true)\"\r\n                (mouseout)=\"hover(item, false)\"\r\n                [class.pointer]=\"action\"\r\n                [class.hover]=\"item.hover\"\r\n                [class.expanded]=\"item.expanded\"\r\n                [class.odd]=\"i%2\"\r\n                [style]=\"styler.styleFor({type: 'row', item: item})\">\r\n                <td scope=\"row\" class=\"index hide-on-print\" *ngIf=\"enableIndexing && !printMode\">\r\n                    <span [textContent]=\"i + pageInfo.from + 1\"></span>\r\n                </td>\r\n                <td scope=\"row\" \r\n                    *ngFor=\"let header of headers;let j = index\" \r\n                    [class]=\"toCssClass(header)\"\r\n                    [class.hide-on-print]=\"header.hideOnPrint\"\r\n                    [attr.data-label]=\"header.value\" \r\n                    [class.fullwidth]=\"header.format && header.format.length > 0 && header.format[0].length === 1\"\r\n                    [intoName]=\"header.value\"\r\n                    [intoId]=\"header.key + '-' + i\"\r\n                    [active]=\"header.active\"\r\n                    [validate]=\"header.validate ? header.validate : validate\"\r\n                    [disabled]=\"header.disabled\"\r\n                    [into]=\"header.format\"\r\n                    [intoData]=\"item\"\r\n                    [rawContent]=\"cellContent(item, header)\"\r\n                    [onComponentChange]=\"onTableCellEdit.bind(this)\"\r\n                    [style]=\"styler.styleFor({type: 'row', item: item, header: header})\"></td>\r\n                <td scope=\"row\" *ngIf=\"showActionable && !printMode\" class=\"hide-on-print\">\r\n                    <a class=\"actionable\"\r\n                        *ngIf=\"expandable && expandable(item, true)\"\r\n                        tabindex=\"0\"\r\n                        role=\"button\"\r\n                        style=\"cursor:pointer\"\r\n                        [class.expanded]=\"item.expanded\" #clicker\r\n                        (keydown)=\"keydown($event, clicker)\" (click)=\"actionClick($event, item)\">\r\n                        <span\r\n                            class=\"icon fa\"\r\n                            [class.fa-minus-square-o]=\"item.expanded\"\r\n                            [class.fa-plus-square-o]=\"!item.expanded\"\r\n                            aria-hidden=\"true\"></span>\r\n                        <span class=\"off-screen\" [textContent]=\"offScreenMessage(item)\"></span>\r\n                    </a>\r\n                </td>\r\n            </tr>\r\n            <tr *ngIf=\"rowDetailer && item.expanded\" class=\"detail\" [class.odd]=\"i%2\" [style]=\"styler.styleFor({type: 'detail', header: rowDetailer, item: item})\">\r\n                <td scope=\"row\" class=\"index\" *ngIf=\"enableIndexing && !printMode\"></td>\r\n                <td [attr.colspan]=\"columnsCount()\">\r\n                    <ng-container [ngTemplateOutlet]=\"rowDetailer\" [ngTemplateOutletContext]=\"detailerContext\"></ng-container>\r\n                </td>\r\n            </tr>\r\n        </ng-template>\r\n    </tbody>\r\n</table>\r\n","import { Observable } from \"rxjs\";\n\nexport interface VocabularyInterface {\n    configureTable?: string;\n    configureColumns?: string;\n    clickSort?: string;\n    setSize: string;\n    firstPage: string;\n    lastPage: string;\n    previousPage: string;\n    nextPage?: string;\n    printTable?: string;\n}\n\nexport interface StylePositionInterface {\n    type: string;\n    item?: any;\n    header?: FlexibleTableHeader;\n}\nexport interface RequestParameterInterface {\n    key: string;\n    filterBy: string;\n    sortBy: string;\n}\nexport interface StyleServiceInterface {\n    styleFor(location: StylePositionInterface): string;\n}\nexport interface DataServiceInterface {\n    evaluateData(items: any[], headers: FlexibleTableHeader[]):void;\n    getData(info: PaginationInfo, headers: FlexibleTableHeader[]): Observable<any[]>;\n}\nexport interface PaginationInfo {\n    defaultSize: number;\n\tcontentSize: number;\n\tpageSize: number;\n\tpages: number;\n\tfrom: number;\n\tto: number;\n\tcurrentPage: number;\n    resetSize?: boolean\n}\nexport interface FlexibleTableHeader {\n\tkey: string;\n\tvalue: string;\n\tpresent: boolean;\n\twidth?: string;\n\tminwidth?: string;\n\tformat?: string | string[];\n\thideOnPrint?:boolean;\n\tfilter?: string;\n    filterOptions?: string[];\n    selectedFilterOption?: string;\n\tdragable?: boolean;\n\tdropable?: boolean;\n\tsortable?: boolean;\n    ascending?: boolean;\n    descending?: boolean;\n\tclass?:string;\n\tlocked?:boolean;\n    lockable?: boolean;\n    active: boolean;\n    disabled: boolean;\n    validate?: (tem: any, value: any) => boolean;\n    style?: (tem: any) => string;\n\n}\nexport enum PaginationType {\n    none = 0,\n    floating = 1,\n    ontop = 2,\n    onbottom = 3,\n    topbottom = 4\n}\nexport interface CellEditInfo {\n    index: number;\n    header: FlexibleTableHeader; \n    key: string;\n    value: string;\n    type: string;\n    item: any;\n    tableInfo: any;\n}\nexport interface FilteredItemsInfo {\n    filters: any[],\n    items: any;\n    tableInfo: any;\n}\nexport interface ActionEventInfo {\n    action: string;\n    row: any;\n    index: number;\n    tableInfo: any;\n}\nexport interface ChangedtemsInfo {\n    headers: FlexibleTableHeader[];\n    action: string;\n    sourceIndex: number;\n    destinationIndex?: number;\n    tableInfo: any;\n}","/*\r\n * This object will traverse through a given json object and finds all the attributes of \r\n * the object and its related associations within the json. The resulting structure would be \r\n * name of attributes and a pathway to reach the attribute deep in object heirarchy.\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { FlexibleTableHeader } from '../interfaces/flexible-table.interface';\r\n\r\nexport interface VisualizationPoint {\r\n  key: string,\r\n  value: string\r\n}\r\n\r\n@Injectable()\r\nexport class TableHeadersGenerator {\r\n  private headers: any[] = [];\r\n\r\n  constructor() {\r\n  }\r\n\r\n  generateHeadersFor(root: any, path: string, maxVisible: number, filteringEnabled: boolean) {\r\n\r\n    if (root !== null) {\r\n      Object.keys(root).map( (key) => {\r\n        const innerPath = (path.length ? (path + \".\" + key) : key);\r\n  \r\n        if (typeof root[key] === \"string\" || typeof root[key] === \"number\" || typeof root[key] === \"boolean\") {\r\n          const header: FlexibleTableHeader = {\r\n            key: innerPath,\r\n            value: this.makeWords(innerPath),\r\n            sortable: true,\r\n            dragable: true,\r\n            disabled: false,\r\n            active: true,\r\n            format: (typeof root[key] === 'string' || typeof root[key] === 'number') ? 'input::false' : 'checkbox:true:true',\r\n            present: (path.length === 0 && this.headers.length < maxVisible)\r\n          }\r\n          if (filteringEnabled) {\r\n            header.filter = \"\";\r\n          }\r\n          this.headers.push(header);\r\n        } else if (root[key] instanceof Array) {\r\n          const node = root[key];\r\n          if (node.length && !(node[0] instanceof Array) && (typeof node[0] !== \"string\")) {\r\n            this.generateHeadersFor(node[0], innerPath, maxVisible, filteringEnabled);\r\n          } else {\r\n            this.headers.push({\r\n              key: innerPath,\r\n              value: this.makeWords(innerPath),\r\n              sortable: true,\r\n              dragable: true,\r\n              disabled: false,\r\n              active: true,\r\n              format: (typeof root[key] === 'string' || typeof root[key] === 'number') ? 'input::false' : 'checkbox:true:true'\r\n            })\r\n          }\r\n        } else {\r\n          this.generateHeadersFor(root[key], innerPath, maxVisible, filteringEnabled);\r\n        }\r\n      });\r\n    }\r\n    return this.headers;\r\n  }\r\n\r\n  retreiveHeaders(key: any, trackingkey: any) {\r\n    let result: any;\r\n    try {\r\n      result = localStorage.getItem(trackingkey);\r\n\r\n      if (!result || result != key) {\r\n        result = undefined; // we have a newer version and it will override saved data.\r\n      } else {\r\n        result = localStorage.getItem(key);\r\n        result = result ? JSON.parse(result) : result;\r\n      }\r\n    } catch (e) {\r\n    }\r\n    return result;\r\n  }\r\n\r\n  persistHeaders(key: any, trackingkey: any, headers: any) {\r\n    try {\r\n      localStorage.removeItem(trackingkey);\r\n      localStorage.setItem(trackingkey, key);\r\n      localStorage.setItem(key, JSON.stringify(headers));\r\n    } catch (e) {\r\n    }\r\n  }\r\n\r\n  private makeWords(name: any) {\r\n    return name\r\n            .replace(/\\./g,' ~ ')\r\n            .replace(/([A-Z])/g, ' $1')\r\n            .replace(/-/g,\" \")\r\n            .replace(/_/g,\" \")\r\n            .replace(/^./, (str: string) => str.toUpperCase());\r\n  }\r\n}\r\n","/*\r\n* Provides ability to configure displaying of table columns. As per definition of earch header component,\r\n* a column could be hidden.\r\n*/\r\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FlexibleTableHeader } from '../interfaces/flexible-table.interface';\r\nimport { ComponentPool } from '@sedeh/into-pipes';\r\n\r\n@Component({\r\n\tselector: 'table-configuration',\r\n\ttemplateUrl: './configuration.component.html',\r\n\tstyleUrls: ['./configuration.component.scss']\r\n})\r\nexport class ConfigurationComponent {\r\n    showConfigurationView!: boolean;\r\n\tformatOptions: any[] = [];\r\n\t\r\n\t@Input(\"title\")\r\n\tpublic title!: string | undefined;\r\n\r\n\t@Input(\"locking\")\r\n\tpublic locking = false;\r\n\r\n\t@Input(\"action\")\r\n\tpublic action!: string | undefined;\r\n\r\n\t@Input(\"printTable\")\r\n\tpublic printTable!: string | undefined;\r\n\t\r\n\t@Input(\"headers\")\r\n\tpublic headers!: FlexibleTableHeader[];\r\n\r\n\t@Input(\"configAddon\")\r\n\tpublic configAddon: any;\r\n\r\n\t@Output('onconfigurationchange')\r\n\tprivate onconfigurationchange = new EventEmitter();\r\n\r\n\t@Output('onprint')\r\n\tprivate onprint = new EventEmitter();\r\n\r\n\tconstructor(private pool: ComponentPool) {\r\n\t\tconst map = this.pool.getRegisteredPatterns();\r\n\t\tObject.keys(map).map(\r\n\t\t\t(key: string) => {\r\n\t\t\t\tconst item = map[key];\r\n\t\t\t\tif (item instanceof Array) {\r\n\t\t\t\t\tif (item.length > 1) {\r\n\t\t\t\t\t\titem.map((option: string, index: number) => this.formatOptions.push({key, label: key + ' option ' + index, value: option}))\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.formatOptions.push({key, label: key, value: item[0]});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.formatOptions.push({key, label: key, value: item});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\r\n\tprivate emitChange(type: string, header: FlexibleTableHeader) {\r\n\t\tconst index = this.headers.indexOf(header);\r\n\t\tthis.onconfigurationchange.emit({action: type, sourceIndex: index, headers: this.headers});\r\n\t}\r\n\treconfigure(item: any, header: any) {\r\n        header.present = item.checked;\r\n\t\tthis.emitChange('column display status changed', header);\r\n\t}\r\n\tisArray(format: any) {\r\n\t\treturn format && (format instanceof Array);\r\n\t}\r\n\r\n\tenableFilter(input: any, header: FlexibleTableHeader) {\r\n        if (input.checked) {\r\n\t\t\theader.filter = \"\";\r\n\t\t} else {\r\n\t\t\tdelete header.filter;\r\n\t\t}\r\n\t\tthis.emitChange('filter changed', header);\r\n\t}\r\n\r\n\tenableLock(input: any, header: FlexibleTableHeader) {\r\n\t\theader.lockable = !header.lockable;\r\n\t\tthis.emitChange('column lock status changed', header);\r\n\t}\r\n\tchangeFormat(event: any, header: FlexibleTableHeader) {\r\n\t\tconst index = event.target.selectedIndex;\r\n\t\theader.format = index > 0 ? this.formatOptions[index - 1].value : '';\r\n\t\tthis.emitChange('format changed', header);\r\n\t}\r\n\tprint(event: any) {\r\n\t\tthis.onprint.emit(true);\r\n\t}\r\n\r\n    keyup(event: any) {\r\n        const code = event.which;\r\n        if (code === 13) {\r\n\t\t\tevent.target.click();\r\n\t\t}\r\n    }\r\n}\r\n","\r\n<div class=\"shim\"\r\n    [style.display]=\"showConfigurationView ? 'block':'none'\"\r\n    (click)=\"showConfigurationView = !showConfigurationView\"></div>\r\n\r\n<a  [attr.tabindex]=\"0\" *ngIf=\"printTable\"\r\n    class=\"print-table\"\r\n    (keyup)=\"keyup($event)\"\r\n    (click)=\"print($event)\">\r\n    <span class=\"icon fa fa-print\" aria-hidden=\"true\"></span>\r\n    <span class=\"off-screen\" [textContent]=\"print\"></span>\r\n</a>\r\n<a  [attr.tabindex]=\"0\"\r\n    class=\"configure-table\"\r\n    (keyup)=\"keyup($event)\"\r\n    (click)=\"showConfigurationView = !showConfigurationView\">\r\n    <span class=\"icon fa fa-gear\" aria-hidden=\"true\"></span>\r\n    <span class=\"off-screen\" [textContent]=\"action\"></span>\r\n</a>\r\n<ng-container *ngIf=\"configAddon\" [ngTemplateOutlet]=\"configAddon\"></ng-container>\r\n\r\n<div class=\"panel\" [style.display]=\"showConfigurationView ? 'block':'none'\">\r\n    <p>\r\n        <span [textContent]=\"title\"></span>\r\n        <a\r\n            tabindex=\"0\"\r\n            role=\"button\"\r\n            style=\"cursor:pointer; float: right\"\r\n            (keydown)=\"keyup($event)\" (click)=\"showConfigurationView = !showConfigurationView\">\r\n            <span class=\"fa fa-close\" aria-hidden=\"true\"></span>\r\n            <span class=\"off-screen\">Close</span>\r\n        </a>\r\n    </p>\r\n    <ul role=\"list\" >\r\n        <li  *ngFor=\"let header of headers\" role=\"listitem\">\r\n            <label for=\"{{header.key ? header.key+'f':'f'}}\">\r\n                <input type=\"checkbox\" #filter\r\n                        [id]=\"header.key ? header.key+'f':'f'\"\r\n                        [checked]=\"header.filter !== undefined\"\r\n                        (keyup)=\"keyup($event)\"\r\n                        (click)=\"enableFilter(filter, header)\" />\r\n                <span>Filterable</span>\r\n            </label>\r\n            <label *ngIf=\"locking\" for=\"{{header.key ? header.key+'e':'e'}}\">\r\n                <input type=\"checkbox\" #filter\r\n                        [id]=\"header.key ? header.key+'e':'e'\"\r\n                        [checked]=\"header.lockable\"\r\n                        (keyup)=\"keyup($event)\"\r\n                        (click)=\"enableLock(filter, header)\" />\r\n                <span>Lockable</span>\r\n            </label>\r\n            <label for=\"{{header.key ? header.key+'c':'c'}}\">\r\n                <input type=\"checkbox\" #checkbox\r\n                        [id]=\"header.key ? header.key+'c':'c'\"\r\n                        [value]=\"header.key\"\r\n                        [checked]=\"header.present\"\r\n                        (keyup)=\"keyup($event)\"\r\n                        (click)=\"reconfigure(checkbox, header)\" />\r\n                <span>Show Column</span>\r\n            </label>\r\n            <ng-container *ngIf=\"!isArray(header.format)\">\r\n                <select (change)=\"changeFormat($event, header)\">\r\n                    <option value=\"\" [selected]=\"header.format===''\">Select a formatter</option>\r\n                    <option *ngFor=\"let option of formatOptions\" \r\n                      [value]=\"option.value\" \r\n                      [selected]=\"header.format && header.format === option.value\"\r\n                      [textContent]=\"option.label\">\r\n                    </option>\r\n                </select>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"isArray(header.format)\">\r\n                <select>\r\n                    <option disabled value=\"\">Multiple formatters</option>\r\n                </select>\r\n            </ng-container>\r\n    \r\n            <span class=\"title\" [textContent]=\"header.value | uppercase\"></span>\r\n        </li>\r\n    </ul>    \r\n</div>\r\n\r\n","/*\r\n* Provides pagination of a data set in a table.\r\n*/\r\nimport { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\r\nimport { PaginationInfo, VocabularyInterface } from \"../interfaces/flexible-table.interface\";\r\n\r\n@Component({\r\n    selector: 'table-pagination',\r\n\ttemplateUrl: './pagination.component.html',\r\n\tstyleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n\r\n    @Input(\"vocabulary\")\r\n    public vocabulary: VocabularyInterface = {\r\n        setSize: \"\", \r\n        firstPage: \"\", \r\n        nextPage: \"\", \r\n        lastPage: \"\", \r\n        previousPage: \"\"\r\n    };\r\n\r\n    @Input(\"info\")\r\n    info: PaginationInfo = { \r\n        defaultSize: 8,\r\n        contentSize: 0,\r\n        pageSize: 0,\r\n        pages: 0,\r\n        from: 0,\r\n        to: 0,\r\n        currentPage: 0\r\n    };\r\n\r\n    @Input('inline')\r\n    inline = false;\r\n\r\n\t@Output('onpaginationchange')\r\n    onpaginationchange = new EventEmitter();\r\n\r\n    @Output('onpaginationready')\r\n    onpaginationready = new EventEmitter();\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.info) {\r\n\t\t\tthis.info = { \r\n                defaultSize: 8,\r\n                contentSize: 1000, \r\n                pageSize: 1000, \r\n                pages: 1, \r\n                from: 0, \r\n                to: 1000, \r\n                currentPage: 1\r\n            };\r\n\t\t}\r\n\t\tif (this.info.contentSize && this.info.pageSize) {\r\n\t\t\tthis.info.pages = Math.ceil(this.info.contentSize / this.info.pageSize);\r\n\t\t\tthis.info.from = 0;\r\n\t\t\tthis.info.to = this.info.pageSize - 1;\r\n\t\t\tthis.info.currentPage = 1;\r\n\t\t    setTimeout(() => this.ready(), 66);\r\n\t\t}\r\n    }\r\n\r\n    ready() {\r\n        this.onpaginationready.emit(this);\r\n        this.onpaginationchange.emit(this.info);\r\n    }\r\n\r\n    selectFirst() {\r\n        if (this.info.currentPage > 1) {\r\n\t\t    this.info.from = 0;\r\n\t\t    this.info.to = this.info.from + this.info.pageSize - 1;\r\n\t\t    this.info.currentPage = 1;\r\n            this.onpaginationchange.emit(this.info);\r\n        }\r\n   }\r\n\r\n   selectNext() {\r\n        if (this.info.currentPage < this.info.pages) {\r\n \t\tthis.info.from = this.info.to + 1;\r\n\t\tthis.info.to = this.info.from + this.info.pageSize - 1;\r\n\t\tthis.info.currentPage++;\r\n        this.onpaginationchange.emit(this.info);\r\n        }\r\n    }\r\n\r\n    selectPrev() {\r\n        if (this.info.currentPage > 1) {\r\n \t\t    this.info.from -= this.info.pageSize;\r\n\t\t    this.info.to = this.info.from + this.info.pageSize - 1;\r\n\t\t    this.info.currentPage--;\r\n            this.onpaginationchange.emit(this.info);\r\n        }\r\n    }\r\n\r\n    selectLast() {\r\n        if (this.info.currentPage < this.info.pages) {\r\n\t\t    this.info.from = this.info.pageSize * (this.info.pages - 1);\r\n\t\t    this.info.to = this.info.from + this.info.pageSize - 1;\r\n\t\t    this.info.currentPage = this.info.pages;\r\n            this.onpaginationchange.emit(this.info);\r\n        }\r\n    }\r\n\r\n    changeCurrent(ranger: any) {\r\n        const v = parseInt( ranger.value, 10 );\r\n        if (v > 0 && v <= this.info.pages) {\r\n\t\t    this.info.from = v * (this.info.pageSize - 1);\r\n\t\t    this.info.to = this.info.from + this.info.pageSize - 1;\r\n\t\t    this.info.currentPage = v;\r\n            this.onpaginationchange.emit(this.info);\r\n        } else {\r\n            ranger.value = this.info.currentPage;\r\n        }\r\n    }\r\n\r\n    keydown(event: any) {\r\n        const code = event.which;\r\n        if ((code === 13) || (code === 32)) {\r\n\t\t\tevent.target.click();\r\n\t\t}\r\n    }\r\n    changeSize(sizer: any) {\r\n        const v = parseInt( sizer.value, 10 );\r\n        if (this.info.contentSize >= v && v > 1) {\r\n            this.info.pageSize = v;\r\n \t\t\tthis.info.pages = Math.ceil(this.info.contentSize / v);\r\n            this.info.from = 0;\r\n\t\t\tthis.info.to = this.info.pageSize - 1;\r\n\t\t\tthis.info.currentPage = 1;\r\n            this.onpaginationchange.emit(this.info);\r\n        } else {\r\n            sizer.value = this.info.pageSize;\r\n        }\r\n    }\r\n}\r\n","<div *ngIf=\"info && info.pages\" \r\n    [class.inliner]=\"inline\"\r\n    [class.floater]=\"!inline\"\r\n    class=\"table-pagination\" #paginationWrapper>\r\n    <div class=\"fa fa-angle-left\"\r\n         (keydown)=\"keydown($event)\"\r\n         (click)=\"selectPrev()\"\r\n         [tabindex]=\"info.currentPage==1 ? -1 : 0\"\r\n         [class.disabled]=\"info.currentPage==1\">\r\n        <span class=\"prev\" [textContent]=\"vocabulary.previousPage\"></span>\r\n    </div>\r\n    <div class=\"fa fa-angle-double-left\"\r\n         (keydown)=\"keydown($event)\"\r\n         (click)=\"selectFirst()\"\r\n         [tabindex]=\"info.currentPage==1 ? -1 : 0\"\r\n         [class.disabled]=\"info.currentPage==1\">\r\n        <span class=\"first\" [textContent]=\"vocabulary.firstPage\"></span>\r\n    </div>\r\n    <div class=\"current\">\r\n        <input  #ranger [value]=\"info.currentPage\" (keydown.Enter)=\"changeCurrent(ranger)\" />\r\n        <span [textContent]=\"' / ' + info.pages + ' of ' + info.contentSize\"></span>\r\n\t</div>\r\n    <div class=\"fa fa-angle-double-right\"\r\n         (keydown)=\"keydown($event)\"\r\n         (click)=\"selectLast()\"\r\n         [tabindex]=\"info.currentPage==info.pages ? -1 : 0\"\r\n         [class.disabled]=\"info.currentPage==info.pages\">\r\n        <span class=\"last\" [textContent]=\"vocabulary.lastPage\"></span>\r\n    </div>\r\n    <div class=\"fa fa-angle-right\"\r\n         (keydown)=\"keydown($event)\"\r\n         (click)=\"selectNext()\"\r\n         [tabindex]=\"info.currentPage==info.pages ? -1 : 0\"\r\n         [class.disabled]=\"info.currentPage==info.pages\">\r\n        <span class=\"next\" [textContent]=\"vocabulary.nextPage\"></span>\r\n    </div>\r\n    <div class=\"reset-size\" *ngIf=\"info.resetSize\">\r\n        <label for=\"pagination-set-size\">\r\n            <span class=\"off-screen\" [textContent]=\"vocabulary.setSize\"></span>\r\n            <input id=\"pagination-set-size\" [value]=\"info.pageSize\" (keydown.Enter)=\"changeSize(sizer)\" #sizer />\r\n        </label>\r\n    </div>\r\n</div>\r\n","/*\r\n* Provides rendering of a table which is using the given FlexibleTableHeader set in\r\n* order to tabulate the given data. As per definition of earch header component,\r\n* a column could be hidden, sortable, or dragable. Each table row can expand/collapse\r\n* or respond to a click action.\r\n*/\r\nimport {\r\n    Component,\r\n\tInput,\r\n\tOutput,\r\n\tViewChild,\r\n\tOnInit,\r\n\tOnChanges,\r\n\tEventEmitter\r\n} from '@angular/core';\r\n\r\nimport { TableHeadersGenerator } from './components/table-headers-generator';\r\nimport { TableViewComponent, defaultPageInfo } from './components/table.component';\r\nimport { FlexibleTableHeader, PaginationInfo, PaginationType, StylePositionInterface, StyleServiceInterface, VocabularyInterface } from './interfaces/flexible-table.interface';\r\n\r\nclass DefaultStylerService implements StyleServiceInterface {\r\n\tstyleFor(location: StylePositionInterface){return ''}\r\n}\r\n\r\n@Component({\r\n\tselector: 'flexible-table',\r\n\ttemplateUrl: './flexible.table.component.html',\r\n\tstyleUrls: ['./flexible.table.component.scss']\r\n})\r\nexport class FlexibleTableComponent implements OnInit, OnChanges {\r\n\r\n\tsubHeaders:any;\r\n\tformeditems!: any[];\r\n\r\n\t@Input() styler: StyleServiceInterface = new DefaultStylerService();\r\n\r\n\t@Input(\"vocabulary\")\r\n    public vocabulary: VocabularyInterface = {\r\n\t\tprintTable: \"Print Table\",\r\n\t\tconfigureTable: \"Configure Table\",\r\n\t\tconfigureColumns: \"Configure Columns\",\r\n\t\tclickSort: \"Click to Sort\",\r\n\t\tsetSize: \"Set Size\",\r\n\t\tfirstPage: \"First\",\r\n\t\tlastPage: \"Last\",\r\n\t\tpreviousPage: \"Previous\"\r\n\t};\r\n\t\r\n\t@Input() headerSeparation = true;\r\n    @Input(\"persistenceId\")\r\n    public persistenceId!: string;\r\n\r\n\t@Input(\"persistenceKey\")\r\n    public persistenceKey!: string;\r\n\r\n    @Input(\"caption\")\r\n    public caption!: string;\r\n\r\n    @Input(\"action\")\r\n    public action!: string;\r\n\r\n    @Input(\"actionKeys\")\r\n    public actionKeys: any;\r\n\r\n    @Input(\"tableClass\")\r\n    public tableClass = 'default-flexible-table';\r\n\r\n    @Input('inlinePagination')\r\n    inlinePagination: PaginationType = PaginationType.none;\r\n\r\n\t@Input(\"headers\")\r\n\tpublic headers!: FlexibleTableHeader[];\r\n\r\n\t@Input(\"items\")\r\n\tpublic items!: any[];\r\n\r\n\t@Input(\"pageInfo\")\r\n\tpublic pageInfo: PaginationInfo = defaultPageInfo;\r\n\r\n\t@Input(\"tableInfo\")\r\n\tpublic tableInfo: any;\r\n\r\n    @Input(\"configurable\")\r\n    public configurable!: boolean;\r\n\r\n\t@Input(\"configAddon\")\r\n\tpublic configAddon: any;\r\n\r\n\t@Input(\"enableIndexing\")\r\n    public enableIndexing!: boolean;\r\n\r\n\t@Input(\"showActionable\") showActionable = true;\r\n\r\n    @Input(\"enableFiltering\")\r\n    public enableFiltering!: boolean;\r\n\r\n    @Input(\"expandable\")\r\n    public expandable: any;\r\n\r\n    @Input(\"filterwhiletyping\")\r\n    public filterwhiletyping!: boolean;\r\n\r\n    @Input(\"detailers\")\r\n    public detailers: any;\r\n\r\n\t@Output('onaction')\r\n\tprivate onaction = new EventEmitter();\r\n\r\n\t@Output('onCellContentEdit')\r\n\tprivate onCellContentEdit = new EventEmitter();\r\n\r\n\t@Output('onfilter')\r\n\tprivate onfilter = new EventEmitter();\r\n\r\n\t@Output('onconfigurationchange')\r\n\tprivate onconfigurationchange = new EventEmitter();\r\n\r\n\t@ViewChild('viewTable', {static: false})\r\n\tviewTable!: TableViewComponent;\r\n\r\n    constructor(private generator: TableHeadersGenerator) {}\r\n\r\n\tngOnChanges(changes: any) {\r\n\t\tif (changes.items) {\r\n\t\t\tconst list: any[] = [];\r\n\t\t\tthis.items?.map(\r\n\t\t\t\t(item: any) => {\r\n\t\t\t\t\tconst copy = Object.assign({}, item);\r\n\t\t\t\t\tthis.headers.map(\r\n\t\t\t\t\t\t(header: FlexibleTableHeader) => {\r\n\t\t\t\t\t\t\tif (header.format) {\r\n\t\t\t\t\t\t\t\tconst formats = typeof header.format === 'string' ? [header.format] : header.format;\r\n\t\t\t\t\t\t\t\tconst v = copy[header.key];\r\n\t\t\t\t\t\t\t\tformats.map(\r\n\t\t\t\t\t\t\t\t\t(format: string) => {\r\n\t\t\t\t\t\t\t\t\t\tif (v && typeof v === 'string') {\r\n\t\t\t\t\t\t\t\t\t\t\tconst f = format.split(':');\r\n\t\t\t\t\t\t\t\t\t\t\tif (f[0] === 'calendar') {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = Date.parse(v);\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'date') {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = Date.parse(v);\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'number') {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = f.length > 2 ? parseFloat(v) : parseInt(v, 10);\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'currency') {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = parseFloat(v.replace(/[^0-9\\.-]+/g,\"\"));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t\tlist.push(copy);\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\tthis.formeditems = list;\r\n\t\t}\r\n\t\tif (changes.inlinePagination) {\r\n\t\t\tif (this.pageInfo && this.inlinePagination !== PaginationType.none) {\r\n\t\t\t\tthis.pageInfo.from = 0;\r\n\t\t\t\tthis.pageInfo.currentPage = 1;\r\n\t\t\t\tthis.pageInfo.to = this.pageInfo.defaultSize;\r\n\t\t\t\tthis.pageInfo.pageSize = this.pageInfo.defaultSize;\r\n\t\t\t\tthis.pageInfo.contentSize = this.items.length;\r\n\t\t\t} else {\r\n\t\t\t\tthis.pageInfo.from = 0;\r\n\t\t\t\tthis.pageInfo.currentPage = 1;\r\n\t\t\t\tthis.pageInfo.to = 100000000;\r\n\t\t\t\tthis.pageInfo.pageSize = 100000000;\r\n\t\t\t\tthis.pageInfo.contentSize = 100000000;\r\n\t\t\t\tthis.onPaginationChange(this.pageInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tngOnInit() {\r\n\t\tif (this.configurable && this.persistenceKey) {\r\n\t\t\tconst headers: FlexibleTableHeader[] = this.generator.retreiveHeaders(this.persistenceKey, this.persistenceId);\r\n\r\n\t\t\tif (headers) {\r\n\t\t\t\tthis.headers = headers;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this.headers || this.headers.length === 0) {\r\n\t\t\tthis.headers = this.generator.generateHeadersFor(this.items[0],\"\", 5, this.enableFiltering);\r\n\t\t\tif (this.configurable && this.persistenceKey) {\r\n\t\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\r\n\t\t\t}\r\n        }\r\n\t\tif (this.pageInfo && this.inlinePagination !== PaginationType.none) {\r\n\t\t\tif (!this.pageInfo.to) {\r\n\t\t\t\tthis.pageInfo.to = this.pageInfo.pageSize;\r\n\t\t\t}\r\n\t\t\tthis.pageInfo.contentSize = this.items.length;\r\n\t\t} else if (!this.pageInfo) {\r\n\t\t\tthis.pageInfo = {\r\n\t\t\t\tdefaultSize: 8,\r\n\t\t\t\tcontentSize: 100000,\r\n\t\t\t\tpageSize: 100000,\r\n\t\t\t\tresetSize: true,\r\n\t\t\t\tpages: 1,\r\n\t\t\t\tfrom: 0,\r\n\t\t\t\tto: 100000,\r\n\t\t\t\tcurrentPage: 1\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis.updateLimits();\r\n\t}\r\n\r\n\tupdateLimits() {\r\n\t\tthis.subHeaders = (this.headers && this.headers.filter) ? \r\n\t\t\t\t\t\t\tthis.headers.filter( (header: FlexibleTableHeader) => header.present === true) : \r\n\t\t\t\t\t\t\tthis.headers;\r\n\t}\r\n\r\n\tchange(event: any) {\r\n\t\tthis.updateLimits();\r\n\t\tthis.onconfigurationchange.emit(event);\r\n\r\n\t\tif (this.configurable && this.persistenceKey) {\r\n\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\r\n\t\t}\r\n\t}\r\n\treconfigure(event: any) {\r\n\t\tthis.headers = JSON.parse(JSON.stringify(event.headers ? event.headers : event));\r\n\t\tthis.updateLimits();\r\n\t\tthis.onconfigurationchange.emit(event);\r\n\r\n\t\tif (this.configurable && this.persistenceKey) {\r\n\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\r\n\t\t}\r\n\t}\r\n\r\n\tonPaginationChange(event: PaginationInfo) {\r\n\t\tthis.pageInfo = event;\r\n\t\tthis.viewTable?.evaluateRows();\r\n\t}\r\n\r\n\ttableAction(event: any) {\r\n\t\tthis.onaction.emit(event)\r\n\t}\r\n\r\n\tonDrop(event: any){\r\n\r\n\t}\r\n\tonCellEdit(event: any){\r\n\t\tthis.onCellContentEdit.emit(event);\r\n\t}\r\n\tonTableFilter(event: any){\r\n\t\tthis.onfilter.emit(event);\r\n\t}\r\n\tshowTopPagination() {\r\n\t\treturn this.inlinePagination === PaginationType.ontop || this.inlinePagination === PaginationType.topbottom\r\n\t}\r\n\tshowBottomPagination() {\r\n\t\treturn this.inlinePagination === PaginationType.onbottom || \r\n\t\t\t\tthis.inlinePagination === PaginationType.topbottom ||\r\n\t\t\t\tthis.inlinePagination == PaginationType.floating\r\n\t}\r\n\tisInliner() {\r\n\t\treturn this.inlinePagination !== PaginationType.floating;\r\n\t}\r\n}\r\n","\r\n<div class=\"flexible-table\">       \r\n    <table-view #viewTable\r\n        id=\"flexible\"\r\n        [action]=\"action\"\r\n        [actionKeys]=\"actionKeys\"\r\n\t\t[tableClass]=\"tableClass\"\r\n\t\t[tableInfo]=\"tableInfo\"\r\n\t\t[headers]=\"subHeaders\" \r\n        [items]=\"formeditems\" \r\n        [styler]=\"styler\"\r\n        [filterwhiletyping]=\"filterwhiletyping\"\r\n\t\t[headerSeparation]=\"headerSeparation\"\r\n        [pageInfo]=\"pageInfo\"\r\n        [vocabulary]=\"vocabulary\"\r\n\t\t[enableIndexing]=\"enableIndexing\"\r\n        [showActionable]=\"showActionable\"\r\n\t\t[enableFiltering]=\"enableFiltering\"\r\n        [expandable]=\"expandable\"\r\n        [detailers]=\"detailers\"\r\n        (onDrop)=\"onDrop($event)\"\r\n        (onfilter)=\"onTableFilter($event)\"\r\n\t\t(onCellContentEdit)=\"onCellEdit($event)\"\r\n        (onchange)=\"reconfigure($event)\"\r\n\t\t(onaction)=\"tableAction($event)\">\r\n        <ng-content select=\"[topCaption]\"></ng-content>\r\n        <div class=\"wrapper\" *ngIf=\"(configurable && items && items.length) || showTopPagination()\">\r\n            <table-configuration\r\n                *ngIf=\"configurable && items && items.length\"\r\n                class=\"table-configuration\" \r\n                [headers]=\"headers\" \r\n                [locking]=\"false\"\r\n                [title]=\"vocabulary.configureColumns\" \r\n                [printTable]=\"vocabulary.printTable\"\r\n                [action]=\"vocabulary.configureTable\"\r\n                [configAddon]=\"configAddon\"\r\n                (onprint)=\"viewTable.print()\"\r\n                (onconfigurationchange)=\"reconfigure($event)\">\r\n            </table-configuration>\r\n            <table-pagination \r\n            *ngIf=\"showTopPagination()\"\r\n                [info]=\"pageInfo\" \r\n                [inline]=\"isInliner()\" \r\n                [vocabulary]=\"vocabulary\"\r\n                (onpaginationchange)=\"onPaginationChange($event)\">\r\n            </table-pagination>\r\n        </div>\r\n    </table-view>\r\n    <div  class=\"caption\">\r\n        <ng-content select=\"[bottomCaption]\"></ng-content>\r\n        <div class=\"wrapper\">\r\n            <table-pagination \r\n                *ngIf=\"showBottomPagination()\"\r\n                [info]=\"pageInfo\" \r\n                [inline]=\"isInliner()\" \r\n                [vocabulary]=\"vocabulary\"\r\n                (onpaginationchange)=\"onPaginationChange($event)\">\r\n            </table-pagination>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n","/*\n* Provides rendering of a table which is using the given FlexibleTableHeader set in\n* order to tabulate the given data. As per definition of earch header component,\n* a column could be hidden, sortable, or dragable. Each table row can expand/collapse\n* or respond to a click action.\n*/\nimport {\n    Component,\n\tInput,\n\tOutput,\n\tViewChild,\n\tOnChanges,\n\tOnInit,\n\tRenderer2,\n\tEventEmitter,\n\tAfterViewInit\n} from '@angular/core';\n\nimport { TableViewComponent, defaultPageInfo } from './components/table.component';\nimport { TableHeadersGenerator } from './components/table-headers-generator';\nimport { FlexibleTableHeader, PaginationInfo, PaginationType, StylePositionInterface, StyleServiceInterface, VocabularyInterface } from './interfaces/flexible-table.interface';\n\nclass DefaultStylerService implements StyleServiceInterface {\n\tstyleFor(location: StylePositionInterface){return ''}\n}\n@Component({\n\tselector: 'lock-table',\n\ttemplateUrl: './lock.table.component.html',\n\tstyleUrls: ['./lock.table.component.scss']\n})\nexport class LockTableComponent implements OnInit, OnChanges, AfterViewInit {\n\n\tholdlocked = false;\n\tholdunlocked = false;\n\tlockedHeaders!:FlexibleTableHeader[];\n\tunlockedHeaders!:FlexibleTableHeader[];\n\tformeditems:any;\n\tindexing = true;\n\tfilteredItems = [];\n\n\t@Input() styler: StyleServiceInterface = new DefaultStylerService();\n\n\t@Input(\"vocabulary\")\n    public vocabulary: VocabularyInterface = {\n\t\tconfigureTable: \"Configure Table\",\n\t\tconfigureColumns: \"Configure Columns\",\n\t\tclickSort: \"Click to Sort\",\n\t\tsetSize: \"Set Size\",\n\t\tfirstPage: \"First\",\n\t\tlastPage: \"Last\",\n\t\tpreviousPage: \"Previous\"\n\t};\n\n\t@Input() headerSeparation = true;\n    @Input(\"persistenceId\")\n    public persistenceId!: string;\n\n    @Input(\"persistenceKey\")\n    public persistenceKey!: string;\n\n    @Input(\"caption\")\n    public caption!: string;\n\n    @Input(\"action\")\n    public action!: string;\n\n    @Input(\"actionKeys\")\n    public actionKeys: any;\n\n    @Input(\"tableClass\")\n    public tableClass = 'default-flexible-table';\n\n\t@Input(\"headers\")\n\tpublic headers!: any[];\n\n\t@Input(\"items\")\n\tpublic items!: any[];\n\n    @Input('inlinePagination')\n    inlinePagination: PaginationType = PaginationType.none;\n\n\t@Input(\"pageInfo\")\n\tpublic pageInfo: PaginationInfo = defaultPageInfo;\n\n\t@Input(\"tableInfo\")\n\tpublic tableInfo: any;\n\n    @Input(\"configurable\")\n    public configurable!: boolean;\n\n\t@Input(\"configAddon\")\n\tpublic configAddon: any;\n\n\t@Input(\"enableFiltering\")\n    public enableFiltering!: boolean;\n\n    @Input(\"enableIndexing\")\n    set enableIndexing(value: boolean) {\n\t\tthis.indexing = value;\n\t\tsetTimeout(this.evaluatePositioning.bind(this),111);\n\t}\n\n\t@Input(\"showActionable\") showActionable = true;\n\n    @Input(\"filterwhiletyping\")\n    public filterwhiletyping!: boolean;\n\n\n\t@Output('onaction')\n\tprivate onaction = new EventEmitter();\n\n\t@Output('onCellContentEdit')\n\tprivate onCellContentEdit = new EventEmitter();\n\n\t@Output('onfilter')\n\tprivate onfilter = new EventEmitter();\n\n\t@Output('onconfigurationchange')\n\tprivate onconfigurationchange = new EventEmitter();\n\n\t@ViewChild('lockedTable', {static: false})\n\tprivate lockedTable!: TableViewComponent;\n\n\t@ViewChild('unlockedTable', {static: false})\n\tprivate unlockedTable!: TableViewComponent;\n\n    scroll(event: any) {\n\t\tthis.renderer.setStyle(\n\t\t\t\tthis.lockedTable.host.nativeElement,\n\t\t\t\t\"left\",\n\t\t\t\tevent.target.scrollLeft+\"px\");\n\t}\n\n    constructor(\n\t\tprivate generator: TableHeadersGenerator,\n\t\tprivate renderer: Renderer2\n\t) {}\n\n\tngAfterViewInit() {\n\t\tconst width = this.lockedTable.offsetWidth() // + (this.indexing ? 40 : 0);\n\t\tthis.renderer.setStyle(this.unlockedTable.host.nativeElement,\"margin-left\", width+ \"px\");\n\t}\n\tngOnChanges(changes: any) {\n\t\tif (changes.items) {\n\t\t\tconst list: any[] = [];\n\t\t\tthis.items?.map(\n\t\t\t\t(item: any) => {\n\t\t\t\t\tconst copy = Object.assign({}, item);\n\t\t\t\t\tthis.headers.map(\n\t\t\t\t\t\t(header: FlexibleTableHeader) => {\n\t\t\t\t\t\t\tif (header.format) {\n\t\t\t\t\t\t\t\tconst formats = typeof header.format === 'string' ? [header.format] : header.format;\n\t\t\t\t\t\t\t\tconst v = copy[header.key];\n\t\t\t\t\t\t\t\tformats.map(\n\t\t\t\t\t\t\t\t\t(format: string) => {\n\t\t\t\t\t\t\t\t\t\tif (v && typeof v === 'string') {\n\t\t\t\t\t\t\t\t\t\t\tconst f = format.split(':');\n\t\t\t\t\t\t\t\t\t\t\tif (f[0] === 'calendar') {\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = Date.parse(v);\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'date') {\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = Date.parse(v);\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = f.length > 2 ? parseFloat(v) : parseInt(v, 10);\n\t\t\t\t\t\t\t\t\t\t\t} else if (f[0] === 'currency') {\n\t\t\t\t\t\t\t\t\t\t\t\tcopy[header.key] = parseFloat(v.replace(/[^0-9\\.-]+/g,\"\"));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t\tlist.push(copy);\n\t\t\t\t}\n\t\t\t)\n\t\t\tthis.formeditems = list;\n\t\t}\n\t\tif (changes.inlinePagination) {\n\t\t\tif (this.pageInfo && this.inlinePagination !== PaginationType.none) {\n\t\t\t\tthis.pageInfo.from = 0;\n\t\t\t\tthis.pageInfo.currentPage = 1;\n\t\t\t\tthis.pageInfo.to = this.pageInfo.defaultSize;\n\t\t\t\tthis.pageInfo.pageSize = this.pageInfo.defaultSize;\n\t\t\t\tthis.pageInfo.contentSize = this.items.length;\n\t\t\t} else {\n\t\t\t\tthis.pageInfo.from = 0;\n\t\t\t\tthis.pageInfo.currentPage = 1;\n\t\t\t\tthis.pageInfo.to = 100000000;\n\t\t\t\tthis.pageInfo.pageSize = 100000000;\n\t\t\t\tthis.pageInfo.contentSize = 100000000;\n\t\t\t\tthis.onPaginationChange(this.pageInfo);\n\t\t\t}\n\t\t}\n\t}\n\tngOnInit() {\n\t\tif (this.pageInfo) {\n\t\t\tif (!this.pageInfo.to) {\n\t\t\t\tthis.pageInfo.to = this.pageInfo.pageSize;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.pageInfo = {\n\t\t\t\tdefaultSize: 8,\n\t\t\t\tcontentSize: 100000,\n\t\t\t\tpageSize: 100000,\n\t\t\t\tresetSize: true,\n\t\t\t\tpages: 1,\n\t\t\t\tfrom: 0,\n\t\t\t\tto: 100000,\n\t\t\t\tcurrentPage: 1\n\t\t\t};\n\t\t}\n\t\tif (this.configurable && this.persistenceKey) {\n\t\t\tconst headers:any = this.generator.retreiveHeaders(this.persistenceKey, this.persistenceId);\n\n\t\t\tif (headers) {\n\t\t\t\tthis.headers = headers;\n\t\t\t}\n\t\t}\n\t\tif (!this.headers) {\n\t\t\tthis.headers = this.generator.generateHeadersFor(this.items[0],\"\", 5, this.enableFiltering);\n\t\t\tif (this.configurable && this.persistenceKey) {\n\t\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\n\t\t\t}\n\t\t}\n\t\tthis.filteredItems = this.formeditems ? this.formeditems: this.items;\n\t\tthis.pageInfo.contentSize = this.items.length;\n\t\t\n\t\tthis.reconfigure(this.headers);\n\n\t}\n\n\tevaluatePositioning() {\n\t\tif (this.unlockedTable?.host) {\n\t\t\tthis.renderer.setStyle(this.unlockedTable.host.nativeElement,\"margin-left\", this.lockedTable.offsetWidth()+ \"px\");\n\t\t}\n\t}\n\n\treconfigure(event: any) {\n\t\tthis.headers = JSON.parse(JSON.stringify(event.headers ? event.headers : event));\n\t\tthis.lockedHeaders = this.headers.filter( (item) => item.locked === true && item.present);\n\t\tthis.unlockedHeaders = this.headers.filter( (item) => item.locked !== true  && item.present);\t\n\t\tthis.onconfigurationchange.emit(event);\n\n\t\tif (this.configurable && this.persistenceKey) {\n\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\n\t\t}\n\t\tsetTimeout(this.evaluatePositioning.bind(this),111);\n\t}\n\n\tonlock(event: any) {\n\t\tif (event.action === 'column lock') {\n\t\t\tthis.lockedHeaders = this.headers.filter( (item) => item.locked === true && item.present);\n\t\t\tthis.unlockedHeaders = this.headers.filter( (item) => item.locked !== true  && item.present);\t\n\t\t}\n\t\tthis.onconfigurationchange.emit(event);\n\t\n\t\tif (this.configurable && this.persistenceKey) {\n\t\t\tthis.generator.persistHeaders(this.persistenceKey, this.persistenceId, this.headers);\n\t\t}\n\t\tsetTimeout(this.evaluatePositioning.bind(this),111);\n\t}\n\tchangeLockedTableFilteredItems(event: any) {\n\t\tif (this.lockedTable && !this.holdlocked) {\n\t\t\tthis.lockedTable.filteredItems = event.items;\n\t\t\tthis.lockedTable.initVisibleRows(undefined);\n\t\t}\n\t\tthis.holdlocked = false;\n\t}\n\tchangeUnlockedTableFilteredItems(event: any) {\n\t\tif (this.unlockedTable && !this.holdunlocked) {\n\t\t\tthis.unlockedTable.filteredItems = event.items;\n\t\t\tthis.unlockedTable.initVisibleRows(undefined);\n\t\t}\n\t\tthis.holdunlocked = false;\n\t}\n\tonPaginationChange(event: any) {\n\t\tthis.pageInfo = event;\n\t\tthis.holdlocked = true;\n\t\tthis.holdunlocked = true;\n\t\tthis.lockedTable?.evaluateRows();\n\t\tthis.unlockedTable?.evaluateRows();\n\t}\n\n\ttableAction(event: any) {\n\t\tthis.onaction.emit(event)\n\t}\n\n\tonDrop(event: any, lock: boolean){\n\n\t}\n\tonCellEdit(event: any){\n\t\tthis.onCellContentEdit.emit(event);\n\t}\n\tonTableFilter(event: any){\n\t\tthis.onfilter.emit(event);\n\t}\n\tshowTopPagination() {\n\t\treturn this.inlinePagination === PaginationType.ontop || this.inlinePagination === PaginationType.topbottom\n\t}\n\tshowBottomPagination() {\n\t\treturn this.inlinePagination === PaginationType.onbottom || this.inlinePagination === PaginationType.topbottom\n\t}\n\tisInliner() {\n\t\treturn this.inlinePagination !== PaginationType.floating;\n\t}\n}\n\n","<div class=\"caption\">\n\t<ng-content select=\"[topCaption]\"></ng-content>\n\t<div class=\"wrapper\" *ngIf=\"(configurable && items && items.length) || showTopPagination()\">\n\t\t<table-configuration\n\t\t\t*ngIf=\"configurable && items && items.length\"\n\t\t\tclass=\"table-configuration\" \n\t\t\t[headers]=\"headers\" \n\t\t\t[locking]=\"true\"\n\t\t\t[title]=\"vocabulary.configureColumns\" \n\t\t\t[printTable]=\"vocabulary.printTable\"\n\t\t\t[action]=\"vocabulary.configureTable\"\n\t\t\t[configAddon]=\"configAddon\"\n\t\t\t(onconfigurationchange)=\"reconfigure($event)\">\n\t\t</table-configuration>\n\t\t<table-pagination \n\t\t*ngIf=\"showTopPagination()\"\n\t\t\t[info]=\"pageInfo\" \n\t\t\t[inline]=\"isInliner()\" \n\t\t\t[vocabulary]=\"vocabulary\"\n\t\t\t(onpaginationchange)=\"onPaginationChange($event)\">\n\t\t</table-pagination>\n\t</div>\n</div>\n<div class=\"smart-table-wrap\" (scroll)=\"scroll($event)\">\n\t<table-view #lockedTable\n        id=\"locked\"\n\t\tclass=\"locked-table\"\n\t\t[headers]=\"lockedHeaders\" \n\t\t[items]=\"filteredItems\" \n        [styler]=\"styler\"\n        [pageInfo]=\"pageInfo\"\n\t\t[tableInfo]=\"tableInfo\"\n        [vocabulary]=\"vocabulary\"\n        [filterwhiletyping]=\"filterwhiletyping\"\n\t\t[enableFiltering]=\"enableFiltering\"\n\t\t[enableIndexing]=\"indexing\"\n\t\t[headerSeparation]=\"headerSeparation\"\n\t\t[showActionable]=\"false\"\n\t\t(onchange)=\"onlock($event)\"\n\t\t(onDrop)=\"onDrop($event, true)\"\n        (onfilter)=\"onTableFilter($event)\"\n\t\t(onCellContentEdit)=\"onCellEdit($event)\"\n\t\t(onfilter)=\"changeUnlockedTableFilteredItems($event)\"\n\t\t(onaction)=\"tableAction($event)\"></table-view>\n\n    <table-view #unlockedTable\n        id=\"unlocked\"\n\t\tclass=\"unlocked-table\"\n\t\t[headers]=\"unlockedHeaders\" \n\t\t[items]=\"filteredItems\" \n        [pageInfo]=\"pageInfo\"\n        [vocabulary]=\"vocabulary\"\n        [filterwhiletyping]=\"filterwhiletyping\"\n\t\t[enableFiltering]=\"enableFiltering\"\n\t\t[headerSeparation]=\"headerSeparation\"\n\t\t[showActionable]=\"false\"\n\t\t(onDrop)=\"onDrop($event, false)\"\n        (onfilter)=\"onTableFilter($event)\"\n\t\t(onchange)=\"onlock($event)\"\n\t\t(onCellContentEdit)=\"onCellEdit($event)\"\n\t\t(onfilter)=\"changeLockedTableFilteredItems($event)\"\n\t\t(onaction)=\"tableAction($event)\"></table-view>\n\t\n</div>\n<div  class=\"caption\">\n\t<ng-content select=\"[bottomCaption]\"></ng-content>\n\t<div class=\"wrapper\">\n\t\t<table-pagination \n\t\t\t*ngIf=\"showBottomPagination()\"\n\t\t\t[info]=\"pageInfo\" \n\t\t\t[inline]=\"isInliner()\" \n\t\t\t[vocabulary]=\"vocabulary\"\n\t\t\t(onpaginationchange)=\"onPaginationChange($event)\">\n\t\t</table-pagination>\n\t</div>\n</div>\n\n","/*\r\n* Provides rendering of flexible table in a lazy load fashion.\r\n*/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {IntoPipeModule} from '@sedeh/into-pipes';\r\nimport { DragDropModule } from '@sedeh/drag-enabled';\r\n\r\nimport { PaginationComponent } from './components/pagination.component';\r\nimport { ConfigurationComponent } from './components/configuration.component';\r\nimport { TableViewComponent } from './components/table.component';\r\n\r\nimport { TableHeadersGenerator } from './components/table-headers-generator';\r\nimport { FlexibleTableComponent } from './flexible.table.component';\r\nimport { LockTableComponent } from './lock.table.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        DragDropModule,\r\n        IntoPipeModule\r\n    ],\r\n    declarations: [\r\n        FlexibleTableComponent,\r\n        LockTableComponent,\r\n        ConfigurationComponent,\r\n        PaginationComponent,\r\n        TableViewComponent\r\n    ],\r\n    exports: [\r\n        FlexibleTableComponent,\r\n        LockTableComponent\r\n    ],\r\n    entryComponents: [\r\n    ],\r\n    providers: [\r\n        TableHeadersGenerator\r\n    ],\r\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class FlexibleTableModule {}\r\n","import { BehaviorSubject, Observable } from \"rxjs\";\nimport { PaginationInfo, RequestParameterInterface, DataServiceInterface, FlexibleTableHeader } from \"../interfaces/flexible-table.interface\";\n\n/**\n * This service is a stub service and each application needs to extend it per needs. \n * Basically it is allowing applications to do a server side or client side sorted and paginated data, \n * then extension of this service will override getData method and call backend with fetch parameters to receive paginated results.\n */\nexport class DataService implements DataServiceInterface {\n    private results: any[] = [];\n    protected getRequestParams(headers:FlexibleTableHeader[]): RequestParameterInterface[] {\n        const list: any[] = [];\n        headers?.map((h: FlexibleTableHeader) => {\n            const key = h.key;\n            const filterBy = (h.selectedFilterOption ? h.selectedFilterOption : (h.filter ? h.filter: ''));\n            const sortBy = h.sortable ? (h.ascending ? 'ascending' : h.descending ? 'descending' : '') : '';\n            if (filterBy || sortBy) {\n                list.push({key, filterBy, sortBy})\n            }\n            return ;\n        });\n        return list;\n    }\n    evaluateData(items: any[], headers: FlexibleTableHeader[]) {\n        items?.map(\n            (item: any) => {\n                headers.map(\n                    (header: FlexibleTableHeader) => {\n                        if (header.format) {\n                            const formats = typeof header.format === 'string' ? [header.format] : header.format;\n                            const v = item[header.key];\n                            formats.map(\n                                (format: string) => {\n                                    if (v && typeof v === 'string') {\n                                        const f = format.split(':');\n                                        if (f[0] === 'calendar') {\n                                            item[header.key] = Date.parse(v);\n                                        } else if (f[0] === 'date') {\n                                            item[header.key] = Date.parse(v);\n                                        } else if (f[0] === 'number') {\n                                            item[header.key] = f.length > 2 ? parseFloat(v) : parseInt(v, 10);\n                                        } else if (f[0] === 'currency') {\n                                            item[header.key] = parseFloat(v.replace(/[^0-9\\.-]+/g,\"\"));\n                                        }\n                                    }\n                                }\n                            )\n                        }\n                    }\n                )\n            }\n        )\n    }\n\n    getData(info: PaginationInfo, headers: FlexibleTableHeader[]): Observable<any[]> {\n        const parameters: RequestParameterInterface[] = this.getRequestParams(headers);\n        // use info to get pagination information and params to get sort order and \n        // filtering information and make an http requst all to get JSON response.\n        return new BehaviorSubject(this.results);\n    }\n}","/*\n * Public API Surface of flexible-table\n */\n\nexport * from './lib/flexible.table.component';\nexport * from './lib/lock.table.component';\nexport * from './lib/interfaces/flexible-table.interface';\nexport * from './lib/flexible-table-module';\nexport * from './lib/components/table-headers-generator';\nexport * from './lib/components/data.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DefaultStylerService","i1","i2","i3","i1.TableHeadersGenerator","i3.ConfigurationComponent","i4.PaginationComponent","i5.TableViewComponent"],"mappings":";;;;;;;;;;AAAA;;;;;AAKE;6BA0BF,MAAM,oBAAoB,CAAA;AACzB,IAAA,QAAQ,CAAC,QAAgC,EAAA,EAAE,OAAO,EAAE,CAAA,EAAC;AACrD,EAAA;AAEM,MAAM,eAAe,GAAmB,EAAC,WAAW,EAAC,CAAC,EAAE,QAAQ,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAC,CAAC;MAOpI,kBAAkB,CAAA;AA8C3B,IAAA,WAAA,CAAmB,IAAe,EAAA;QAAf,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAW;QA7CrC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAU,EAAE,CAAC;QAIrB,IAAQ,CAAA,QAAA,GAAG,CAAC,IAAS,EAAE,QAAa,KAAK,IAAI,CAAC;AAGvC,QAAA,IAAA,CAAA,UAAU,GAAwB;AAC3C,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,gBAAgB,EAAE,mBAAmB;AACrC,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,UAAU;SACxB,CAAC;QAGO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QAGrB,IAAQ,CAAA,QAAA,GAAmB,eAAe,CAAC;QAE3C,IAAU,CAAA,UAAA,GAAG,wBAAwB,CAAC;QAMzC,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAGtB,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAIA,sBAAoB,EAAE,CAAC;AAG1D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAmB,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAmB,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB,CAAC;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAgB,CAAC;KAItB;AAEjC,IAAA,gBAAgB,CAAC,EAAU,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACtC,gBAAA,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM;AACN,aAAA;AACD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACd;IAEO,gBAAgB,GAAA;AACvB,QAAA,MAAM,OAAO,GAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,EAAE,OAAO,EAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAA,EAAC,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,SAAA,CAAC,CAAC;KACH;AACO,IAAA,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,EAAW,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC,CAAC;KACH;IACO,WAAW,CAAC,MAAW,EAAE,WAAgB,EAAA;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;AAC3D,YAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1E,OAAO;AACP,aAAA;AACD,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YAExB,UAAU,CAAC,MAAI;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBAEvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACtD,EAAE,EAAE,CAAC,CAAC;AAEP,SAAA;aAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7D,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,UAAU,CAAC,MAAI;gBACd,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC7C,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AACvD,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACrD,EAAC,EAAE,CAAC,CAAC;AACN,SAAA;KACD;AAEO,IAAA,cAAc,CAAC,EAAU,EAAA;AAChC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE;gBAC/B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;AACN,aAAA;AACD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACb;IACO,SAAS,CAAC,IAAS,EAAE,KAAU,EAAA;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,KAAK,CAAC,GAAG,CAAE,CAAC,MAAW,KAAI;AAC1B,YAAA,IAAI,OAAO,EAAE;AACZ,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1B,aAAA;AACF,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC;KACtF;;IAEO,cAAc,CAAC,KAAU,EAAE,QAAa,EAAA;QAC/C,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AAClE,YAAA,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACxB,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC/B,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC/B,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC/B,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACtE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAA,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC7C,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtE,gBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACtE,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC;AAC1F,aAAA;AAAM,iBAAA;gBACN,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,aAAA;AACD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACd;IACO,SAAS,CAAC,IAAS,EAAE,MAA4B,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAG;YAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO,IAAI,CAAC,QAAQ,CAAC;AACxB,aAAA;AAAM,iBAAA;gBACf,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAClF,IAAI,CAAC,eAAe,GAAG;oBACtB,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,oBAAA,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC;AACF,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;AACxG,SAAA;KACD;AACD,IAAA,eAAe,CAAC,QAA2B,EAAA;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,iBAAA;AACD,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,QAAQ,EAAE;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,SAAA;KACD;IACD,IAAI,CAAC,MAA2B,EAAE,KAAU,EAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAExC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,QAAA,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC/C;IACD,IAAI,CAAC,MAA2B,EAAE,IAAS,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1B,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE1C,oBAAA,IAAI,IAAI,EAAE;AACT,wBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/B,qBAAA;AACc,oBAAA,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;AACrB,oBAAA,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,iBAAA;AACD,aAAA;AACQ,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AAClE,gBAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,gBAAA,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;AACN,gBAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,gBAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAClC,aAAA;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACN,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxC,aAAA;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAEpC,IAAI,MAAM,CAAC,SAAS,EAAE;AACrB,oBAAA,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,iBAAA;AACD,gBAAA,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;KACD;IAED,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;KAC5C;AAED,IAAA,WAAW,CAAC,OAAW,EAAA;;;;KAItB;IAED,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,aAAA;AACD,SAAA;AAAM,aAAA;YACN,IAAI,CAAC,QAAQ,GAAG;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,WAAW,EAAE,CAAC;aACd,CAAC;AACF,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,SAAA;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,SAAA;KACD;IACD,YAAY,GAAA;QACX,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAChD,YAAA,QAAQ,GAAE,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAA;AAAM,aAAA;YACN,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACN,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxC,aAAA;AACD,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAC/B;IAEE,oBAAoB,GAAA;QACtB,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,YAAA,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACX;AAEJ,IAAA,UAAU,CAAC,EAAU,EAAA;AACpB,QAAA,IAAI,MAAM,CAAC;AACX,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE;AAC/B,gBAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM;AACN,aAAA;AACD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACd;AACD,IAAA,aAAa,CAAC,CAAS,EAAA;QACtB,IAAI,MAAM,GAAwB,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC;AACpH,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AAChC,gBAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM;AACN,aAAA;AACD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACd;IAEE,YAAY,GAAA;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,MAA2B,KAAI;YACxC,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA;AACX,SAAC,CAAC,CAAC;QACG,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,KAAK,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACnB;IACD,KAAK,CAAC,IAAS,EAAE,IAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,SAAA;AAAM,aAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC;AAClB,SAAA;KACD;AAED,IAAA,UAAU,CAAC,MAAW,EAAA;QACrB,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,CAAC,CAAC;KACrC;IACE,OAAO,CAAC,KAAU,EAAE,IAAS,EAAA;AACzB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,EAAE;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,SAAA;KACE;AACD,IAAA,gBAAgB,CAAC,IAAS,EAAA;AAC5B,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAW,KAAI,EAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACjH,SAAA;AACK,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,WAAW,CAAC,IAAS,EAAE,MAAW,EAAA;AACpC,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;KACvG;IACD,oBAAoB,CAAC,KAAU,EAAE,MAA2B,EAAA;AAC3D,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACzC,MAAM,CAAC,oBAAoB,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACzG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KACzC;IACD,YAAY,CAAC,KAAU,EAAE,MAAW,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QAE/B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAEnC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,KAAK,EAAE,EAAE;YAC1C,IAAG,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAI;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,gBAAgB,GAAI,SAAS,CAAC;aACnC,EAAE,GAAG,CAAC,CAAC;AACR,SAAA;KACD;IACD,WAAW,CAAC,KAAU,EAAE,IAAS,EAAA;QAChC,KAAK,CAAC,eAAe,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,OAAO,KAAK,CAAC;KACb;IAED,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,MAAI;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAClD,MAAM,MAAM,GAAQ,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,MAAM,QAAQ,GAAQ,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YACxE,IAAI,aAAa,GAAG,QAAQ,CAAC;AAC7B,YAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,aAAA;AACD,YAAA,aAAa,IAAI,gCAAgC,GAAG,OAAO,GAAG,SAAS,CAAC;AAGxE,YAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnB,YAAA,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACvC,YAAA,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SAChC,EAAC,CAAC,CAAC,CAAC;KACL;IAED,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;KAC3E;AACO,IAAA,SAAS,CAAC,IAAS,EAAA;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACvC,CAAC,MAA2B,KAAI;YAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1C,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEtD,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBACzC,OAAO,GAAI,IAAI,CAAC;AAChB,iBAAA;AACD,aAAA;iBAAM,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;AAC/D,gBAAA,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE;oBACxC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE9D,oBAAA,IAAI,CAAC,KAAK,MAAM,CAAC,oBAAoB,EAAE;wBACtC,OAAO,GAAG,IAAI,CAAC;AACf,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;AAChB,SAAC,CACD,CAAC;QACF,OAAO,CAAC,cAAc,CAAC;KACvB;AAED,IAAA,eAAe,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,SAAA;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AACtE,QAAA,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACtC,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,SAAA,CAAC,CAAC;KACA;AACJ,IAAA,WAAW,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC1B;AACD,IAAA,SAAS,CAAC,KAAU,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KAC3B;AACD,IAAA,MAAM,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;KAClD;;gHAtdW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,uvBC1C/B,61QAyIA,EAAA,MAAA,EAAA,CAAA,uxOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD/Fa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACC,YAAY,EAAA,QAAA,EAAA,61QAAA,EAAA,MAAA,EAAA,CAAA,uxOAAA,CAAA,EAAA,CAAA;iGAeZ,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAWb,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACM,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACA,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACM,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACA,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACM,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACA,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEyC,KAAK,EAAA,CAAA;sBAApD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;;;IEpB3B,eAMX;AAND,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACjB,CAAC,EANW,cAAc,KAAd,cAAc,GAMzB,EAAA,CAAA,CAAA;;ACxED;;;;AAIG;MAWU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,GAAA;QAFQ,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;KAG3B;AAED,IAAA,kBAAkB,CAAC,IAAS,EAAE,IAAY,EAAE,UAAkB,EAAE,gBAAyB,EAAA;QAEvF,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAE,CAAC,GAAG,KAAI;gBAC7B,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;gBAE3D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACpG,oBAAA,MAAM,MAAM,GAAwB;AAClC,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAChC,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,cAAc,GAAG,oBAAoB;AAChH,wBAAA,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;qBACjE,CAAA;AACD,oBAAA,IAAI,gBAAgB,EAAE;AACpB,wBAAA,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,qBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE;AACrC,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE;AAC/E,wBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAC3E,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,4BAAA,GAAG,EAAE,SAAS;AACd,4BAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAChC,4BAAA,QAAQ,EAAE,IAAI;AACd,4BAAA,QAAQ,EAAE,IAAI;AACd,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,cAAc,GAAG,oBAAoB;AACjH,yBAAA,CAAC,CAAA;AACH,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAC7E,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,eAAe,CAAC,GAAQ,EAAE,WAAgB,EAAA;AACxC,QAAA,IAAI,MAAW,CAAC;QAChB,IAAI;AACF,YAAA,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE3C,YAAA,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE;AAC5B,gBAAA,MAAM,GAAG,SAAS,CAAC;AACpB,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,gBAAA,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC/C,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACX,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,cAAc,CAAC,GAAQ,EAAE,WAAgB,EAAE,OAAY,EAAA;QACrD,IAAI;AACF,YAAA,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACrC,YAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACvC,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACX,SAAA;KACF;AAEO,IAAA,SAAS,CAAC,IAAS,EAAA;AACzB,QAAA,OAAO,IAAI;AACF,aAAA,OAAO,CAAC,KAAK,EAAC,KAAK,CAAC;AACpB,aAAA,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1B,aAAA,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC;AACjB,aAAA,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC;AACjB,aAAA,OAAO,CAAC,IAAI,EAAE,CAAC,GAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;;mHAlFU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAArB,qBAAqB,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;ACdX;;;AAGE;MAUW,sBAAsB,CAAA;AA4BlC,IAAA,WAAA,CAAoB,IAAmB,EAAA;QAAnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;QA1BvC,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAMnB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAef,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;AAG3C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAGpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CACnB,CAAC,GAAW,KAAI;AACf,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,IAAI,YAAY,KAAK,EAAE;AAC1B,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,KAAa,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,UAAU,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC,CAAA;AAC3H,iBAAA;AAAM,qBAAA;oBACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;AAC3D,iBAAA;AACD,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;AACxD,aAAA;AACF,SAAC,CACD,CAAA;KACD;IAEO,UAAU,CAAC,IAAY,EAAE,MAA2B,EAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;KAC3F;IACD,WAAW,CAAC,IAAS,EAAE,MAAW,EAAA;AAC3B,QAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;KACzD;AACD,IAAA,OAAO,CAAC,MAAW,EAAA;AAClB,QAAA,OAAO,MAAM,KAAK,MAAM,YAAY,KAAK,CAAC,CAAC;KAC3C;IAED,YAAY,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC7C,IAAI,KAAK,CAAC,OAAO,EAAE;AACxB,YAAA,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,SAAA;AAAM,aAAA;YACN,OAAO,MAAM,CAAC,MAAM,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KAC1C;IAED,UAAU,CAAC,KAAU,EAAE,MAA2B,EAAA;AACjD,QAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;KACtD;IACD,YAAY,CAAC,KAAU,EAAE,MAA2B,EAAA;AACnD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACzC,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KAC1C;AACD,IAAA,KAAK,CAAC,KAAU,EAAA;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;AAEE,IAAA,KAAK,CAAC,KAAU,EAAA;AACZ,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,IAAI,KAAK,EAAE,EAAE;AACtB,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,SAAA;KACE;;oHArFQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,wRCbnC,mwHAiFA,EAAA,MAAA,EAAA,CAAA,w3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDpEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACC,qBAAqB,EAAA,QAAA,EAAA,mwHAAA,EAAA,MAAA,EAAA,CAAA,w3CAAA,CAAA,EAAA,CAAA;oGASxB,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,OAAO,CAAA;gBAIP,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,QAAQ,CAAA;gBAIR,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAIZ,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,aAAa,CAAA;gBAIZ,qBAAqB,EAAA,CAAA;sBAD5B,MAAM;uBAAC,uBAAuB,CAAA;gBAIvB,OAAO,EAAA,CAAA;sBADd,MAAM;uBAAC,SAAS,CAAA;;;AEtClB;;AAEE;MASW,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,UAAU,GAAwB;AACrC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,YAAY,EAAE,EAAE;SACnB,CAAC;AAGF,QAAA,IAAA,CAAA,IAAI,GAAmB;AACnB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,WAAW,EAAE,CAAC;SACjB,CAAC;QAGF,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAGf,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC;AAGxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AA+F1C,KAAA;IA7FA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,IAAI,GAAG;AACC,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,WAAW,EAAE,CAAC;aACjB,CAAC;AACX,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACvB,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,SAAA;KACE;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;IAED,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;KACL;IAED,UAAU,GAAA;QACL,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAA;KACJ;IAED,UAAU,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;KACJ;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;KACJ;AAED,IAAA,aAAa,CAAC,MAAW,EAAA;QACrB,MAAM,CAAC,GAAG,QAAQ,CAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAE,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA;YACH,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,KAAU,EAAA;AACd,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,SAAA;KACE;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;QACjB,MAAM,CAAC,GAAG,QAAQ,CAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA;YACH,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,SAAA;KACJ;;iHA3HQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,6NCXhC,gjEA2CA,EAAA,MAAA,EAAA,CAAA,0oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDhCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,gjEAAA,EAAA,MAAA,EAAA,CAAA,0oDAAA,CAAA,EAAA,CAAA;8BAOrB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAUnB,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,MAAM,CAAA;gBAYb,MAAM,EAAA,CAAA;sBADL,KAAK;uBAAC,QAAQ,CAAA;gBAIf,kBAAkB,EAAA,CAAA;sBADpB,MAAM;uBAAC,oBAAoB,CAAA;gBAIzB,iBAAiB,EAAA,CAAA;sBADhB,MAAM;uBAAC,mBAAmB,CAAA;;;AEvC/B;;;;;AAKE;6BAeF,MAAM,oBAAoB,CAAA;AACzB,IAAA,QAAQ,CAAC,QAAgC,EAAA,EAAE,OAAO,EAAE,CAAA,EAAC;AACrD,EAAA;MAOY,sBAAsB,CAAA;AA2F/B,IAAA,WAAA,CAAoB,SAAgC,EAAA;QAAhC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAuB;AAtF9C,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAID,sBAAoB,EAAE,CAAC;AAG1D,QAAA,IAAA,CAAA,UAAU,GAAwB;AAC3C,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,gBAAgB,EAAE,mBAAmB;AACrC,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,UAAU;SACxB,CAAC;QAEO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QAiBvB,IAAU,CAAA,UAAA,GAAG,wBAAwB,CAAC;AAG7C,QAAA,IAAA,CAAA,gBAAgB,GAAmB,cAAc,CAAC,IAAI,CAAC;QASnD,IAAQ,CAAA,QAAA,GAAmB,eAAe,CAAC;QAczB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAevC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;KAKQ;AAE3D,IAAA,WAAW,CAAC,OAAY,EAAA;QACvB,IAAI,OAAO,CAAC,KAAK,EAAE;YAClB,MAAM,IAAI,GAAU,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,GAAG,CACd,CAAC,IAAS,KAAI;gBACb,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CACf,CAAC,MAA2B,KAAI;oBAC/B,IAAI,MAAM,CAAC,MAAM,EAAE;wBAClB,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;wBACpF,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,wBAAA,OAAO,CAAC,GAAG,CACV,CAAC,MAAc,KAAI;AAClB,4BAAA,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gCAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,gCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACxB,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AAC3B,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oCAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAC/B,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,iCAAA;AACD,6BAAA;AACF,yBAAC,CACD,CAAA;AACD,qBAAA;AACF,iBAAC,CACD,CAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,aAAC,CACD,CAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,SAAA;QACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,IAAI,EAAE;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;AACtC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAA;AACD,SAAA;KACD;IACD,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,MAAM,OAAO,GAA0B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAE/G,YAAA,IAAI,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,aAAA;AACD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5F,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,gBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,aAAA;AACK,SAAA;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,IAAI,EAAE;AACnE,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,aAAA;YACD,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9C,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,WAAW,EAAE,CAAC;aACd,CAAC;AACF,SAAA;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAED,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,MAA2B,KAAK,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YAC9E,IAAI,CAAC,OAAO,CAAC;KAClB;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,SAAA;KACD;AACD,IAAA,WAAW,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,SAAA;KACD;AAED,IAAA,kBAAkB,CAAC,KAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC;KAC/B;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACzB;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;KAEhB;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AACD,IAAA,aAAa,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IACD,iBAAiB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,SAAS,CAAA;KAC3G;IACD,oBAAoB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,QAAQ;AACtD,YAAA,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,SAAS;AAClD,YAAA,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,QAAQ,CAAA;KAClD;IACD,SAAS,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,QAAQ,CAAC;KACzD;;oHAvOW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,k7BC7BnC,qiFA8DA,EAAA,MAAA,EAAA,CAAA,89GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDjCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACC,gBAAgB,EAAA,QAAA,EAAA,qiFAAA,EAAA,MAAA,EAAA,CAAA,89GAAA,CAAA,EAAA,CAAA;yGASjB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGI,UAAU,EAAA,CAAA;sBADnB,KAAK;uBAAC,YAAY,CAAA;gBAYV,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBADnB,KAAK;uBAAC,eAAe,CAAA;gBAIf,cAAc,EAAA,CAAA;sBADvB,KAAK;uBAAC,gBAAgB,CAAA;gBAIb,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,QAAQ,CAAA;gBAIR,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAIZ,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAInB,gBAAgB,EAAA,CAAA;sBADf,KAAK;uBAAC,kBAAkB,CAAA;gBAIrB,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,OAAO,CAAA;gBAIP,QAAQ,EAAA,CAAA;sBADd,KAAK;uBAAC,UAAU,CAAA;gBAIV,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,WAAW,CAAA;gBAIR,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,cAAc,CAAA;gBAIjB,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,aAAa,CAAA;gBAIV,cAAc,EAAA,CAAA;sBADvB,KAAK;uBAAC,gBAAgB,CAAA;gBAGE,cAAc,EAAA,CAAA;sBAAtC,KAAK;uBAAC,gBAAgB,CAAA;gBAGb,eAAe,EAAA,CAAA;sBADrB,KAAK;uBAAC,iBAAiB,CAAA;gBAIjB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAIZ,iBAAiB,EAAA,CAAA;sBADvB,KAAK;uBAAC,mBAAmB,CAAA;gBAInB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,WAAW,CAAA;gBAIb,QAAQ,EAAA,CAAA;sBADf,MAAM;uBAAC,UAAU,CAAA;gBAIV,iBAAiB,EAAA,CAAA;sBADxB,MAAM;uBAAC,mBAAmB,CAAA;gBAInB,QAAQ,EAAA,CAAA;sBADf,MAAM;uBAAC,UAAU,CAAA;gBAIV,qBAAqB,EAAA,CAAA;sBAD5B,MAAM;uBAAC,uBAAuB,CAAA;gBAI/B,SAAS,EAAA,CAAA;sBADR,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;;;AErHxC;;;;;AAKE;AAiBF,MAAM,oBAAoB,CAAA;AACzB,IAAA,QAAQ,CAAC,QAAgC,EAAA,EAAE,OAAO,EAAE,CAAA,EAAC;AACrD,CAAA;MAMY,kBAAkB,CAAA;IAkE3B,IACI,cAAc,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,CAAC;KACpD;AA0BE,IAAA,MAAM,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EACnC,MAAM,EACN,KAAK,CAAC,MAAM,CAAC,UAAU,GAAC,IAAI,CAAC,CAAC;KAChC;IAEE,WACM,CAAA,SAAgC,EAChC,QAAmB,EAAA;QADnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAuB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAvG5B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAIrB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAChB,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AAEV,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAI,oBAAoB,EAAE,CAAC;AAG1D,QAAA,IAAA,CAAA,UAAU,GAAwB;AAC3C,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,gBAAgB,EAAE,mBAAmB;AACrC,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,UAAU;SACxB,CAAC;QAEO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QAiBvB,IAAU,CAAA,UAAA,GAAG,wBAAwB,CAAC;AAS7C,QAAA,IAAA,CAAA,gBAAgB,GAAmB,cAAc,CAAC,IAAI,CAAC;QAGnD,IAAQ,CAAA,QAAA,GAAmB,eAAe,CAAC;QAoBzB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAOvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAG9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;KAkB/C;IAEJ,eAAe,GAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAC,aAAa,EAAE,KAAK,GAAE,IAAI,CAAC,CAAC;KACzF;AACD,IAAA,WAAW,CAAC,OAAY,EAAA;QACvB,IAAI,OAAO,CAAC,KAAK,EAAE;YAClB,MAAM,IAAI,GAAU,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,GAAG,CACd,CAAC,IAAS,KAAI;gBACb,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CACf,CAAC,MAA2B,KAAI;oBAC/B,IAAI,MAAM,CAAC,MAAM,EAAE;wBAClB,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;wBACpF,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,wBAAA,OAAO,CAAC,GAAG,CACV,CAAC,MAAc,KAAI;AAClB,4BAAA,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gCAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,gCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACxB,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AAC3B,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oCAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,iCAAA;AAAM,qCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAC/B,oCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,iCAAA;AACD,6BAAA;AACF,yBAAC,CACD,CAAA;AACD,qBAAA;AACF,iBAAC,CACD,CAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,aAAC,CACD,CAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,SAAA;QACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,IAAI,EAAE;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;AACtC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAA;AACD,SAAA;KACD;IACD,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,aAAA;AACD,SAAA;AAAM,aAAA;YACN,IAAI,CAAC,QAAQ,GAAG;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,WAAW,EAAE,CAAC;aACd,CAAC;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAE5F,YAAA,IAAI,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,aAAA;AACD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5F,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,gBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,aAAA;AACD,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAE,IAAI,CAAC,KAAK,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAE9C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAE/B;IAED,mBAAmB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAE,IAAI,CAAC,CAAC;AAClH,SAAA;KACD;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,IAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,SAAA;AACD,QAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,CAAC;KACpD;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE;YACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,IAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7F,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,SAAA;AACD,QAAA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,CAAC;KACpD;AACD,IAAA,8BAA8B,CAAC,KAAU,EAAA;QACxC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;AAC7C,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,gCAAgC,CAAC,KAAU,EAAA;QAC1C,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC1B;AACD,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACzB;IAED,MAAM,CAAC,KAAU,EAAE,IAAa,EAAA;KAE/B;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AACD,IAAA,aAAa,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IACD,iBAAiB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,SAAS,CAAA;KAC3G;IACD,oBAAoB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,SAAS,CAAA;KAC9G;IACD,SAAS,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,QAAQ,CAAC;KACzD;;gHAlRW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,i+BC9B/B,8sFA6EA,EAAA,MAAA,EAAA,CAAA,q7GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD/Ca,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACC,YAAY,EAAA,QAAA,EAAA,8sFAAA,EAAA,MAAA,EAAA,CAAA,q7GAAA,CAAA,EAAA,CAAA;iIAcb,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGI,UAAU,EAAA,CAAA;sBADnB,KAAK;uBAAC,YAAY,CAAA;gBAWV,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBADnB,KAAK;uBAAC,eAAe,CAAA;gBAIf,cAAc,EAAA,CAAA;sBADpB,KAAK;uBAAC,gBAAgB,CAAA;gBAIhB,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,QAAQ,CAAA;gBAIR,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAIZ,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,YAAY,CAAA;gBAIf,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,SAAS,CAAA;gBAIT,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,OAAO,CAAA;gBAIX,gBAAgB,EAAA,CAAA;sBADf,KAAK;uBAAC,kBAAkB,CAAA;gBAIrB,QAAQ,EAAA,CAAA;sBADd,KAAK;uBAAC,UAAU,CAAA;gBAIV,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,WAAW,CAAA;gBAIR,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,cAAc,CAAA;gBAIjB,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,aAAa,CAAA;gBAIV,eAAe,EAAA,CAAA;sBADxB,KAAK;uBAAC,iBAAiB,CAAA;gBAIjB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,gBAAgB,CAAA;gBAMD,cAAc,EAAA,CAAA;sBAAtC,KAAK;uBAAC,gBAAgB,CAAA;gBAGb,iBAAiB,EAAA,CAAA;sBADvB,KAAK;uBAAC,mBAAmB,CAAA;gBAKrB,QAAQ,EAAA,CAAA;sBADf,MAAM;uBAAC,UAAU,CAAA;gBAIV,iBAAiB,EAAA,CAAA;sBADxB,MAAM;uBAAC,mBAAmB,CAAA;gBAInB,QAAQ,EAAA,CAAA;sBADf,MAAM;uBAAC,UAAU,CAAA;gBAIV,qBAAqB,EAAA,CAAA;sBAD5B,MAAM;uBAAC,uBAAuB,CAAA;gBAIvB,WAAW,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;gBAIjC,aAAa,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;;;AE3H5C;;AAEE;MAuCW,mBAAmB,CAAA;;iHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAlBxB,sBAAsB;QACtB,kBAAkB;QAClB,sBAAsB;QACtB,mBAAmB;AACnB,QAAA,kBAAkB,aATlB,YAAY;QACZ,cAAc;AACd,QAAA,cAAc,aAUd,sBAAsB;QACtB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAUb,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EANjB,SAAA,EAAA;QACP,qBAAqB;AACxB,KAAA,EAAA,OAAA,EAAA,CAnBG,YAAY;QACZ,cAAc;QACd,cAAc,CAAA,EAAA,CAAA,CAAA;4FAqBT,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAzB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,cAAc;wBACd,cAAc;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,sBAAsB;wBACtB,kBAAkB;wBAClB,sBAAsB;wBACtB,mBAAmB;wBACnB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,sBAAsB;wBACtB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,eAAe,EAAE,EAChB;AACD,oBAAA,SAAS,EAAE;wBACP,qBAAqB;AACxB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;;ACpCD;;;;AAIG;MACU,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QACY,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;KAmD/B;AAlDa,IAAA,gBAAgB,CAAC,OAA6B,EAAA;QACpD,MAAM,IAAI,GAAU,EAAE,CAAC;AACvB,QAAA,OAAO,EAAE,GAAG,CAAC,CAAC,CAAsB,KAAI;AACpC,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAClB,YAAA,MAAM,QAAQ,IAAI,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAE,EAAE,CAAC,CAAC,CAAC;AAC/F,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,UAAU,GAAG,YAAY,GAAG,EAAE,IAAI,EAAE,CAAC;YAChG,IAAI,QAAQ,IAAI,MAAM,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAA;AACrC,aAAA;YACD,OAAQ;AACZ,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;IACD,YAAY,CAAC,KAAY,EAAE,OAA8B,EAAA;AACrD,QAAA,KAAK,EAAE,GAAG,CACN,CAAC,IAAS,KAAI;AACV,YAAA,OAAO,CAAC,GAAG,CACP,CAAC,MAA2B,KAAI;gBAC5B,IAAI,MAAM,CAAC,MAAM,EAAE;oBACf,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;oBACpF,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,oBAAA,OAAO,CAAC,GAAG,CACP,CAAC,MAAc,KAAI;AACf,wBAAA,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;4BAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,4BAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACrB,gCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,6BAAA;AAAM,iCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxB,gCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,6BAAA;AAAM,iCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gCAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,6BAAA;AAAM,iCAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAC5B,gCAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,6BAAA;AACJ,yBAAA;AACL,qBAAC,CACJ,CAAA;AACJ,iBAAA;AACL,aAAC,CACJ,CAAA;AACL,SAAC,CACJ,CAAA;KACJ;IAED,OAAO,CAAC,IAAoB,EAAE,OAA8B,EAAA;QACxD,MAAM,UAAU,GAAgC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;;AAG/E,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5C;AACJ;;AC5DD;;AAEG;;ACFH;;AAEG;;;;"}