{"version":3,"file":"primeng-treetable.mjs","sources":["../../src/treetable/style/treetablestyle.ts","../../src/treetable/treetable.ts","../../src/treetable/primeng-treetable.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst style = /*css*/ `\n/* For PrimeNG */\n.p-treetable {\n    position: relative;\n}\n\n.p-treetable table {\n    border-collapse: collapse;\n    width: 100%;\n    table-layout: fixed;\n}\n\n.p-treetable .p-sortable-column {\n    cursor: pointer;\n    user-select: none;\n}\n\n.p-treetable .p-sortable-column .p-column-title,\n.p-treetable .p-sortable-column .p-sortable-column-icon,\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n    vertical-align: middle;\n}\n\n.p-treetable-sort-icon {\n    color: dt('treetable.sort.icon.color');\n    font-size: dt('treetable.sort.icon.size');\n    width: dt('treetable.sort.icon.size');\n    height: dt('treetable.sort.icon.size');\n    transition: color dt('treetable.transition.duration');\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper {\n    overflow-x: auto;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper>table {\n    table-layout: auto;\n}\n\n.p-treetable-hoverable-rows .p-treetable-tbody>tr {\n    cursor: pointer;\n}\n\n.p-treetable-toggler {\n    cursor: pointer;\n    user-select: none;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    vertical-align: middle;\n    overflow: hidden;\n    position: relative;\n}\n\n\n/* Scrollable */\n.p-treetable-scrollable-wrapper {\n    position: relative;\n}\n\n.p-treetable-scrollable-header,\n.p-treetable-scrollable-footer {\n    overflow: hidden;\n    flex-shrink: 0;\n}\n\n.p-treetable-scrollable-body {\n    overflow: auto;\n    position: relative;\n}\n\n.p-treetable-virtual-table {\n    position: absolute;\n}\n\n/* Frozen Columns */\n.p-treetable-frozen-view .p-treetable-scrollable-body {\n    overflow: hidden;\n}\n\n.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child {\n    border-right: 0 none;\n}\n\n.p-treetable-unfrozen-view {\n    position: absolute;\n    top: 0;\n}\n\n/* Flex Scrollable */\n.p-treetable-flex-scrollable {\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,\n.p-treetable-flex-scrollable .p-treetable-scrollable-view {\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body {\n    flex: 1;\n}\n\n/* Resizable */\n.p-treetable-resizable>.p-treetable-wrapper {\n    overflow-x: auto;\n}\n\n.p-treetable-resizable .p-treetable-thead>tr>th,\n.p-treetable-resizable .p-treetable-tfoot>tr>td,\n.p-treetable-resizable .p-treetable-tbody>tr>td {\n    overflow: hidden;\n}\n\n.p-treetable-resizable .p-resizable-column {\n    background-clip: padding-box;\n    position: relative;\n}\n\n.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer {\n    display: none;\n}\n\n.p-treetable .p-column-resizer {\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0;\n    margin: 0;\n    width: dt('treetable.column.resizer.width');\n    height: 100%;\n    padding: 0px;\n    cursor: col-resize;\n    border: 1px solid transparent;\n}\n\n.p-treetable .p-column-resizer-helper {\n    width: dt('treetable.resize.indicator.width');\n    position: absolute;\n    z-index: 10;\n    display: none;\n    background: dt('treetable.resize.indicator.color');\n}\n\n.p-treetable .p-row-editor-init,\n.p-treetable .p-row-editor-save,\n.p-treetable .p-row-editor-cancel {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    position: relative;\n}\n\n\n/* Reorder */\n.p-treetable-reorder-indicator-up,\n.p-treetable-reorder-indicator-down {\n    position: absolute;\n    display: none;\n}\n\n[ttReorderableColumn] {\n    cursor: move;\n}\n\n/* Loader */\n.p-treetable-mask {\n    position: absolute !important;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 2;\n}\n\n.p-treetable-loading-icon {\n    font-size: dt('treetable.loading.icon.size');\n    width: dt('treetable.loading.icon.size');\n    height: dt('treetable.loading.icon.size');\n}\n\n/* Virtual Scroll */\n.p-treetable .p-scroller-loading {\n    transform: none !important;\n    min-height: 0;\n    position: sticky;\n    top: 0;\n    left: 0;\n}\n\n.p-treetable .p-paginator-top {\n    border-color: dt('treetable.paginator.top.border.color');\n    border-style: solid;\n    border-width: dt('treetable.paginator.top.border.width');\n}\n\n.p-treetable .p-paginator-bottom {\n    border-color: dt('treetable.paginator.bottom.border.color');\n    border-style: solid;\n    border-width: dt('treetable.paginator.bottom.border.width');\n}\n\n.p-treetable .p-treetable-header {\n    background: dt('treetable.header.background');\n    color: dt('treetable.header.color');\n    border-color: dt('treetable.header.border.color');\n    border-style: solid;\n    border-width: dt('treetable.header.border.width');\n    padding: dt('treetable.header.padding');\n    font-weight: dt('treetable.column.title.font.weight');\n}\n\n.p-treetable .p-treetable-footer {\n    background: dt('treetable.footer.background');\n    color: dt('treetable.footer.color');\n    border-color: dt('treetable.footer.border.color');\n    border-style: solid;\n    border-width: dt('treetable.footer.border.width');\n    padding: dt('treetable.footer.padding');\n    font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-treetable-thead>tr>th {\n    padding: dt('treetable.header.cell.padding');\n    background: dt('treetable.header.cell.background');\n    border-color: dt('treetable.header.cell.border.color');\n    border-style: solid;\n    border-width: 0 0 1px 0;\n    color: dt('treetable.header.cell.color');\n    font-weight: dt('treetable.column.title.font.weight');\n    text-align: start;\n    transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n            outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n}\n\n.p-treetable .p-treetable-tfoot>tr>td {\n    text-align: start;\n    padding: dt('treetable.footer.cell.padding');\n    border-color: dt('treetable.footer.cell.border.color');\n    border-style: solid;\n    border-width: 0 0 1px 0;\n    color: dt('treetable.footer.cell.color');\n    background: dt('treetable.footer.cell.background');\n    font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-sortable-column {\n    cursor: pointer;\n    user-select: none;\n    outline-color: transparent;\n    vertical-align: middle;\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-icon {\n    color: dt('treetable.sort.icon.color');\n    transition: color dt('treetable.transition.duration');\n}\n\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover {\n    background: dt('treetable.header.cell.hover.background');\n    color: dt('treetable.header.cell.hover.color');\n}\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover .p-treetable-sort-icon {\n    color: dt('treetable.sort.icon.hover.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted {\n    background: dt('treetable.header.cell.selected.background');\n    color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted .p-treetable-sort-icon {\n    color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column:focus-visible {\n    box-shadow: dt('treetable.header.cell.focus.ring.shadow');\n    outline: dt('treetable.header.cell.focus.ring.width') dt('treetable.header.cell.focus.ring.style') dt('treetable.header.cell.focus.ring.color');\n    outline-offset: dt('treetable.header.cell.focus.ring.offset');\n}\n\n.p-treetable-hoverable .p-treetable-selectable-row {\n    cursor: pointer;\n}\n\n.p-treetable .p-treetable-tbody > tr {\n    outline-color: transparent;\n    background: dt('treetable.row.background');\n    color: dt('treetable.row.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td {\n    text-align: start;\n    border-color: dt('treetable.body.cell.border.color');\n    border-style: solid;\n    border-width: 0 0 1px 0;\n    padding: dt('treetable.body.cell.padding');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    position: relative;\n    width: dt('treetable.node.toggle.button.size');\n    height: dt('treetable.node.toggle.button.size');\n    color: dt('treetable.node.toggle.button.color');\n    border: 0 none;\n    background: transparent;\n    cursor: pointer;\n    border-radius: dt('treetable.node.toggle.button.border.radius');\n    transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n            outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n    outline-color: transparent;\n    user-select: none;\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:enabled:hover {\n    color: dt('treetable.node.toggle.button.hover.color');\n    background: dt('treetable.node.toggle.button.hover.background');\n}\n\n.p-treetable .p-treetable-tbody>tr>tr.treetable-row-selected .p-treetable-toggler:hover {\n    background: dt('treetable.node.toggle.button.selected.hover.background');\n    color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:focus-visible {\n    box-shadow: dt('treetable.node.toggle.button.focus.ring.shadow');\n    outline: dt('treetable.node.toggle.button.focus.ring.width') dt('treetable.node.toggle.button.focus.ring.style') dt('treetable.node.toggle.button.focus.ring.color');\n    outline-offset: dt('treetable.node.toggle.button.focus.ring.offset');\n}\n\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected {\n    background: dt('treetable.row.selected.background');\n    color: dt('treetable.row.selected.color');\n}\n\n.p-treetable-tbody > tr:focus-visible,\n.p-treetable-tbody > tr.p-treetable-contextmenu-row-selected {\n    box-shadow: dt('treetable.row.focus.ring.shadow');\n    outline: dt('treetable.row.focus.ring.width') dt('treetable.row.focus.ring.style') dt('treetable.row.focus.ring.color');\n    outline-offset: dt('treetable.row.focus.ring.offset');\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler {\n    color: inherit;\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler:hover {\n    background: dt('treetable.node.toggle.button.selected.hover.background');\n    color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody>tr:not(.p-treetable-row-selected):hover {\n    background: dt('treetable.row.hover.background');\n    color: dt('treetable.row.hover.color');\n}\n\n.p-treetable-gridlines .p-treetable-header {\n    border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-footer {\n    border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-top {\n    border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-bottom {\n    border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th {\n    border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th:last-child {\n    border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td {\n    border-width: 1px 0 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td:last-child {\n    border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td {\n    border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td:last-child {\n    border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td {\n    border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td:last-child {\n    border-width: 1px 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td {\n    border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td:last-child {\n    border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td {\n    border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td:last-child {\n    border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot) .p-treetable-tbody > tr:last-child > td {\n    border-width: 0 0 0 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot) .p-treetable-tbody > tr:last-child > td:last-child {\n    border-width: 0 1px 0 1px;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-header {\n    padding: 0.65625rem 0.875rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-thead>tr>th {\n    padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tbody>tr>td {\n    padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tfoot>tr>td {\n    padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-footer {\n    padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-header {\n    padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-thead>tr>th {\n    padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tbody>tr>td {\n    padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td {\n    padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-footer {\n    padding: 0.9375rem 1.25rem;\n}\n\np-treetabletoggler + p-treetablecheckbox .p-checkbox,\np-treetable-toggler + p-treetable-checkbox .p-checkbox,\np-tree-table-toggler + p-tree-table-checkbox .p-checkbox {\n    vertical-align: middle;\n}\n\np-treetabletoggler + p-treetablecheckbox + span,\np-treetable-toggler + p-treetable-checkbox + span,\np-tree-table-toggler + p-tree-table-checkbox + span {\n    vertical-align: middle;\n}\n\np-treetable-sort-icon {\n    display: inline-flex;\n    align-items: center;\n    gap: dt('treetable.header.cell.gap');\n}\n`;\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-treetable p-component',\n        {\n            'p-treetable-gridlines': instance.showGridlines,\n            'p-treetable-hoverable-rows': instance.rowHover || instance.selectionMode === 'single' || instance.selectionMode === 'multiple',\n            'p-treetable-auto-layout': instance.autoLayout,\n            'p-treetable-resizable': instance.resizableColumns,\n            'p-treetable-resizable-fit': instance.resizableColumns && instance.columnResizeMode === 'fit',\n            'p-treetable-flex-scrollable': instance.scrollable && instance.scrollHeight === 'flex'\n        }\n    ],\n    loading: 'p-treetable-loading',\n    mask: 'p-treetable-mask p-overlay-mask',\n    loadingIcon: 'p-treetable-loading-icon',\n    header: 'p-treetable-header',\n    pcPaginator: ({ instance }) => ['p-treetable-paginator-' + instance.paginatorPosition, instance.paginatorStyleClass],\n    tableContainer: 'p-treetable-table-container',\n    table: ({ instance }) => ({\n        'p-treetable-table': true,\n        'p-treetable-scrollable-table': instance.scrollable,\n        'p-treetable-resizable-table': instance.resizableColumns,\n        'p-treetable-resizable-table-fit': instance.resizableColumns && instance.columnResizeMode === 'fit'\n    }),\n    thead: 'p-treetable-thead',\n    sortableColumn: ({ instance }) => ({\n        'p-sortable-column': instance.isEnabled(),\n        'p-treetable-column-sorted': instance.sorted\n    }),\n    sortableColumnIcon: 'p-treetable-sort-icon',\n    sortableColumnBadge: 'p-sortable-column-badge',\n    columnResizer: 'p-treetable-column-resizer',\n    columnHeaderContent: 'p-treetable-column-header-content',\n    columnTitle: 'p-treetable-column-title',\n    sortIcon: 'p-treetable-sort-icon',\n    pcSortBadge: 'p-treetable-sort-badge',\n    tbody: 'p-treetable-tbody',\n    row: ({ instance }) => ({\n        'p-treetable-row-selected': instance.selected\n    }),\n    contextMenuRow: ({ instance }) => ({\n        'p-treetable-contextmenu-row-selected': instance.selected\n    }),\n    toggler: 'p-treetable-toggler',\n    nodeToggleButton: 'p-treetable-node-toggle-button',\n    nodeToggleIcon: 'p-treetable-node-toggle-icon',\n    pcNodeCheckbox: 'p-treetable-node-checkbox',\n    tfoot: 'p-treetable-tfoot',\n    footerCell: ({ instance }) => ({\n        'p-treetable-frozen-column': instance.columnProp('frozen')\n    }),\n    footer: 'p-treetable-footer',\n    columnResizeIndicator: 'p-treetable-column-resize-indicator',\n    wrapper: 'p-treetable-wrapper',\n    scrollableWrapper: 'p-treetable-scrollable-wrapper',\n    scrollableView: 'p-treetable-scrollable-view',\n    frozenView: 'p-treetable-frozen-view',\n    columnResizerHelper: 'p-column-resizer-helper',\n    reorderIndicatorUp: 'p-treetable-reorder-indicator-up',\n    reorderIndicatorDown: 'p-treetable-reorder-indicator-down',\n    scrollableHeader: 'p-treetable-scrollable-header',\n    scrollableHeaderBox: 'p-treetable-scrollable-header-box',\n    scrollableHeaderTable: 'p-treetable-scrollable-header-table',\n    scrollableBody: 'p-treetable-scrollable-body',\n    scrollableFooter: 'p-treetable-scrollable-footer',\n    scrollableFooterBox: 'p-treetable-scrollable-footer-box',\n    scrollableFooterTable: 'p-treetable-scrollable-footer-table'\n};\n\n@Injectable()\nexport class TreeTableStyle extends BaseStyle {\n    name = 'treetable';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * TreeTable is used to display hierarchical data in tabular format.\n *\n * [Live Demo](https://www.primeng.org/treetable/)\n *\n * @module treetablestyle\n *\n */\nexport enum TreeTableClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-treetable',\n    /**\n     * Class name of the loading element\n     */\n    loading = 'p-treetable-loading',\n    /**\n     * Class name of the mask element\n     */\n    mask = 'p-treetable-mask',\n    /**\n     * Class name of the loading icon element\n     */\n    loadingIcon = 'p-treetable-loading-icon',\n    /**\n     * Class name of the header element\n     */\n    header = 'p-treetable-header',\n    /**\n     * Class name of the paginator element\n     */\n    pcPaginator = 'p-treetable-paginator-[position]',\n    /**\n     * Class name of the table container element\n     */\n    tableContainer = 'p-treetable-table-container',\n    /**\n     * Class name of the table element\n     */\n    table = 'p-treetable-table',\n    /**\n     * Class name of the thead element\n     */\n    thead = 'p-treetable-thead',\n    /**\n     * Class name of the column resizer element\n     */\n    columnResizer = 'p-treetable-column-resizer',\n    /**\n     * Class name of the column title element\n     */\n    columnTitle = 'p-treetable-column-title',\n    /**\n     * Class name of the sort icon element\n     */\n    sortIcon = 'p-treetable-sort-icon',\n    /**\n     * Class name of the sort badge element\n     */\n    pcSortBadge = 'p-treetable-sort-badge',\n    /**\n     * Class name of the tbody element\n     */\n    tbody = 'p-treetable-tbody',\n    /**\n     * Class name of the node toggle button element\n     */\n    nodeToggleButton = 'p-treetable-node-toggle-button',\n    /**\n     * Class name of the node toggle icon element\n     */\n    nodeToggleIcon = 'p-treetable-node-toggle-icon',\n    /**\n     * Class name of the node checkbox element\n     */\n    pcNodeCheckbox = 'p-treetable-node-checkbox',\n    /**\n     * Class name of the empty message element\n     */\n    emptyMessage = 'p-treetable-empty-message',\n    /**\n     * Class name of the tfoot element\n     */\n    tfoot = 'p-treetable-tfoot',\n    /**\n     * Class name of the footer element\n     */\n    footer = 'p-treetable-footer',\n    /**\n     * Class name of the column resize indicator element\n     */\n    columnResizeIndicator = 'p-treetable-column-resize-indicator',\n    /**\n     * Class name of the wrapper element\n     */\n    wrapper = 'p-treetable-wrapper',\n    /**\n     * Class name of the scrollable wrapper element\n     */\n    scrollableWrapper = 'p-treetable-scrollable-wrapper',\n    /**\n     * Class name of the scrollable view element\n     */\n    scrollableView = 'p-treetable-scrollable-view',\n    /**\n     * Class name of the frozen view element\n     */\n    frozenView = 'p-treetable-frozen-view',\n    /**\n     * Class name of the column resizer helper element\n     */\n    columnResizerHelper = 'p-treetable-column-resizer-helper',\n    /**\n     * Class name of the reorder indicator up element\n     */\n    reorderIndicatorUp = 'p-treetable-reorder-indicator-up',\n    /**\n     * Class name of the reorder indicator down element\n     */\n    reorderIndicatorDown = 'p-treetable-reorder-indicator-down',\n    /**\n     * Class name of the scrollable header element\n     */\n    scrollableHeader = 'p-treetable-scrollable-header',\n    /**\n     * Class name of the scrollable header box element\n     */\n    scrollableHeaderBox = 'p-treetable-scrollable-header-box',\n    /**\n     * Class name of the scrollable header table element\n     */\n    scrollableHeaderTable = 'p-treetable-scrollable-header-table',\n    /**\n     * Class name of the scrollable body element\n     */\n    scrollableBody = 'p-treetable-scrollable-body',\n    /**\n     * Class name of the scrollable footer element\n     */\n    scrollableFooter = 'p-treetable-scrollable-footer',\n    /**\n     * Class name of the scrollable footer box element\n     */\n    scrollableFooterBox = 'p-treetable-scrollable-footer-box',\n    /**\n     * Class name of the scrollable footer table element\n     */\n    scrollableFooterTable = 'p-treetable-scrollable-footer-table',\n    /**\n     * Class name of the sortable column icon element\n     */\n    sortableColumnIcon = 'p-sortable-column-icon'\n}\n\nexport interface TreeTableStyle extends BaseStyle {}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Injectable,\n    InjectionToken,\n    Input,\n    NgModule,\n    NgZone,\n    numberAttribute,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n    addClass,\n    addStyle,\n    calculateScrollbarHeight,\n    calculateScrollbarWidth,\n    clearSelection,\n    equals,\n    find,\n    findSingle,\n    focus,\n    getAttribute,\n    getHiddenElementOuterHeight,\n    getHiddenElementOuterWidth,\n    getIndex,\n    getOffset,\n    invokeElementMethod,\n    isClickable,\n    isEmpty,\n    isNotEmpty,\n    removeClass,\n    reorderArray,\n    resolveFieldData\n} from '@primeuix/utils';\nimport { BlockableUI, FilterMetadata, FilterService, PrimeTemplate, ScrollerOptions, SharedModule, SortMeta, TreeNode, TreeTableNode } from 'primeng/api';\nimport { BadgeModule } from 'primeng/badge';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Checkbox } from 'primeng/checkbox';\nimport { DomHandler } from 'primeng/dom';\nimport { ArrowDownIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, SortAltIcon, SortAmountDownIcon, SortAmountUpAltIcon, SpinnerIcon } from 'primeng/icons';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { Ripple } from 'primeng/ripple';\nimport { Scroller } from 'primeng/scroller';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport {\n    TreeTableBodyTemplateContext,\n    TreeTableCheckboxIconTemplateContext,\n    TreeTableColResizeEvent,\n    TreeTableColumnReorderEvent,\n    TreeTableColumnsTemplateContext,\n    TreeTableContextMenuSelectEvent,\n    TreeTableEditEvent,\n    TreeTableEmptyMessageTemplateContext,\n    TreeTableFilterEvent,\n    TreeTableFilterOptions,\n    TreeTableHeaderCheckboxIconTemplateContext,\n    TreeTableHeaderCheckboxToggleEvent,\n    TreeTableLazyLoadEvent,\n    TreeTableNodeCollapseEvent,\n    TreeTableNodeExpandEvent,\n    TreeTableNodeUnSelectEvent,\n    TreeTablePaginatorState,\n    TreeTablePassThrough,\n    TreeTableSortEvent,\n    TreeTableSortIconTemplateContext,\n    TreeTableTogglerIconTemplateContext\n} from 'primeng/types/treetable';\nimport { Subject, Subscription } from 'rxjs';\nimport { TreeTableStyle } from './style/treetablestyle';\n\nconst TREETABLE_INSTANCE = new InjectionToken<TreeTable>('TREETABLE_INSTANCE');\n\n@Injectable()\nexport class TreeTableService {\n    private sortSource = new Subject<SortMeta | SortMeta[] | null>();\n    private selectionSource = new Subject();\n    private contextMenuSource = new Subject<any>();\n    private uiUpdateSource = new Subject<any>();\n    private totalRecordsSource = new Subject<any>();\n\n    sortSource$ = this.sortSource.asObservable();\n    selectionSource$ = this.selectionSource.asObservable();\n    contextMenuSource$ = this.contextMenuSource.asObservable();\n    uiUpdateSource$ = this.uiUpdateSource.asObservable();\n    totalRecordsSource$ = this.totalRecordsSource.asObservable();\n\n    onSort(sortMeta: SortMeta | SortMeta[] | null) {\n        this.sortSource.next(sortMeta);\n    }\n\n    onSelectionChange() {\n        this.selectionSource.next(null);\n    }\n\n    onContextMenu(node: any) {\n        this.contextMenuSource.next(node);\n    }\n\n    onUIUpdate(value: any) {\n        this.uiUpdateSource.next(value);\n    }\n\n    onTotalRecordsChange(value: number) {\n        this.totalRecordsSource.next(value);\n    }\n}\n\n/**\n * TreeTable is used to display hierarchical data in tabular format.\n * @group Components\n */\n@Component({\n    selector: 'p-treeTable, p-treetable, p-tree-table',\n    standalone: false,\n    template: `\n        <div [pBind]=\"ptm('mask')\" [class]=\"cx('mask')\" *ngIf=\"loading && showLoader\" animate.enter=\"p-overlay-mask-enter-active\" animate.leave=\"p-overlay-mask-leave-active\">\n            <i *ngIf=\"loadingIcon\" [class]=\"cn(cx('loadingIcon'), 'pi-spin' + loadingIcon)\"></i>\n            <ng-container *ngIf=\"!loadingIcon\">\n                <svg data-p-icon=\"spinner\" *ngIf=\"!loadingIconTemplate && !_loadingIconTemplate\" [spin]=\"true\" [class]=\"cx('loadingIcon')\" />\n                <span *ngIf=\"loadingIconTemplate || _loadingIconTemplate\" [class]=\"cx('loadingIcon')\">\n                    <ng-template *ngTemplateOutlet=\"loadingIconTemplate || _loadingIconTemplate\"></ng-template>\n                </span>\n            </ng-container>\n        </div>\n        <div [pBind]=\"ptm('header')\" *ngIf=\"captionTemplate || _captionTemplate\" [class]=\"cx('header')\">\n            <ng-container *ngTemplateOutlet=\"captionTemplate || _captionTemplate\"></ng-container>\n        </div>\n        <p-paginator\n            [pt]=\"ptm('pcPaginator')\"\n            [rows]=\"rows\"\n            [first]=\"first\"\n            [totalRecords]=\"totalRecords\"\n            [pageLinkSize]=\"pageLinks\"\n            [styleClass]=\"cx('pcPaginator')\"\n            [alwaysShow]=\"alwaysShowPaginator\"\n            (onPageChange)=\"onPageChange($event)\"\n            [rowsPerPageOptions]=\"rowsPerPageOptions\"\n            *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')\"\n            [templateLeft]=\"paginatorLeftTemplate ?? _paginatorLeftTemplate\"\n            [templateRight]=\"paginatorRightTemplate ?? _paginatorRightTemplate\"\n            [appendTo]=\"paginatorDropdownAppendTo\"\n            [currentPageReportTemplate]=\"currentPageReportTemplate\"\n            [showFirstLastIcon]=\"showFirstLastIcon\"\n            [dropdownItemTemplate]=\"paginatorDropdownItemTemplate ?? _paginatorDropdownItemTemplate\"\n            [showCurrentPageReport]=\"showCurrentPageReport\"\n            [showJumpToPageDropdown]=\"showJumpToPageDropdown\"\n            [showPageLinks]=\"showPageLinks\"\n            [locale]=\"paginatorLocale\"\n            [unstyled]=\"unstyled()\"\n        >\n            <ng-template pTemplate=\"firstpagelinkicon\" *ngIf=\"paginatorFirstPageLinkIconTemplate || _paginatorFirstPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate || _paginatorFirstPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"previouspagelinkicon\" *ngIf=\"paginatorPreviousPageLinkIconTemplate || _paginatorPreviousPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate || _paginatorPreviousPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"lastpagelinkicon\" *ngIf=\"paginatorLastPageLinkIconTemplate || _paginatorLastPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate || _paginatorLastPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"nextpagelinkicon\" *ngIf=\"paginatorNextPageLinkIconTemplate || _paginatorNextPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate || _paginatorNextPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n        </p-paginator>\n\n        <div [pBind]=\"ptm('wrapper')\" [class]=\"cx('wrapper')\" *ngIf=\"!scrollable\">\n            <table role=\"treegrid\" [pBind]=\"ptm('table')\" #table [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\">\n                <ng-container *ngTemplateOutlet=\"colGroupTemplate || _colGroupTemplate; context: { $implicit: columns }\"></ng-container>\n                <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n                    <ng-container *ngTemplateOutlet=\"headerTemplate || _headerTemplate; context: { $implicit: columns }\"></ng-container>\n                </thead>\n                <tbody [class]=\"cx('tbody')\" [pBind]=\"ptm('tbody')\" role=\"rowgroup\" [unstyled]=\"unstyled()\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"bodyTemplate ?? _bodyTemplate\"></tbody>\n                <tfoot [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\" role=\"rowgroup\">\n                    <ng-container *ngTemplateOutlet=\"footerTemplate || _footerTemplate; context: { $implicit: columns }\"></ng-container>\n                </tfoot>\n            </table>\n        </div>\n\n        <div [pBind]=\"ptm('scrollableWrapper')\" [class]=\"cx('scrollableWrapper')\" *ngIf=\"scrollable\">\n            <div\n                [ngClass]=\"[cx('scrollableView'), cx('frozenView')]\"\n                *ngIf=\"frozenColumns || frozenBodyTemplate || _frozenBodyTemplate\"\n                #scrollableFrozenView\n                [ttScrollableView]=\"frozenColumns\"\n                [unstyled]=\"unstyled()\"\n                [frozen]=\"true\"\n                [ngStyle]=\"{ width: frozenWidth }\"\n                [scrollHeight]=\"scrollHeight\"\n                [pBind]=\"ptm('scrollableView')\"\n            ></div>\n            <div\n                [class]=\"cx('scrollableView')\"\n                [pBind]=\"ptm('scrollableView')\"\n                #scrollableView\n                [ttScrollableView]=\"columns\"\n                [unstyled]=\"unstyled()\"\n                [frozen]=\"false\"\n                [scrollHeight]=\"scrollHeight\"\n                [ngStyle]=\"{ left: frozenWidth, width: 'calc(100% - ' + frozenWidth + ')' }\"\n            ></div>\n        </div>\n\n        <p-paginator\n            [pt]=\"ptm('pcPaginator')\"\n            [rows]=\"rows\"\n            [first]=\"first\"\n            [totalRecords]=\"totalRecords\"\n            [pageLinkSize]=\"pageLinks\"\n            [styleClass]=\"cx('pcPaginator')\"\n            [alwaysShow]=\"alwaysShowPaginator\"\n            (onPageChange)=\"onPageChange($event)\"\n            [rowsPerPageOptions]=\"rowsPerPageOptions\"\n            *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')\"\n            [templateLeft]=\"paginatorLeftTemplate ?? _paginatorLeftTemplate\"\n            [templateRight]=\"paginatorRightTemplate ?? _paginatorRightTemplate\"\n            [appendTo]=\"paginatorDropdownAppendTo\"\n            [currentPageReportTemplate]=\"currentPageReportTemplate\"\n            [showFirstLastIcon]=\"showFirstLastIcon\"\n            [dropdownItemTemplate]=\"paginatorDropdownItemTemplate ?? _paginatorDropdownItemTemplate\"\n            [showCurrentPageReport]=\"showCurrentPageReport\"\n            [showJumpToPageDropdown]=\"showJumpToPageDropdown\"\n            [showPageLinks]=\"showPageLinks\"\n            [locale]=\"paginatorLocale\"\n            [unstyled]=\"unstyled()\"\n        >\n            <ng-template pTemplate=\"firstpagelinkicon\" *ngIf=\"paginatorFirstPageLinkIconTemplate || _paginatorFirstPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate || _paginatorFirstPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"previouspagelinkicon\" *ngIf=\"paginatorPreviousPageLinkIconTemplate || _paginatorPreviousPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate || _paginatorPreviousPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"lastpagelinkicon\" *ngIf=\"paginatorLastPageLinkIconTemplate || _paginatorLastPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate || _paginatorLastPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n\n            <ng-template pTemplate=\"nextpagelinkicon\" *ngIf=\"paginatorNextPageLinkIconTemplate || _paginatorNextPageLinkIconTemplate\">\n                <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate || _paginatorNextPageLinkIconTemplate\"></ng-container>\n            </ng-template>\n        </p-paginator>\n        <div [pBind]=\"ptm('footer')\" *ngIf=\"summaryTemplate || _summaryTemplate\" [class]=\"cx('footer')\">\n            <ng-container *ngTemplateOutlet=\"summaryTemplate || _summaryTemplate\"></ng-container>\n        </div>\n\n        <div [pBind]=\"ptm('columnResizerHelper')\" #resizeHelper [class]=\"cx('columnResizerHelper')\" [style.display]=\"'none'\" *ngIf=\"resizableColumns\"></div>\n        <span [pBind]=\"ptm('reorderIndicatorUp')\" #reorderIndicatorUp [class]=\"cx('reorderIndicatorUp')\" [style.display]=\"'none'\" *ngIf=\"reorderableColumns\">\n            <svg data-p-icon=\"arrow-down\" *ngIf=\"!reorderIndicatorUpIconTemplate && !_reorderIndicatorUpIconTemplate\" />\n            <ng-template *ngTemplateOutlet=\"reorderIndicatorUpIconTemplate || _reorderIndicatorUpIconTemplate\"></ng-template>\n        </span>\n        <span [pBind]=\"ptm('reorderIndicatorDown')\" #reorderIndicatorDown [class]=\"cx('reorderIndicatorDown')\" [style.display]=\"'none'\" *ngIf=\"reorderableColumns\">\n            <svg data-p-icon=\"arrow-up\" *ngIf=\"!reorderIndicatorDownIconTemplate && !_reorderIndicatorDownIconTemplate\" />\n            <ng-template *ngTemplateOutlet=\"reorderIndicatorDownIconTemplate || _reorderIndicatorDownIconTemplate\"></ng-template>\n        </span>\n    `,\n    providers: [TreeTableService, TreeTableStyle, { provide: TREETABLE_INSTANCE, useExisting: TreeTable }, { provide: PARENT_INSTANCE, useExisting: TreeTable }],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class]': \"cn(cx('root'), styleClass)\",\n        '[attr.data-p]': 'dataP',\n        '[attr.data-scrollselectors]': \"'.p-treetable-scrollable-body'\"\n    },\n    hostDirectives: [Bind]\n})\nexport class TreeTable extends BaseComponent<TreeTablePassThrough> implements BlockableUI {\n    componentName = 'TreeTable';\n\n    _componentStyle = inject(TreeTableStyle);\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n    /**\n     * An array of objects to represent dynamic columns.\n     * @group Props\n     */\n    @Input() columns: any[] | undefined;\n    /**\n     * Style class of the component.\n     * @deprecated since v20.0.0, use `class` instead.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Inline style of the table.\n     * @group Props\n     */\n    @Input() tableStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Style class of the table.\n     * @group Props\n     */\n    @Input() tableStyleClass: string | undefined;\n    /**\n     * Whether the cell widths scale according to their content or not.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoLayout: boolean | undefined;\n    /**\n     * Defines if data is loaded and interacted with in lazy manner.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) lazy: boolean = false;\n    /**\n     * Whether to call lazy loading on initialization.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) lazyLoadOnInit: boolean = true;\n    /**\n     * When specified as true, enables the pagination.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) paginator: boolean | undefined;\n    /**\n     * Number of rows to display per page.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) rows: number | undefined;\n    /**\n     * Index of the first row to be displayed.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) first: number = 0;\n    /**\n     * Number of page links to display in paginator.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) pageLinks: number = 5;\n    /**\n     * Array of integer/object values to display inside rows per page dropdown of paginator\n     * @group Props\n     */\n    @Input() rowsPerPageOptions: any[] | undefined;\n    /**\n     * Whether to show it even there is only one page.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) alwaysShowPaginator: boolean = true;\n    /**\n     * Position of the paginator.\n     * @group Props\n     */\n    @Input() paginatorPosition: 'top' | 'bottom' | 'both' = 'bottom';\n    /**\n     * Custom style class for paginator\n     * @group Props\n     */\n    @Input() paginatorStyleClass: string | undefined;\n    /**\n     * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n     * @group Props\n     */\n    @Input() paginatorDropdownAppendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;\n    /**\n     * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n     * @group Props\n     */\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n    /**\n     * Whether to display current page report.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showCurrentPageReport: boolean | undefined;\n    /**\n     * Whether to display a dropdown to navigate to any page.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showJumpToPageDropdown: boolean | undefined;\n    /**\n     * When enabled, icons are displayed on paginator to go first and last page.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showFirstLastIcon: boolean = true;\n    /**\n     * Whether to show page links.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showPageLinks: boolean = true;\n    /**\n     * Sort order to use when an unsorted column gets sorted by user interaction.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) defaultSortOrder: number = 1;\n    /**\n     * Defines whether sorting works on single column or on multiple columns.\n     * @group Props\n     */\n    @Input() sortMode: 'single' | 'multiple' = 'single';\n    /**\n     * When true, resets paginator to first page after sorting.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) resetPageOnSort: boolean = true;\n    /**\n     * Whether to use the default sorting or a custom one using sortFunction.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) customSort: boolean | undefined;\n    /**\n     * Specifies the selection mode, valid values are \"single\" and \"multiple\".\n     * @group Props\n     */\n    @Input() selectionMode: string | undefined;\n    /**\n     * Selected row with a context menu.\n     * @group Props\n     */\n    @Input() contextMenuSelection: any;\n    /**\n     * Mode of the contet menu selection.\n     * @group Props\n     */\n    @Input() contextMenuSelectionMode: string = 'separate';\n    /**\n     * A property to uniquely identify a record in data.\n     * @group Props\n     */\n    @Input() dataKey: string | undefined;\n    /**\n     * Defines whether metaKey is should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) metaKeySelection: boolean | undefined = false;\n    /**\n     * Algorithm to define if a row is selected, valid values are \"equals\" that compares by reference and \"deepEquals\" that compares all fields.\n     * @group Props\n     */\n    @Input() compareSelectionBy: string = 'deepEquals';\n    /**\n     * Adds hover effect to rows without the need for selectionMode.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) rowHover: boolean | undefined;\n    /**\n     * Displays a loader to indicate data load is in progress.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) loading: boolean | undefined;\n    /**\n     * The icon to show while indicating data load is in progress.\n     * @group Props\n     */\n    @Input() loadingIcon: string | undefined;\n    /**\n     * Whether to show the loading mask when loading property is true.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showLoader: boolean = true;\n    /**\n     * When specified, enables horizontal and/or vertical scrolling.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) scrollable: boolean | undefined;\n    /**\n     * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n     * @group Props\n     */\n    @Input() scrollHeight: string | undefined;\n    /**\n     * Whether the data should be loaded on demand during scroll.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) virtualScroll: boolean | undefined;\n    /**\n     * Height of a row to use in calculations of virtual scrolling.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) virtualScrollItemSize: number | undefined;\n    /**\n     * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n     * @group Props\n     */\n    @Input() virtualScrollOptions: ScrollerOptions | undefined;\n    /**\n     * The delay (in milliseconds) before triggering the virtual scroll. This determines the time gap between the user's scroll action and the actual rendering of the next set of items in the virtual scroll.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) virtualScrollDelay: number = 150;\n    /**\n     * Width of the frozen columns container.\n     * @group Props\n     */\n    @Input() frozenWidth: string | undefined;\n    /**\n     * An array of objects to represent dynamic columns that are frozen.\n     * @group Props\n     */\n    @Input() frozenColumns: { [klass: string]: any } | null | undefined;\n    /**\n     * When enabled, columns can be resized using drag and drop.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) resizableColumns: boolean | undefined;\n    /**\n     * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n     * @group Props\n     */\n    @Input() columnResizeMode: string = 'fit';\n    /**\n     * When enabled, columns can be reordered using drag and drop.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) reorderableColumns: boolean | undefined;\n    /**\n     * Local ng-template varilable of a ContextMenu.\n     * @group Props\n     */\n    @Input() contextMenu: any;\n    /**\n     * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n     * @group Props\n     */\n    @Input() rowTrackBy: Function = (index: number, item: any) => item;\n    /**\n     * An array of FilterMetadata objects to provide external filters.\n     * @group Props\n     */\n    @Input() filters: { [s: string]: FilterMetadata | undefined } = {};\n    /**\n     * An array of fields as string to use in global filtering.\n     * @group Props\n     */\n    @Input() globalFilterFields: string[] | undefined;\n    /**\n     * Delay in milliseconds before filtering the data.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) filterDelay: number = 300;\n    /**\n     * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n     * @group Props\n     */\n    @Input() filterMode: string = 'lenient';\n    /**\n     * Locale to use in filtering. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    @Input() filterLocale: string | undefined;\n    /**\n     * Locale to be used in paginator formatting.\n     * @group Props\n     */\n    @Input() paginatorLocale: string | undefined;\n    /**\n     * Number of total records, defaults to length of value when not defined.\n     * @group Props\n     */\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        this.tableService.onTotalRecordsChange(this._totalRecords);\n    }\n    /**\n     * Name of the field to sort data by default.\n     * @group Props\n     */\n    @Input() get sortField(): string | undefined | null {\n        return this._sortField;\n    }\n    set sortField(val: string | undefined | null) {\n        this._sortField = val;\n    }\n    /**\n     * Order to sort when default sorting is enabled.\n     * @defaultValue 1\n     * @group Props\n     */\n    @Input() get sortOrder(): number {\n        return this._sortOrder;\n    }\n    set sortOrder(val: number) {\n        this._sortOrder = val;\n    }\n    /**\n     * An array of SortMeta objects to sort the data by default in multiple sort mode.\n     * @defaultValue null\n     * @group Props\n     */\n    @Input() get multiSortMeta(): SortMeta[] | undefined | null {\n        return this._multiSortMeta;\n    }\n    set multiSortMeta(val: SortMeta[] | undefined | null) {\n        this._multiSortMeta = val;\n    }\n    /**\n     * Selected row in single mode or an array of values in multiple mode.\n     * @defaultValue null\n     * @group Props\n     */\n    @Input() get selection(): any {\n        return this._selection;\n    }\n    set selection(val: any) {\n        this._selection = val;\n    }\n    /**\n     * An array of objects to display.\n     * @defaultValue null\n     * @group Props\n     */\n    @Input() get value(): TreeNode<any>[] | undefined {\n        return this._value;\n    }\n    set value(val: TreeNode<any>[] | undefined) {\n        this._value = val;\n    }\n    /**\n     * Indicates the height of rows to be scrolled.\n     * @defaultValue 28\n     * @group Props\n     * @deprecated use virtualScrollItemSize property instead.\n     */\n    @Input() get virtualRowHeight(): number {\n        return this._virtualRowHeight;\n    }\n    set virtualRowHeight(val: number) {\n        this._virtualRowHeight = val;\n        console.log('The virtualRowHeight property is deprecated, use virtualScrollItemSize property instead.');\n    }\n    /**\n     * A map of keys to control the selection state.\n     * @group Props\n     */\n    @Input() get selectionKeys(): any {\n        return this._selectionKeys;\n    }\n    set selectionKeys(value: any) {\n        this._selectionKeys = value;\n        this.selectionKeysChange.emit(this._selectionKeys);\n    }\n    /**\n     * Whether to show grid lines between cells.\n     * @defaultValue false\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showGridlines: boolean = false;\n    /**\n     * Callback to invoke on selected node change.\n     * @param {TreeTableNode} object - Node instance.\n     * @group Emits\n     */\n    @Output() selectionChange: EventEmitter<TreeTableNode<any> | TreeTableNode<any>[] | null> = new EventEmitter<TreeTableNode<any> | TreeTableNode<any>[] | null>();\n    /**\n     * Callback to invoke on context menu selection change.\n     * @param {TreeTableNode} object - Node instance.\n     * @group Emits\n     */\n    @Output() contextMenuSelectionChange: EventEmitter<TreeTableNode> = new EventEmitter<TreeTableNode>();\n    /**\n     * Callback to invoke when data is filtered.\n     * @param {TreeTableFilterEvent} event - Custom filter event.\n     * @group Emits\n     */\n    @Output() onFilter: EventEmitter<TreeTableFilterEvent> = new EventEmitter<TreeTableFilterEvent>();\n    /**\n     * Callback to invoke when a node is expanded.\n     * @param {TreeTableNodeExpandEvent} event - Node expand event.\n     * @group Emits\n     */\n    @Output() onNodeExpand: EventEmitter<TreeTableNodeExpandEvent> = new EventEmitter<TreeTableNodeExpandEvent>();\n    /**\n     * Callback to invoke when a node is collapsed.\n     * @param {TreeTableNodeCollapseEvent} event - Node collapse event.\n     * @group Emits\n     */\n    @Output() onNodeCollapse: EventEmitter<TreeTableNodeCollapseEvent> = new EventEmitter<TreeTableNodeCollapseEvent>();\n    /**\n     * Callback to invoke when pagination occurs.\n     * @param {TreeTablePaginatorState} object - Paginator state.\n     * @group Emits\n     */\n    @Output() onPage: EventEmitter<TreeTablePaginatorState> = new EventEmitter<TreeTablePaginatorState>();\n    /**\n     * Callback to invoke when a column gets sorted.\n     * @param {Object} Object - Sort data.\n     * @group Emits\n     */\n    @Output() onSort: EventEmitter<any> = new EventEmitter<any>();\n    /**\n     * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n     * @param {TreeTableLazyLoadEvent} event - Custom lazy load event.\n     * @group Emits\n     */\n    @Output() onLazyLoad: EventEmitter<TreeTableLazyLoadEvent> = new EventEmitter<TreeTableLazyLoadEvent>();\n    /**\n     * An event emitter to invoke on custom sorting, refer to sorting section for details.\n     * @param {TreeTableSortEvent} event - Custom sort event.\n     * @group Emits\n     */\n    @Output() sortFunction: EventEmitter<TreeTableSortEvent> = new EventEmitter<TreeTableSortEvent>();\n    /**\n     * Callback to invoke when a column is resized.\n     * @param {TreeTableColResizeEvent} event - Custom column resize event.\n     * @group Emits\n     */\n    @Output() onColResize: EventEmitter<TreeTableColResizeEvent> = new EventEmitter<TreeTableColResizeEvent>();\n    /**\n     * Callback to invoke when a column is reordered.\n     * @param {TreeTableColumnReorderEvent} event - Custom column reorder.\n     * @group Emits\n     */\n    @Output() onColReorder: EventEmitter<TreeTableColumnReorderEvent> = new EventEmitter<TreeTableColumnReorderEvent>();\n    /**\n     * Callback to invoke when a node is selected.\n     * @param {TreeTableNode} object - Node instance.\n     * @group Emits\n     */\n    @Output() onNodeSelect: EventEmitter<TreeTableNode> = new EventEmitter<TreeTableNode>();\n    /**\n     * Callback to invoke when a node is unselected.\n     * @param {TreeTableNodeUnSelectEvent} event - Custom node unselect event.\n     * @group Emits\n     */\n    @Output() onNodeUnselect: EventEmitter<TreeTableNodeUnSelectEvent> = new EventEmitter<TreeTableNodeUnSelectEvent>();\n    /**\n     * Callback to invoke when a node is selected with right click.\n     * @param {TreeTableContextMenuSelectEvent} event - Custom context menu select event.\n     * @group Emits\n     */\n    @Output() onContextMenuSelect: EventEmitter<TreeTableContextMenuSelectEvent> = new EventEmitter<TreeTableContextMenuSelectEvent>();\n    /**\n     * Callback to invoke when state of header checkbox changes.\n     * @param {TreeTableHeaderCheckboxToggleEvent} event - Custom checkbox toggle event.\n     * @group Emits\n     */\n    @Output() onHeaderCheckboxToggle: EventEmitter<TreeTableHeaderCheckboxToggleEvent> = new EventEmitter<TreeTableHeaderCheckboxToggleEvent>();\n    /**\n     * Callback to invoke when a cell switches to edit mode.\n     * @param {TreeTableEditEvent} event - Custom edit event.\n     * @group Emits\n     */\n    @Output() onEditInit: EventEmitter<TreeTableEditEvent> = new EventEmitter<TreeTableEditEvent>();\n    /**\n     * Callback to invoke when cell edit is completed.\n     * @param {TreeTableEditEvent} event - Custom edit event.\n     * @group Emits\n     */\n    @Output() onEditComplete: EventEmitter<TreeTableEditEvent> = new EventEmitter<TreeTableEditEvent>();\n    /**\n     * Callback to invoke when cell edit is cancelled with escape key.\n     * @param {TreeTableEditEvent} event - Custom edit event.\n     * @group Emits\n     */\n    @Output() onEditCancel: EventEmitter<TreeTableEditEvent> = new EventEmitter<TreeTableEditEvent>();\n    /**\n     * Callback to invoke when selectionKeys are changed.\n     * @param {Object} object - updated value of the selectionKeys.\n     * @group Emits\n     */\n    @Output() selectionKeysChange: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('resizeHelper') resizeHelperViewChild: Nullable<ElementRef>;\n\n    @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: Nullable<ElementRef>;\n\n    @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: Nullable<ElementRef>;\n\n    @ViewChild('table') tableViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollableView') scrollableViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollableFrozenView') scrollableFrozenViewChild: Nullable<ElementRef>;\n\n    _value: TreeNode<any>[] | undefined = [];\n\n    _virtualRowHeight: number = 28;\n\n    _selectionKeys: any;\n\n    serializedValue: any[] | undefined | null;\n\n    _totalRecords: number = 0;\n\n    _multiSortMeta: SortMeta[] | undefined | null;\n\n    _sortField: string | undefined | null;\n\n    _sortOrder: number = 1;\n\n    filteredNodes: Nullable<any[]>;\n\n    filterTimeout: any;\n\n    @ContentChild('colgroup', { descendants: false }) _colGroupTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    colGroupTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('caption', { descendants: false }) _captionTemplate: Nullable<TemplateRef<void>>;\n    captionTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('header', { descendants: false }) _headerTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    headerTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('body', { descendants: false }) _bodyTemplate: Nullable<TemplateRef<TreeTableBodyTemplateContext>>;\n    bodyTemplate: Nullable<TemplateRef<TreeTableBodyTemplateContext>>;\n\n    @ContentChild('footer', { descendants: false }) _footerTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    footerTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('summary', { descendants: false }) _summaryTemplate: Nullable<TemplateRef<void>>;\n    summaryTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('emptymessage', { descendants: false }) _emptyMessageTemplate: Nullable<TemplateRef<TreeTableEmptyMessageTemplateContext>>;\n    emptyMessageTemplate: Nullable<TemplateRef<TreeTableEmptyMessageTemplateContext>>;\n\n    @ContentChild('paginatorleft', { descendants: false }) _paginatorLeftTemplate: Nullable<TemplateRef<void>>;\n    paginatorLeftTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('paginatorright', { descendants: false }) _paginatorRightTemplate: Nullable<TemplateRef<void>>;\n    paginatorRightTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('paginatordropdownitem', { descendants: false }) _paginatorDropdownItemTemplate: Nullable<TemplateRef<void>>;\n    paginatorDropdownItemTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('frozenheader', { descendants: false }) _frozenHeaderTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    frozenHeaderTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('frozenbody', { descendants: false }) _frozenBodyTemplate: Nullable<TemplateRef<void>>;\n    frozenBodyTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('frozenfooter', { descendants: false }) _frozenFooterTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    frozenFooterTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('frozencolgroup', { descendants: false }) _frozenColGroupTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n    frozenColGroupTemplate: Nullable<TemplateRef<TreeTableColumnsTemplateContext>>;\n\n    @ContentChild('loadingicon', { descendants: false }) _loadingIconTemplate: Nullable<TemplateRef<void>>;\n    loadingIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('reorderindicatorupicon', { descendants: false }) _reorderIndicatorUpIconTemplate: Nullable<TemplateRef<void>>;\n    reorderIndicatorUpIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('reorderindicatordownicon', { descendants: false }) _reorderIndicatorDownIconTemplate: Nullable<TemplateRef<void>>;\n    reorderIndicatorDownIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('sorticon', { descendants: false }) _sortIconTemplate: Nullable<TemplateRef<TreeTableSortIconTemplateContext>>;\n    sortIconTemplate: Nullable<TemplateRef<TreeTableSortIconTemplateContext>>;\n\n    @ContentChild('checkboxicon', { descendants: false }) _checkboxIconTemplate: Nullable<TemplateRef<TreeTableCheckboxIconTemplateContext>>;\n    checkboxIconTemplate: Nullable<TemplateRef<TreeTableCheckboxIconTemplateContext>>;\n\n    @ContentChild('headercheckboxicon', { descendants: false }) _headerCheckboxIconTemplate: Nullable<TemplateRef<TreeTableHeaderCheckboxIconTemplateContext>>;\n    headerCheckboxIconTemplate: Nullable<TemplateRef<TreeTableHeaderCheckboxIconTemplateContext>>;\n\n    @ContentChild('togglericon', { descendants: false }) _togglerIconTemplate: Nullable<TemplateRef<TreeTableTogglerIconTemplateContext>>;\n    togglerIconTemplate: Nullable<TemplateRef<TreeTableTogglerIconTemplateContext>>;\n\n    @ContentChild('paginatorfirstpagelinkicon', { descendants: false }) _paginatorFirstPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n    paginatorFirstPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('paginatorlastpagelinkicon', { descendants: false }) _paginatorLastPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n    paginatorLastPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('paginatorpreviouspagelinkicon', { descendants: false }) _paginatorPreviousPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n    paginatorPreviousPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('paginatornextpagelinkicon', { descendants: false }) _paginatorNextPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n    paginatorNextPageLinkIconTemplate: Nullable<TemplateRef<void>>;\n\n    @ContentChild('loader', { descendants: false }) _loaderTemplate: Nullable<TemplateRef<void>>;\n    loaderTemplate: Nullable<TemplateRef<void>>;\n\n    lastResizerHelperX: Nullable<number>;\n\n    reorderIconWidth: Nullable<number>;\n\n    reorderIconHeight: Nullable<number>;\n\n    draggedColumn: Nullable<any[]>;\n\n    dropPosition: Nullable<number>;\n\n    preventSelectionSetterPropagation: Nullable<boolean>;\n\n    _selection: any;\n\n    selectedKeys: any = {};\n\n    rowTouched: Nullable<boolean>;\n\n    editingCell: Nullable<Element>;\n\n    editingCellData: any | undefined | null;\n\n    editingCellField: any | undefined | null;\n\n    editingCellClick: Nullable<boolean>;\n\n    documentEditListener: VoidListener;\n\n    initialized: Nullable<boolean>;\n\n    toggleRowIndex: Nullable<number>;\n\n    onInit() {\n        if (this.lazy && this.lazyLoadOnInit && !this.virtualScroll) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        this.initialized = true;\n    }\n\n    @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<PrimeTemplate>>;\n\n    onAfterContentInit() {\n        (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n            switch (item.getType()) {\n                case 'caption':\n                    this.captionTemplate = item.template;\n                    break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n\n                case 'body':\n                    this.bodyTemplate = item.template;\n                    break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                    break;\n\n                case 'summary':\n                    this.summaryTemplate = item.template;\n                    break;\n\n                case 'colgroup':\n                    this.colGroupTemplate = item.template;\n                    break;\n\n                case 'emptymessage':\n                    this.emptyMessageTemplate = item.template;\n                    break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                    break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                    break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                    break;\n\n                case 'frozenheader':\n                    this.frozenHeaderTemplate = item.template;\n                    break;\n\n                case 'frozenbody':\n                    this.frozenBodyTemplate = item.template;\n                    break;\n\n                case 'frozenfooter':\n                    this.frozenFooterTemplate = item.template;\n                    break;\n\n                case 'frozencolgroup':\n                    this.frozenColGroupTemplate = item.template;\n                    break;\n\n                case 'loadingicon':\n                    this.loadingIconTemplate = item.template;\n                    break;\n\n                case 'reorderindicatorupicon':\n                    this.reorderIndicatorUpIconTemplate = item.template;\n                    break;\n\n                case 'reorderindicatordownicon':\n                    this.reorderIndicatorDownIconTemplate = item.template;\n                    break;\n\n                case 'sorticon':\n                    this.sortIconTemplate = item.template;\n                    break;\n\n                case 'checkboxicon':\n                    this.checkboxIconTemplate = item.template;\n                    break;\n\n                case 'headercheckboxicon':\n                    this.headerCheckboxIconTemplate = item.template;\n                    break;\n\n                case 'togglericon':\n                    this.togglerIconTemplate = item.template;\n                    break;\n\n                case 'paginatorfirstpagelinkicon':\n                    this.paginatorFirstPageLinkIconTemplate = item.template;\n                    break;\n\n                case 'paginatorlastpagelinkicon':\n                    this.paginatorLastPageLinkIconTemplate = item.template;\n                    break;\n\n                case 'paginatorpreviouspagelinkicon':\n                    this.paginatorPreviousPageLinkIconTemplate = item.template;\n                    break;\n\n                case 'paginatornextpagelinkicon':\n                    this.paginatorNextPageLinkIconTemplate = item.template;\n                    break;\n\n                case 'loader':\n                    this.loaderTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    filterService = inject(FilterService);\n\n    tableService = inject(TreeTableService);\n\n    zone = inject(NgZone);\n\n    onChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            this._value = simpleChange.value.currentValue;\n\n            if (!this.lazy) {\n                this.totalRecords = this._value ? this._value.length : 0;\n\n                if (this.sortMode == 'single' && this.sortField) this.sortSingle();\n                else if (this.sortMode == 'multiple' && this.multiSortMeta) this.sortMultiple();\n                else if (this.hasFilter())\n                    //sort already filters\n                    this._filter();\n            }\n\n            this.updateSerializedValue();\n            this.tableService.onUIUpdate(this.value);\n        }\n\n        if (simpleChange.sortField) {\n            this._sortField = simpleChange.sortField.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if (!this.lazy || this.initialized) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.sortOrder) {\n            this._sortOrder = simpleChange.sortOrder.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if (!this.lazy || this.initialized) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.multiSortMeta) {\n            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n            if (this.sortMode === 'multiple') {\n                this.sortMultiple();\n            }\n        }\n\n        if (simpleChange.selection) {\n            this._selection = simpleChange.selection.currentValue;\n\n            if (!this.preventSelectionSetterPropagation) {\n                this.updateselectedKeys();\n                this.tableService.onSelectionChange();\n            }\n            this.preventSelectionSetterPropagation = false;\n        }\n    }\n\n    updateSerializedValue() {\n        this.serializedValue = [];\n\n        if (this.paginator) this.serializePageNodes();\n        else this.serializeNodes(null, this.filteredNodes || this.value, 0, true);\n    }\n\n    serializeNodes(parent: Nullable<TreeTableNode>, nodes: Nullable<TreeNode[]>, level: Nullable<number>, visible: Nullable<boolean>) {\n        if (nodes && nodes.length) {\n            for (let node of nodes) {\n                node.parent = <TreeTableNode>parent;\n                const rowNode = {\n                    node: node,\n                    parent: parent,\n                    level: level,\n                    visible: visible && (parent ? parent.expanded : true)\n                };\n                (<TreeNode[]>this.serializedValue).push(<TreeTableNode>rowNode);\n\n                if (rowNode.visible && node.expanded) {\n                    this.serializeNodes(node, node.children, <number>level + 1, rowNode.visible);\n                }\n            }\n        }\n    }\n\n    serializePageNodes() {\n        let data = this.filteredNodes || this.value;\n        this.serializedValue = [];\n        if (data && data.length) {\n            const first = this.lazy ? 0 : this.first;\n\n            for (let i = first; i < first + <number>this.rows; i++) {\n                let node = data[i];\n                if (node) {\n                    this.serializedValue.push({\n                        node: node,\n                        parent: <any>null,\n                        level: 0,\n                        visible: true\n                    });\n\n                    this.serializeNodes(node, node.children, 1, true);\n                }\n            }\n        }\n    }\n\n    updateselectedKeys() {\n        if (this.dataKey && this._selection) {\n            this.selectedKeys = {};\n            if (Array.isArray(this._selection)) {\n                for (let node of this._selection) {\n                    this.selectedKeys[String(resolveFieldData(node.data, this.dataKey))] = 1;\n                }\n            } else {\n                this.selectedKeys[String(resolveFieldData((<any>this._selection).data, this.dataKey))] = 1;\n            }\n        }\n    }\n\n    onPageChange(event: TreeTablePaginatorState) {\n        this.first = <number>event.first;\n        this.rows = <number>event.rows;\n\n        if (this.lazy) this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        else this.serializePageNodes();\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n\n        this.tableService.onUIUpdate(this.value);\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    sort(event: TreeTableSortEvent) {\n        let originalEvent = event.originalEvent;\n\n        if (this.sortMode === 'single') {\n            this._sortOrder = this.sortField === event.field ? this.sortOrder * -1 : this.defaultSortOrder;\n            this._sortField = event.field;\n            this.sortSingle();\n\n            if (this.resetPageOnSort && this.scrollable) {\n                this.resetScrollTop();\n            }\n        }\n        if (this.sortMode === 'multiple') {\n            let metaKey = (<KeyboardEvent>originalEvent).metaKey || (<KeyboardEvent>originalEvent).ctrlKey;\n            let sortMeta = this.getSortMeta(<string>event.field);\n\n            if (sortMeta) {\n                if (!metaKey) {\n                    this._multiSortMeta = [{ field: <string>event.field, order: sortMeta.order * -1 }];\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                } else {\n                    sortMeta.order = sortMeta.order * -1;\n                }\n            } else {\n                if (!metaKey || !this.multiSortMeta) {\n                    this._multiSortMeta = [];\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                }\n                (<SortMeta[]>this.multiSortMeta).push({ field: <string>event.field, order: this.defaultSortOrder });\n            }\n\n            this.sortMultiple();\n        }\n    }\n\n    sortSingle() {\n        if (this.sortField && this.sortOrder) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            } else if (this.value) {\n                this.sortNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            let sortMeta: SortMeta = {\n                field: this.sortField,\n                order: this.sortOrder\n            };\n\n            this.onSort.emit(sortMeta);\n            this.tableService.onSort(sortMeta);\n            this.updateSerializedValue();\n        }\n    }\n\n    sortNodes(nodes: TreeNode[]) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: nodes,\n                mode: this.sortMode,\n                field: <string>this.sortField,\n                order: this.sortOrder\n            });\n        } else {\n            nodes.sort((node1, node2) => {\n                let value1 = resolveFieldData(node1.data, this.sortField);\n                let value2 = resolveFieldData(node2.data, this.sortField);\n                let result: number = 0;\n\n                if (value1 == null && value2 != null) result = -1;\n                else if (value1 != null && value2 == null) result = 1;\n                else if (value1 == null && value2 == null) result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, { numeric: true });\n                else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n                return this.sortOrder * result;\n            });\n        }\n\n        for (let node of nodes) {\n            this.sortNodes(node.children as TreeNode[]);\n        }\n    }\n\n    sortMultiple() {\n        if (this.multiSortMeta) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            } else if (this.value) {\n                this.sortMultipleNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            this.onSort.emit({\n                multisortmeta: this.multiSortMeta\n            });\n            this.updateSerializedValue();\n            this.tableService.onSort(this.multiSortMeta);\n        }\n    }\n\n    sortMultipleNodes(nodes: TreeNode[]) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: this.value,\n                mode: this.sortMode,\n                multiSortMeta: this.multiSortMeta\n            });\n        } else {\n            nodes.sort((node1, node2) => {\n                return this.multisortField(node1, node2, <SortMeta[]>this.multiSortMeta, 0);\n            });\n        }\n\n        for (let node of nodes) {\n            this.sortMultipleNodes(node.children as TreeNode[]);\n        }\n    }\n\n    multisortField(node1: TreeTableNode, node2: TreeTableNode, multiSortMeta: SortMeta[], index: number): number {\n        if (isEmpty(this.multiSortMeta) || isEmpty(multiSortMeta[index])) {\n            return 0;\n        }\n\n        let value1 = resolveFieldData(node1.data, multiSortMeta[index].field);\n        let value2 = resolveFieldData(node2.data, multiSortMeta[index].field);\n        let result: number = 0;\n\n        if (value1 == null && value2 != null) result = -1;\n        else if (value1 != null && value2 == null) result = 1;\n        else if (value1 == null && value2 == null) result = 0;\n        if (typeof value1 == 'string' || value1 instanceof String) {\n            if (value1.localeCompare && value1 != value2) {\n                return multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true });\n            }\n        } else {\n            result = value1 < value2 ? -1 : 1;\n        }\n\n        if (value1 == value2) {\n            return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n        }\n\n        return multiSortMeta[index].order * result;\n    }\n\n    getSortMeta(field: string) {\n        if (this.multiSortMeta && this.multiSortMeta.length) {\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                if (this.multiSortMeta[i].field === field) {\n                    return this.multiSortMeta[i];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    isSorted(field: string) {\n        if (this.sortMode === 'single') {\n            return this.sortField && this.sortField === field;\n        } else if (this.sortMode === 'multiple') {\n            let sorted = false;\n            if (this.multiSortMeta) {\n                for (let i = 0; i < this.multiSortMeta.length; i++) {\n                    if (this.multiSortMeta[i].field == field) {\n                        sorted = true;\n                        break;\n                    }\n                }\n            }\n            return sorted;\n        }\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder,\n            filters: this.filters,\n            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n            multiSortMeta: this.multiSortMeta,\n            forceUpdate: () => this.cd.detectChanges()\n        };\n    }\n\n    onLazyItemLoad(event: TreeTableLazyLoadEvent) {\n        this.onLazyLoad.emit({\n            ...this.createLazyLoadMetadata(),\n            ...event,\n            rows: event.last - event.first\n        });\n    }\n    /**\n     * Resets scroll to top.\n     * @group Method\n     */\n    public resetScrollTop() {\n        if (this.virtualScroll) this.scrollToVirtualIndex(0);\n        else this.scrollTo({ top: 0 });\n    }\n    /**\n     * Scrolls to given index when using virtual scroll.\n     * @param {number} index - index of the element.\n     * @group Method\n     */\n    public scrollToVirtualIndex(index: number) {\n        if (this.scrollableViewChild) {\n            (<any>this.scrollableViewChild).scrollToVirtualIndex(<number>index);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            (<any>this.scrollableViewChild).scrollToVirtualIndex(index);\n        }\n    }\n    /**\n     * Scrolls to given index.\n     * @param {ScrollToOptions} options - Scroll options.\n     * @group Method\n     */\n    public scrollTo(options: ScrollToOptions) {\n        if (this.scrollableViewChild) {\n            (<any>this.scrollableViewChild).scrollTo(options);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            (<any>this.scrollableViewChild).scrollTo(options);\n        }\n    }\n\n    isEmpty() {\n        let data = this.filteredNodes || this.value;\n        return data == null || data.length == 0;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onColumnResizeBegin(event: MouseEvent) {\n        let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n        this.lastResizerHelperX = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft;\n        event.preventDefault();\n    }\n\n    onColumnResize(event: MouseEvent) {\n        let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n        this.el?.nativeElement.setAttribute('data-p-unselectable-text', 'true');\n        !this.$unstyled() && addStyle(this.el.nativeElement, { 'user-select': 'none' });\n        (<ElementRef>this.resizeHelperViewChild).nativeElement.style.height = this.el?.nativeElement.offsetHeight + 'px';\n        (<ElementRef>this.resizeHelperViewChild).nativeElement.style.top = 0 + 'px';\n        (<ElementRef>this.resizeHelperViewChild).nativeElement.style.left = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft + 'px';\n\n        (<ElementRef>this.resizeHelperViewChild).nativeElement.style.display = 'block';\n    }\n\n    onColumnResizeEnd(event: MouseEvent, column: any) {\n        let delta = (<ElementRef>this.resizeHelperViewChild).nativeElement.offsetLeft - <number>this.lastResizerHelperX;\n        let columnWidth = column.offsetWidth;\n        let newColumnWidth = columnWidth + delta;\n        let minWidth = column.style.minWidth || 15;\n\n        if (columnWidth + delta > parseInt(minWidth)) {\n            if (this.columnResizeMode === 'fit') {\n                let nextColumn = column.nextElementSibling;\n                while (!nextColumn.offsetParent) {\n                    nextColumn = nextColumn.nextElementSibling;\n                }\n\n                if (nextColumn) {\n                    let nextColumnWidth = nextColumn.offsetWidth - delta;\n                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n                        if (this.scrollable) {\n                            let scrollableView = this.findParentScrollableView(column);\n                            let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n                            let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n                            let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n                            let resizeColumnIndex = getIndex(column);\n\n                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                        } else {\n                            column.style.width = newColumnWidth + 'px';\n                            if (nextColumn) {\n                                nextColumn.style.width = nextColumnWidth + 'px';\n                            }\n                        }\n                    }\n                }\n            } else if (this.columnResizeMode === 'expand') {\n                if (this.scrollable) {\n                    let scrollableView = this.findParentScrollableView(column);\n                    let scrollableBody = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"]') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"]');\n                    let scrollableHeader = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheader\"]');\n                    let scrollableFooter = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefooter\"]');\n                    let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n                    let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n                    let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n                    if (scrollableFooterTable) {\n                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n                    }\n                    let resizeColumnIndex = getIndex(column);\n\n                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n                    const isContainerInViewport = this.el?.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n                    let setWidth = (container: HTMLElement, table: HTMLElement, width: number, isContainerInViewport: boolean) => {\n                        if (container && table) {\n                            container.style.width = isContainerInViewport ? width + calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';\n                            table.style.width = width + 'px';\n                        }\n                    };\n\n                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n                } else {\n                    (<ElementRef>this.tableViewChild).nativeElement.style.width = this.tableViewChild?.nativeElement.offsetWidth + delta + 'px';\n                    column.style.width = newColumnWidth + 'px';\n                    let containerWidth = this.tableViewChild?.nativeElement.style.width;\n                    (<ElementRef>this.el).nativeElement.style.width = containerWidth + 'px';\n                }\n            }\n\n            this.onColResize.emit({\n                element: column,\n                delta: delta\n            });\n        }\n\n        (this.resizeHelperViewChild as ElementRef).nativeElement.style.display = 'none';\n\n        this.el.nativeElement.removeAttribute('data-p-unselectable-text');\n        !this.$unstyled() && (this.el.nativeElement.style['user-select'] = '');\n    }\n\n    findParentScrollableView(column: any) {\n        if (column) {\n            let parent = column.parentElement;\n            while (parent && !findSingle(parent, '[data-pc-section=\"scrollableview\"]')) {\n                parent = parent.parentElement;\n            }\n\n            return parent;\n        } else {\n            return null;\n        }\n    }\n\n    resizeColGroup(table: Nullable<HTMLElement>, resizeColumnIndex: Nullable<number>, newColumnWidth: Nullable<number>, nextColumnWidth: Nullable<number>) {\n        if (table) {\n            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n            if (colGroup) {\n                let col = colGroup.children[<number>resizeColumnIndex];\n                let nextCol = col.nextElementSibling;\n                (<HTMLElement>col).style.width = newColumnWidth + 'px';\n\n                if (nextCol && nextColumnWidth) {\n                    (<HTMLElement>nextCol).style.width = nextColumnWidth + 'px';\n                }\n            } else {\n                throw 'Scrollable tables require a colgroup to support resizable columns';\n            }\n        }\n    }\n\n    onColumnDragStart(event: DragEvent, columnElement: any) {\n        this.reorderIconWidth = getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild?.nativeElement);\n        this.reorderIconHeight = getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild?.nativeElement);\n        this.draggedColumn = columnElement;\n        (<any>event).dataTransfer.setData('text', 'b'); // For firefox\n    }\n\n    onColumnDragEnter(event: DragEvent, dropHeader: any) {\n        if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n            event.preventDefault();\n            let containerOffset = <any>getOffset(this.el?.nativeElement);\n            let dropHeaderOffset = <any>getOffset(dropHeader);\n\n            if (this.draggedColumn != dropHeader) {\n                let targetLeft = dropHeaderOffset.left - containerOffset.left;\n                let targetTop = containerOffset.top - dropHeaderOffset.top;\n                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n                (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (<number>this.reorderIconHeight - 1) + 'px';\n                (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n                if (event.pageX > columnCenter) {\n                    (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n                    (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n                    this.dropPosition = 1;\n                } else {\n                    (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n                    (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n                    this.dropPosition = -1;\n                }\n\n                (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.display = 'block';\n                (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.display = 'block';\n            } else {\n                (<any>event).dataTransfer.dropEffect = 'none';\n            }\n        }\n    }\n\n    onColumnDragLeave(event: DragEvent) {\n        if (this.reorderableColumns && this.draggedColumn) {\n            event.preventDefault();\n            (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.display = 'none';\n            (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.display = 'none';\n        }\n    }\n\n    onColumnDrop(event: DragEvent, dropColumn: any) {\n        event.preventDefault();\n        if (this.draggedColumn) {\n            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n            let allowDrop = dragIndex != dropIndex;\n            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n                allowDrop = false;\n            }\n\n            if (allowDrop && dropIndex < dragIndex && this.dropPosition === 1) {\n                dropIndex = dropIndex + 1;\n            }\n\n            if (allowDrop && dropIndex > dragIndex && this.dropPosition === -1) {\n                dropIndex = dropIndex - 1;\n            }\n\n            if (allowDrop) {\n                reorderArray(<any[]>this.columns, dragIndex, dropIndex);\n\n                this.onColReorder.emit({\n                    dragIndex: dragIndex,\n                    dropIndex: dropIndex,\n                    columns: this.columns\n                });\n            }\n\n            (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.display = 'none';\n            (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.display = 'none';\n            (this.draggedColumn as any).draggable = false;\n            this.draggedColumn = null;\n            this.dropPosition = null;\n        }\n    }\n\n    handleRowClick(event: any) {\n        let targetNode = (<HTMLElement>event.originalEvent.target).nodeName;\n        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || isClickable(event.originalEvent.target)) {\n            return;\n        }\n\n        if (this.selectionMode) {\n            this.preventSelectionSetterPropagation = true;\n            let rowNode = event.rowNode;\n            let selected = this.isSelected((<any>rowNode).node);\n            let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n            let dataKeyValue = this.dataKey ? String(resolveFieldData((<TreeTableNode>rowNode.node).data, this.dataKey)) : null;\n\n            if (metaSelection) {\n                let keyboardEvent = <KeyboardEvent>event.originalEvent;\n                let metaKey = keyboardEvent.metaKey || keyboardEvent.ctrlKey;\n\n                if (selected && metaKey) {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = null;\n                        this.selectedKeys = {};\n                        this.selectionChange.emit(null);\n                    } else {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            delete this.selectedKeys[dataKeyValue];\n                        }\n                    }\n\n                    this.onNodeUnselect.emit({\n                        originalEvent: event.originalEvent,\n                        node: <TreeTableNode>rowNode.node,\n                        type: 'row'\n                    });\n                } else {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(rowNode.node);\n                        if (dataKeyValue) {\n                            this.selectedKeys = {};\n                            this.selectedKeys[dataKeyValue] = 1;\n                        }\n                    } else if (this.isMultipleSelectionMode()) {\n                        if (metaKey) {\n                            this._selection = this.selection || [];\n                        } else {\n                            this._selection = [];\n                            this.selectedKeys = {};\n                        }\n\n                        this._selection = [...this.selection, rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            this.selectedKeys[dataKeyValue] = 1;\n                        }\n                    }\n\n                    this.onNodeSelect.emit({\n                        originalEvent: event.originalEvent,\n                        node: rowNode.node,\n                        type: 'row',\n                        index: (<any>event).rowIndex\n                    });\n                }\n            } else {\n                if (this.selectionMode === 'single') {\n                    if (selected) {\n                        this._selection = null;\n                        this.selectedKeys = {};\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({\n                            originalEvent: event.originalEvent,\n                            node: <TreeTableNode>rowNode.node,\n                            type: 'row'\n                        });\n                    } else {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({\n                            originalEvent: event.originalEvent,\n                            node: rowNode.node,\n                            type: 'row',\n                            index: event.rowIndex\n                        });\n                        if (dataKeyValue) {\n                            this.selectedKeys = {};\n                            this.selectedKeys[dataKeyValue] = 1;\n                        }\n                    }\n                } else if (this.selectionMode === 'multiple') {\n                    if (selected) {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({\n                            originalEvent: event.originalEvent,\n                            node: rowNode.node,\n                            type: 'row'\n                        });\n                        if (dataKeyValue) {\n                            delete this.selectedKeys[dataKeyValue];\n                        }\n                    } else {\n                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({\n                            originalEvent: event.originalEvent,\n                            node: rowNode.node,\n                            type: 'row',\n                            index: event.rowIndex\n                        });\n                        if (dataKeyValue) {\n                            this.selectedKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n            }\n\n            this.tableService.onSelectionChange();\n        }\n\n        this.rowTouched = false;\n    }\n\n    handleRowTouchEnd(event: Event) {\n        this.rowTouched = true;\n    }\n\n    handleRowRightClick(event: any) {\n        if (this.contextMenu) {\n            const node = event.rowNode.node;\n\n            const showContextMenu = () => {\n                this.contextMenu.show(event.originalEvent);\n                this.contextMenu.hideCallback = () => {\n                    this.contextMenuSelection = null;\n                    this.contextMenuSelectionChange.emit();\n                    this.tableService.onContextMenu(null);\n                };\n            };\n\n            if (this.contextMenuSelectionMode === 'separate') {\n                this.contextMenuSelection = node;\n                this.contextMenuSelectionChange.emit(node);\n                this.tableService.onContextMenu(node);\n                showContextMenu();\n                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n            } else if (this.contextMenuSelectionMode === 'joint') {\n                this.preventSelectionSetterPropagation = true;\n                let selected = this.isSelected(node);\n                let dataKeyValue = this.dataKey ? String(resolveFieldData(node.data, this.dataKey)) : null;\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode()) {\n                        this.selection = node;\n                        this.selectionChange.emit(node);\n                    } else if (this.isMultipleSelectionMode()) {\n                        this.selection = [node];\n                        this.selectionChange.emit(this.selection);\n                    }\n\n                    if (dataKeyValue) {\n                        this.selectedKeys[dataKeyValue] = 1;\n                    }\n                }\n\n                this.contextMenuSelection = node;\n                this.contextMenuSelectionChange.emit(node);\n                this.tableService.onContextMenu(node);\n\n                showContextMenu();\n                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n            }\n        }\n    }\n\n    toggleNodeWithCheckbox(event: any) {\n        // legacy selection support, will be removed in v18\n        this.selection = this.selection || [];\n        this.preventSelectionSetterPropagation = true;\n        let node = event.rowNode.node;\n        let selected = this.isSelected(node);\n\n        if (selected) {\n            this.propagateSelectionDown(node, false);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, false);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeUnselect.emit({ originalEvent: event, node: node });\n        } else {\n            this.propagateSelectionDown(node, true);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, true);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeSelect.emit({ originalEvent: event, node: node });\n        }\n\n        this.tableService.onSelectionChange();\n    }\n\n    toggleNodesWithCheckbox(event: Event, check: boolean) {\n        // legacy selection support, will be removed in v18\n        let data = this.filteredNodes || this.value;\n        this._selection = check && data ? data.slice() : [];\n\n        this.toggleAll(check);\n\n        if (!check) {\n            this._selection = [];\n            this.selectedKeys = {};\n        }\n\n        this.preventSelectionSetterPropagation = true;\n        this.selectionChange.emit(this._selection);\n        this.tableService.onSelectionChange();\n\n        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });\n    }\n\n    toggleAll(checked: boolean) {\n        let data = this.filteredNodes || this.value;\n\n        if (!this.selectionKeys) {\n            if (data && data.length) {\n                for (let node of data) {\n                    this.propagateSelectionDown(node, checked);\n                }\n            }\n        } else {\n            // legacy selection support, will be removed in v18\n            if (data && data.length) {\n                for (let node of data) {\n                    this.propagateDown(node, checked);\n                }\n                this.selectionKeysChange.emit(this.selectionKeys);\n            }\n        }\n    }\n\n    propagateSelectionUp(node: TreeTableNode, select: boolean) {\n        // legacy selection support, will be removed in v18\n        if (node.children && node.children.length) {\n            let selectedChildCount: number = 0;\n            let childPartialSelected: boolean = false;\n            let dataKeyValue = this.dataKey ? String(resolveFieldData(node.data, this.dataKey)) : null;\n\n            for (let child of node.children) {\n                if (this.isSelected(child)) selectedChildCount++;\n                else if (child.partialSelected) childPartialSelected = true;\n            }\n\n            if (select && selectedChildCount == node.children.length) {\n                this._selection = [...(this.selection || []), node];\n                node.partialSelected = false;\n                if (dataKeyValue) {\n                    this.selectedKeys[dataKeyValue] = 1;\n                }\n            } else {\n                if (!select) {\n                    let index = this.findIndexInSelection(node);\n                    if (index >= 0) {\n                        this._selection = this.selection.filter((val: any, i: number) => i != index);\n\n                        if (dataKeyValue) {\n                            delete this.selectedKeys[dataKeyValue];\n                        }\n                    }\n                }\n\n                if (childPartialSelected || (selectedChildCount > 0 && selectedChildCount != node.children.length)) node.partialSelected = true;\n                else node.partialSelected = false;\n            }\n        }\n\n        let parent = node.parent;\n        node.checked = select;\n        if (parent) {\n            this.propagateSelectionUp(parent, select);\n        }\n    }\n\n    propagateSelectionDown(node: TreeTableNode, select: boolean) {\n        // legacy selection support, will be removed in v18\n        let index = this.findIndexInSelection(node);\n        let dataKeyValue = this.dataKey ? String(resolveFieldData(node.data, this.dataKey)) : null;\n\n        if (select && index == -1) {\n            this._selection = [...(this.selection || []), node];\n            if (dataKeyValue) {\n                this.selectedKeys[dataKeyValue] = 1;\n            }\n        } else if (!select && index > -1) {\n            this._selection = this.selection.filter((val: any, i: number) => i != index);\n            if (dataKeyValue) {\n                delete this.selectedKeys[dataKeyValue];\n            }\n        }\n\n        node.partialSelected = false;\n        node.checked = select;\n\n        if (node.children && node.children.length) {\n            for (let child of node.children) {\n                this.propagateSelectionDown(child, select);\n            }\n        }\n    }\n\n    isSelected(node: TreeTableNode) {\n        // legacy selection support, will be removed in v18\n        if (node && this.selection) {\n            if (this.dataKey) {\n                if (node.hasOwnProperty('checked')) {\n                    return node['checked'];\n                } else {\n                    return this.selectedKeys[resolveFieldData(node.data, this.dataKey)] !== undefined;\n                }\n            } else {\n                if (Array.isArray(this.selection)) return this.findIndexInSelection(node) > -1;\n                else return this.equals(node, this.selection);\n            }\n        }\n\n        return false;\n    }\n\n    isNodeSelected(node) {\n        return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)]?.checked === true : false;\n    }\n\n    isNodePartialSelected(node) {\n        return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)]?.partialChecked === true : false;\n    }\n\n    nodeKey(node) {\n        return resolveFieldData(node, this.dataKey) || resolveFieldData(node?.data, this.dataKey);\n    }\n\n    toggleCheckbox(event) {\n        let { rowNode, check, originalEvent } = event;\n        let node = rowNode.node;\n        if (this.selectionKeys) {\n            this.propagateDown(node, check);\n            if (node.parent) {\n                this.propagateUp(node.parent, check);\n            }\n\n            this.selectionKeysChange.emit(this.selectionKeys);\n        } else {\n            this.toggleNodeWithCheckbox({ originalEvent, rowNode });\n        }\n\n        this.tableService.onSelectionChange();\n    }\n\n    propagateDown(node, check) {\n        if (check) {\n            this.selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n        } else {\n            delete this.selectionKeys[this.nodeKey(node)];\n        }\n\n        if (node.children && node.children.length) {\n            for (let child of node.children) {\n                this.propagateDown(child, check);\n            }\n        }\n    }\n\n    propagateUp(node, check) {\n        let checkedChildCount = 0;\n        let childPartialSelected = false;\n\n        for (let child of node.children) {\n            if (this.selectionKeys[this.nodeKey(child)] && this.selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n            else if (this.selectionKeys[this.nodeKey(child)] && this.selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n        }\n\n        if (check && checkedChildCount === node.children.length) {\n            this.selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n        } else {\n            if (!check) {\n                delete this.selectionKeys[this.nodeKey(node)];\n            }\n\n            if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== node.children.length)) this.selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: true };\n            else this.selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: false };\n        }\n\n        let parent = node.parent;\n        if (parent) {\n            this.propagateUp(parent, check);\n        }\n    }\n\n    findIndexInSelection(node: any) {\n        let index: number = -1;\n        if (this.selection && this.selection.length) {\n            for (let i = 0; i < this.selection.length; i++) {\n                if (this.equals(node, this.selection[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode === 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode === 'multiple';\n    }\n\n    equals(node1: TreeTableNode, node2: TreeTableNode) {\n        return this.compareSelectionBy === 'equals' ? equals(node1, node2) : equals(node1.data, node2.data, this.dataKey);\n    }\n\n    filter(value: string | string[], field: string, matchMode: string) {\n        if (this.filterTimeout) {\n            clearTimeout(this.filterTimeout);\n        }\n\n        if (!this.isFilterBlank(value)) {\n            this.filters[field] = { value: value, matchMode: matchMode };\n        } else if (this.filters[field]) {\n            delete this.filters[field];\n        }\n\n        this.filterTimeout = setTimeout(() => {\n            this._filter();\n            this.filterTimeout = null;\n        }, this.filterDelay);\n    }\n\n    filterGlobal(value: string, matchMode: string) {\n        this.filter(value, 'global', matchMode);\n    }\n\n    isFilterBlank(filter: any): boolean {\n        if (filter !== null && filter !== undefined) {\n            if ((typeof filter === 'string' && filter.trim().length == 0) || (Array.isArray(filter) && filter.length == 0)) return true;\n            else return false;\n        }\n        return true;\n    }\n\n    _filter() {\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        } else {\n            if (!this.value) {\n                return;\n            }\n\n            if (!this.hasFilter()) {\n                this.filteredNodes = null;\n                if (this.paginator) {\n                    this.totalRecords = this.value ? this.value.length : 0;\n                }\n            } else {\n                let globalFilterFieldsArray;\n                if (this.filters['global']) {\n                    if (!this.columns && !this.globalFilterFields) throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n                    else globalFilterFieldsArray = this.globalFilterFields || this.columns;\n                }\n\n                this.filteredNodes = [];\n                const isStrictMode = this.filterMode === 'strict';\n                let isValueChanged = false;\n\n                for (let node of this.value) {\n                    let copyNode = { ...node };\n                    let localMatch = true;\n                    let globalMatch = false;\n                    let paramsWithoutNode;\n\n                    for (let prop in this.filters) {\n                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n                            let filterMeta = <FilterMetadata>this.filters[prop];\n                            let filterField = prop;\n                            let filterValue = filterMeta.value;\n                            let filterMatchMode = filterMeta.matchMode || 'startsWith';\n                            let filterConstraint = (<any>this.filterService).filters[filterMatchMode];\n                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };\n                            if (\n                                (isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n                            ) {\n                                localMatch = false;\n                            }\n\n                            if (!localMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n                        let copyNodeForGlobal = { ...copyNode };\n                        let filterField = undefined;\n                        let filterValue = this.filters['global'].value;\n                        let filterConstraint = (<any>this.filterService).filters[(<any>this.filters)['global'].matchMode];\n                        paramsWithoutNode = {\n                            filterField,\n                            filterValue,\n                            filterConstraint,\n                            isStrictMode,\n                            globalFilterFieldsArray\n                        };\n\n                        if (\n                            (isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n                            (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))\n                        ) {\n                            globalMatch = true;\n                            copyNode = copyNodeForGlobal;\n                        }\n                    }\n\n                    let matches = localMatch;\n                    if (this.filters['global']) {\n                        matches = localMatch && globalMatch;\n                    }\n\n                    if (matches) {\n                        this.filteredNodes.push(copyNode);\n                    }\n\n                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);\n                }\n\n                if (!isValueChanged) {\n                    this.filteredNodes = null;\n                }\n\n                if (this.paginator) {\n                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n                }\n            }\n            this.cd.markForCheck();\n        }\n\n        this.first = 0;\n\n        const filteredValue = this.filteredNodes || this.value;\n\n        this.onFilter.emit({\n            filters: this.filters,\n            filteredValue: filteredValue\n        });\n\n        this.tableService.onUIUpdate(filteredValue);\n        this.updateSerializedValue();\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    findFilteredNodes(node: TreeTableNode, paramsWithoutNode: any) {\n        if (node) {\n            let matched = false;\n            if (node.children) {\n                let childNodes = [...node.children];\n                node.children = [];\n                for (let childNode of childNodes) {\n                    let copyChildNode = { ...childNode };\n                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n                        matched = true;\n                        node.children.push(copyChildNode);\n                    }\n                }\n            }\n\n            if (matched) {\n                return true;\n            }\n        }\n    }\n\n    isFilterMatched(node: TreeTableNode, filterOptions: TreeTableFilterOptions) {\n        let { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray } = <any>filterOptions;\n        let matched = false;\n        const isMatched = (field: string) => filterConstraint(resolveFieldData(node.data, field), filterValue, <string>this.filterLocale);\n\n        matched = globalFilterFieldsArray?.length ? globalFilterFieldsArray.some((globalFilterField) => isMatched(globalFilterField.field || globalFilterField)) : isMatched(filterField);\n\n        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n            matched =\n                this.findFilteredNodes(node, {\n                    filterField,\n                    filterValue,\n                    filterConstraint,\n                    isStrictMode,\n                    globalFilterFieldsArray\n                }) || matched;\n        }\n\n        return matched;\n    }\n\n    isNodeLeaf(node: TreeTableNode) {\n        return node.leaf === false ? false : !(node.children && node.children.length);\n    }\n\n    hasFilter() {\n        let empty = true;\n        for (let prop in this.filters) {\n            if (this.filters.hasOwnProperty(prop)) {\n                empty = false;\n                break;\n            }\n        }\n\n        return !empty;\n    }\n    /**\n     * Clears the sort and paginator state.\n     * @group Method\n     */\n    public reset() {\n        this._sortField = null;\n        this._sortOrder = 1;\n        this._multiSortMeta = null;\n        this.tableService.onSort(null);\n\n        this.filteredNodes = null;\n        this.filters = {};\n\n        this.first = 0;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        } else {\n            this.totalRecords = this._value ? this._value.length : 0;\n        }\n    }\n\n    updateEditingCell(cell: any, data: any, field: string) {\n        this.editingCell = cell;\n        this.editingCellData = data;\n        this.editingCellField = field;\n        this.bindDocumentEditListener();\n    }\n\n    isEditingCellValid() {\n        return this.editingCell && find(this.editingCell, '.ng-invalid.ng-dirty').length === 0;\n    }\n\n    bindDocumentEditListener() {\n        if (!this.documentEditListener) {\n            this.documentEditListener = this.renderer.listen(this.document, 'click', (event) => {\n                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n                    !this.$unstyled() && removeClass(this.editingCell, 'p-cell-editing');\n                    this.editingCell = null;\n                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n                    this.editingCellField = null;\n                    this.editingCellData = null;\n                    this.unbindDocumentEditListener();\n                }\n\n                this.editingCellClick = false;\n            });\n        }\n    }\n\n    unbindDocumentEditListener() {\n        if (this.documentEditListener) {\n            this.documentEditListener();\n            this.documentEditListener = null;\n        }\n    }\n\n    onDestroy() {\n        this.unbindDocumentEditListener();\n        this.editingCell = null;\n        this.editingCellField = null;\n        this.editingCellData = null;\n        this.initialized = null;\n    }\n\n    get dataP() {\n        return this.cn({\n            scrollable: this.scrollable,\n            'flex-scrollable': this.scrollable && this.scrollHeight === 'flex',\n            loading: this.loading,\n            empty: this.isEmpty()\n        });\n    }\n}\n\n@Component({\n    selector: '[pTreeTableBody]',\n    standalone: false,\n    template: `\n        <ng-template ngFor let-serializedNode let-rowIndex=\"index\" [ngForOf]=\"serializedNodes || tt.serializedValue\" [ngForTrackBy]=\"tt.rowTrackBy\">\n            <ng-container *ngIf=\"serializedNode.visible\">\n                <ng-container\n                    *ngTemplateOutlet=\"\n                        template;\n                        context: {\n                            $implicit: serializedNode,\n                            node: serializedNode.node,\n                            rowData: serializedNode.node.data,\n                            columns: columns\n                        }\n                    \"\n                ></ng-container>\n            </ng-container>\n        </ng-template>\n        <ng-container *ngIf=\"tt.isEmpty()\">\n            <ng-container *ngTemplateOutlet=\"tt.emptyMessageTemplate || tt._emptyMessageTemplate; context: { $implicit: columns, frozen: frozen }\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[attr.data-p]': 'dataP'\n    }\n})\nexport class TTBody extends BaseComponent {\n    @Input('pTreeTableBody') columns: any[] | undefined;\n\n    @Input('pTreeTableBodyTemplate') template: Nullable<TemplateRef<any>>;\n\n    @Input({ transform: booleanAttribute }) frozen: boolean | undefined;\n\n    @Input() serializedNodes: any;\n\n    @Input() scrollerOptions: any;\n\n    subscription: Subscription;\n\n    constructor(\n        public tt: TreeTable,\n        public treeTableService: TreeTableService\n    ) {\n        super();\n        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            if (this.tt.virtualScroll) {\n                this.cd.detectChanges();\n            }\n        });\n    }\n\n    getScrollerOption(option: any, options?: any) {\n        if (this.tt.virtualScroll) {\n            options = options || this.scrollerOptions;\n            return options ? options[option] : null;\n        }\n\n        return null;\n    }\n\n    getRowIndex(rowIndex: number) {\n        const getItemOptions = this.getScrollerOption('getItemOptions');\n        return getItemOptions ? getItemOptions(rowIndex).index : rowIndex;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n    get dataP() {\n        return this.cn({\n            hoverable: this.tt.rowHover || this.tt.selectionMode,\n            frozen: this.frozen\n        });\n    }\n}\n\n@Component({\n    selector: '[ttScrollableView]',\n    standalone: false,\n    template: `\n        <div #scrollHeader [class]=\"cx('scrollableHeader')\" [pBind]=\"ptm('scrollableHeader')\">\n            <div #scrollHeaderBox [class]=\"cx('scrollableHeaderBox')\" [pBind]=\"ptm('scrollableHeaderBox')\">\n                <table [class]=\"cn(cx('scrollableHeaderTable'), tt.tableStyleClass)\" [pBind]=\"ptm('scrollableHeaderTable')\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container\n                        *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate || tt._frozenColGroupTemplate || tt.colGroupTemplate || tt._colGroupTemplate : tt.colGroupTemplate || tt._colGroupTemplate; context: { $implicit: columns }\"\n                    ></ng-container>\n                    <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n                        <ng-container\n                            *ngTemplateOutlet=\"frozen ? tt.frozenHeaderTemplate || tt._frozenHeaderTemplate || tt.headerTemplate || tt._headerTemplate : tt.headerTemplate || tt._headerTemplate; context: { $implicit: columns }\"\n                        ></ng-container>\n                    </thead>\n                </table>\n            </div>\n        </div>\n\n        <p-scroller\n            *ngIf=\"tt.virtualScroll\"\n            #scroller\n            [items]=\"tt.serializedValue\"\n            [styleClass]=\"cx('scrollableBody')\"\n            [style]=\"{ height: tt.scrollHeight !== 'flex' ? tt.scrollHeight : undefined }\"\n            [scrollHeight]=\"scrollHeight !== 'flex' ? undefined : '100%'\"\n            [itemSize]=\"tt.virtualScrollItemSize || tt._virtualRowHeight\"\n            [lazy]=\"tt.lazy\"\n            (onLazyLoad)=\"tt.onLazyItemLoad($event)\"\n            [options]=\"tt.virtualScrollOptions\"\n            [pt]=\"ptm('virtualScroller')\"\n        >\n            <ng-template #content let-items let-scrollerOptions=\"options\">\n                <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n            </ng-template>\n            <ng-container *ngIf=\"tt.loaderTemplate || tt._loaderTemplate\">\n                <ng-template #loader let-scrollerOptions=\"options\">\n                    <ng-container *ngTemplateOutlet=\"tt.loaderTemplate || tt._loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n                </ng-template>\n            </ng-container>\n        </p-scroller>\n        <ng-container *ngIf=\"!tt.virtualScroll\">\n            <div\n                #scrollBody\n                [class]=\"cx('scrollableBody')\"\n                [pBind]=\"ptm('scrollableBody')\"\n                [ngStyle]=\"{\n                    'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined,\n                    'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined\n                }\"\n            >\n                <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: serializedValue, options: {} }\"></ng-container>\n            </div>\n        </ng-container>\n\n        <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n            <table role=\"treegrid\" #scrollTable [pBind]=\"ptm('table')\" [class]=\"tt.tableStyleClass\" [ngClass]=\"scrollerOptions.contentStyleClass\" [ngStyle]=\"tt.tableStyle\" [style]=\"scrollerOptions.contentStyle\">\n                <ng-container\n                    *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate || tt._frozenColGroupTemplate || tt.colGroupTemplate || tt._colGroupTemplate : tt.colGroupTemplate || tt._colGroupTemplate; context: { $implicit: columns }\"\n                ></ng-container>\n                <tbody\n                    [pBind]=\"ptm('tbody')\"\n                    role=\"rowgroup\"\n                    [class]=\"cx('tbody')\"\n                    [pBind]=\"ptm('tbody')\"\n                    [pTreeTableBody]=\"columns\"\n                    [unstyled]=\"unstyled()\"\n                    [pTreeTableBodyTemplate]=\"frozen ? tt.frozenBodyTemplate || tt._frozenBodyTemplate || tt.bodyTemplate || tt._bodyTemplate : tt.bodyTemplate || tt._bodyTemplate\"\n                    [serializedNodes]=\"items\"\n                    [frozen]=\"frozen\"\n                ></tbody>\n            </table>\n            <div #scrollableAligner [style.background-color]=\"'transparent'\" *ngIf=\"frozen\"></div>\n        </ng-template>\n\n        <div #scrollFooter *ngIf=\"tt.footerTemplate || tt._footerTemplate\" [class]=\"cx('scrollableFooter')\" [pBind]=\"ptm('scrollableFooter')\">\n            <div #scrollFooterBox [class]=\"cx('scrollableFooterBox')\" [pBind]=\"ptm('scrollableFooterBox')\">\n                <table [class]=\"cx('scrollableFooterTable')\" [ngClass]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\" [pBind]=\"ptm('scrollableFooterTable')\">\n                    <ng-container\n                        *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate || tt._frozenColGroupTemplate || tt.colGroupTemplate || tt._colGroupTemplate : tt.colGroupTemplate || tt._colGroupTemplate; context: { $implicit: columns }\"\n                    ></ng-container>\n                    <tfoot role=\"rowgroup\" [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\">\n                        <ng-container\n                            *ngTemplateOutlet=\"frozen ? tt.frozenFooterTemplate || tt._frozenFooterTemplate || tt.footerTemplate || tt._footerTemplate : tt.footerTemplate || tt._footerTemplate; context: { $implicit: columns }\"\n                        ></ng-container>\n                    </tfoot>\n                </table>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    providers: [TreeTableStyle]\n})\nexport class TTScrollableView extends BaseComponent {\n    hostName = 'TreeTable';\n\n    @Input('ttScrollableView') columns: any[] | undefined;\n\n    @Input({ transform: booleanAttribute }) frozen: boolean | undefined;\n\n    @ViewChild('scrollHeader') scrollHeaderViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollHeaderBox') scrollHeaderBoxViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollBody') scrollBodyViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollTable') scrollTableViewChild: Nullable<ElementRef>;\n\n    @ViewChild('loadingTable') scrollLoadingTableViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollFooter') scrollFooterViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollFooterBox') scrollFooterBoxViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scrollableAligner') scrollableAlignerViewChild: Nullable<ElementRef>;\n\n    @ViewChild('scroller') scroller: Nullable<Scroller>;\n\n    headerScrollListener: VoidListener;\n\n    bodyScrollListener: VoidListener;\n\n    footerScrollListener: VoidListener;\n\n    frozenSiblingBody: Nullable<Element>;\n\n    totalRecordsSubscription: Nullable<Subscription>;\n\n    _scrollHeight: string | undefined | null;\n\n    preventBodyScrollPropagation: boolean | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    @Input() get scrollHeight(): string | undefined | null {\n        return this._scrollHeight;\n    }\n    set scrollHeight(val: string | undefined | null) {\n        this._scrollHeight = val;\n        if (val != null && (val.includes('%') || val.includes('calc'))) {\n            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.');\n        }\n    }\n\n    constructor(\n        public tt: TreeTable,\n        public zone: NgZone\n    ) {\n        super();\n    }\n\n    onAfterViewInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (!this.frozen) {\n                if (this.tt.frozenColumns || this.tt.frozenBodyTemplate || this.tt._frozenBodyTemplate) {\n                    addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n                }\n\n                let frozenView = this.el.nativeElement.previousElementSibling;\n                if (frozenView) {\n                    if (this.tt.virtualScroll) this.frozenSiblingBody = findSingle(frozenView, '[data-pc-name=\"virtualscroller\"]');\n                    else this.frozenSiblingBody = findSingle(frozenView, '[data-pc-section=\"scrollablebody\"]');\n                }\n\n                if (this.scrollHeight) {\n                    let scrollBarWidth = calculateScrollbarWidth();\n                    if (this.scrollHeaderBoxViewChild?.nativeElement) {\n                        this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n                    }\n\n                    if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {\n                        this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n                    }\n                }\n            } else {\n                if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {\n                    this.scrollableAlignerViewChild.nativeElement.style.height = calculateScrollbarHeight() + 'px';\n                }\n            }\n\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.zone.runOutsideAngular(() => {\n                if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n                    this.headerScrollListener = this.renderer.listen(this.scrollHeaderBoxViewChild?.nativeElement, 'scroll', this.onHeaderScroll.bind(this));\n                }\n\n                if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n                    this.footerScrollListener = this.renderer.listen(this.scrollFooterViewChild.nativeElement, 'scroll', this.onFooterScroll.bind(this));\n                }\n\n                if (!this.frozen) {\n                    if (this.tt.virtualScroll) {\n                        this.bodyScrollListener = this.renderer.listen((this.scroller?.getElementRef() as ElementRef).nativeElement, 'scroll', this.onBodyScroll.bind(this));\n                    } else {\n                        this.bodyScrollListener = this.renderer.listen(this.scrollBodyViewChild?.nativeElement, 'scroll', this.onBodyScroll.bind(this));\n                    }\n                }\n            });\n        }\n    }\n\n    unbindEvents() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n                if (this.headerScrollListener) {\n                    this.headerScrollListener();\n                    this.headerScrollListener = null;\n                }\n            }\n\n            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n                if (this.footerScrollListener) {\n                    this.footerScrollListener();\n                    this.footerScrollListener = null;\n                }\n            }\n\n            if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {\n                if (this.bodyScrollListener) {\n                    this.bodyScrollListener();\n                    this.bodyScrollListener = null;\n                }\n            }\n\n            if (this.scroller && this.scroller.getElementRef()) {\n                if (this.bodyScrollListener) {\n                    this.bodyScrollListener();\n                    this.bodyScrollListener = null;\n                }\n            }\n        }\n    }\n\n    onHeaderScroll() {\n        const scrollLeft = this.scrollHeaderViewChild?.nativeElement.scrollLeft;\n\n        (this.scrollBodyViewChild as ElementRef).nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onFooterScroll() {\n        const scrollLeft = this.scrollFooterViewChild?.nativeElement.scrollLeft;\n        (this.scrollBodyViewChild as ElementRef).nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onBodyScroll(event: any) {\n        if (this.preventBodyScrollPropagation) {\n            this.preventBodyScrollPropagation = false;\n            return;\n        }\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            (this.scrollHeaderBoxViewChild as ElementRef).nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            (this.scrollFooterBoxViewChild as ElementRef).nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.frozenSiblingBody) {\n            this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n        }\n    }\n\n    scrollToVirtualIndex(index: number): void {\n        if (this.scroller) {\n            this.scroller.scrollToIndex(index);\n        }\n    }\n\n    scrollTo(options: ScrollToOptions): void {\n        if (this.scroller) {\n            this.scroller.scrollTo(options);\n        } else {\n            if (this.scrollBodyViewChild?.nativeElement.scrollTo) {\n                this.scrollBodyViewChild.nativeElement.scrollTo(options);\n            } else {\n                (this.scrollBodyViewChild as ElementRef).nativeElement.scrollLeft = options.left;\n                (this.scrollBodyViewChild as ElementRef).nativeElement.scrollTop = options.top;\n            }\n        }\n    }\n\n    onDestroy() {\n        this.unbindEvents();\n\n        this.frozenSiblingBody = null;\n    }\n}\n\n@Directive({\n    selector: '[ttSortableColumn]',\n    standalone: false,\n    host: {\n        '[class]': 'cx(\"sortableColumn\")',\n        '[tabindex]': 'isEnabled() ? \"0\" : null',\n        role: 'columnheader',\n        '[attr.aria-sort]': 'ariaSorted'\n    },\n    providers: [TreeTableStyle],\n    hostDirectives: [Bind]\n})\nexport class TTSortableColumn extends BaseComponent {\n    hostName = 'TreeTable ';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptm('sortableColumn', { context: { sorted: this.sorted } }));\n    }\n\n    @Input('ttSortableColumn') field: string | undefined;\n\n    @Input({ transform: booleanAttribute }) ttSortableColumnDisabled: boolean | undefined;\n\n    sorted: boolean | undefined;\n\n    subscription: Subscription | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    get ariaSorted() {\n        if (this.sorted && this.tt.sortOrder < 0) return 'descending';\n        else if (this.sorted && this.tt.sortOrder > 0) return 'ascending';\n        else return 'none';\n    }\n\n    constructor(public tt: TreeTable) {\n        super();\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.sortSource$.subscribe((sortMeta) => {\n                this.updateSortState();\n            });\n        }\n    }\n\n    onInit() {\n        if (this.isEnabled()) {\n            this.updateSortState();\n        }\n    }\n\n    updateSortState() {\n        this.sorted = this.tt.isSorted(<string>this.field) as boolean;\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.updateSortState();\n            this.tt.sort({\n                originalEvent: event,\n                field: this.field\n            });\n\n            clearSelection();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKey(event: MouseEvent) {\n        this.onClick(event);\n    }\n\n    isEnabled() {\n        return this.ttSortableColumnDisabled !== true;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-treeTableSortIcon, p-treetable-sort-icon, p-tree-table-sort-icon',\n    standalone: false,\n    template: `\n        <ng-container *ngIf=\"!tt.sortIconTemplate && !tt._sortIconTemplate\">\n            <svg data-p-icon=\"sort-alt\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" *ngIf=\"sortOrder === 0\" />\n            <svg data-p-icon=\"sort-amount-up-alt\" [class]=\"cx('sortableColumnIcon')\" *ngIf=\"sortOrder === 1\" [pBind]=\"ptm('sortableColumnIcon')\" />\n            <svg data-p-icon=\"sort-amount-down\" [class]=\"cx('sortableColumnIcon')\" *ngIf=\"sortOrder === -1\" [pBind]=\"ptm('sortableColumnIcon')\" />\n        </ng-container>\n        <span *ngIf=\"tt.sortIconTemplate || tt._sortIconTemplate\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\">\n            <ng-template *ngTemplateOutlet=\"tt.sortIconTemplate || tt._sortIconTemplate; context: { $implicit: sortOrder }\"></ng-template>\n        </span>\n        <p-badge *ngIf=\"isMultiSorted()\" [class]=\"cx('sortableColumnBadge')\" [value]=\"getBadgeValue()\" size=\"small\" [pt]=\"ptm('pcSortableColumnBadge')\" [unstyled]=\"unstyled()\"></p-badge>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TreeTableStyle]\n})\nexport class TTSortIcon extends BaseComponent {\n    hostName = 'TreeTable';\n\n    @Input() field: string | undefined;\n\n    @Input() ariaLabelDesc: string | undefined;\n\n    @Input() ariaLabelAsc: string | undefined;\n\n    subscription: Subscription | undefined;\n\n    sortOrder: number | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public cd: ChangeDetectorRef\n    ) {\n        super();\n        this.subscription = this.tt.tableService.sortSource$.subscribe((sortMeta) => {\n            this.updateSortState();\n            this.cd.markForCheck();\n        });\n    }\n\n    onInit() {\n        this.updateSortState();\n    }\n\n    onClick(event: Event) {\n        event.preventDefault();\n    }\n\n    getMultiSortMetaIndex() {\n        let multiSortMeta = this.tt._multiSortMeta;\n        let index = -1;\n\n        if (multiSortMeta && this.tt.sortMode === 'multiple' && multiSortMeta.length > 1) {\n            for (let i = 0; i < multiSortMeta.length; i++) {\n                let meta = multiSortMeta[i];\n                if (meta.field === this.field || meta.field === this.field) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    updateSortState() {\n        if (this.tt.sortMode === 'single') {\n            this.sortOrder = this.tt.isSorted(<string>this.field) ? this.tt.sortOrder : 0;\n        } else if (this.tt.sortMode === 'multiple') {\n            let sortMeta = this.tt.getSortMeta(<string>this.field);\n            this.sortOrder = sortMeta ? sortMeta.order : 0;\n        }\n    }\n\n    getBadgeValue() {\n        return this.getMultiSortMetaIndex() + 1;\n    }\n\n    isMultiSorted() {\n        return this.tt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[ttResizableColumn]',\n    standalone: false\n})\nexport class TTResizableColumn extends BaseComponent {\n    hostName = 'TreeTable';\n\n    @Input({ transform: booleanAttribute }) ttResizableColumnDisabled: boolean | undefined;\n\n    resizer: HTMLSpanElement | undefined;\n\n    resizerMouseDownListener: VoidListener;\n\n    documentMouseMoveListener: VoidListener;\n\n    documentMouseUpListener: VoidListener;\n\n    constructor(\n        public tt: TreeTable,\n        public zone: NgZone\n    ) {\n        super();\n    }\n\n    onAfterViewInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.isEnabled()) {\n                addClass(this.el.nativeElement, 'p-resizable-column');\n                this.resizer = this.renderer.createElement('span');\n                !this.$unstyled() && this.renderer.addClass(this.resizer, 'p-column-resizer');\n                (this.resizer as HTMLElement).setAttribute('data-pc-section', 'columnresizer');\n                this.renderer.appendChild(this.el.nativeElement, this.resizer);\n\n                this.zone.runOutsideAngular(() => {\n                    this.resizerMouseDownListener = this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n                });\n            }\n        }\n    }\n\n    bindDocumentEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.documentMouseMoveListener = this.renderer.listen(this.document, 'mousemove', this.onDocumentMouseMove.bind(this));\n            this.documentMouseUpListener = this.renderer.listen(this.document, 'mouseup', this.onDocumentMouseUp.bind(this));\n        });\n    }\n\n    unbindDocumentEvents() {\n        if (this.documentMouseMoveListener) {\n            this.documentMouseMoveListener();\n            this.documentMouseMoveListener = null;\n        }\n\n        if (this.documentMouseUpListener) {\n            this.documentMouseUpListener();\n            this.documentMouseUpListener = null;\n        }\n    }\n\n    onMouseDown(event: MouseEvent) {\n        this.tt.onColumnResizeBegin(event);\n        this.bindDocumentEvents();\n    }\n\n    onDocumentMouseMove(event: MouseEvent) {\n        this.tt.onColumnResize(event);\n    }\n\n    onDocumentMouseUp(event: MouseEvent) {\n        this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n        this.unbindDocumentEvents();\n    }\n\n    isEnabled() {\n        return this.ttResizableColumnDisabled !== true;\n    }\n\n    onDestroy() {\n        if (this.resizerMouseDownListener) {\n            this.resizerMouseDownListener();\n            this.resizerMouseDownListener = null;\n        }\n\n        this.unbindDocumentEvents();\n    }\n}\n\n@Directive({\n    selector: '[ttReorderableColumn]',\n    standalone: false\n})\nexport class TTReorderableColumn extends BaseComponent {\n    hostName = 'TreeTable';\n\n    @Input({ transform: booleanAttribute }) ttReorderableColumnDisabled: boolean | undefined;\n\n    dragStartListener: VoidListener;\n\n    dragOverListener: VoidListener;\n\n    dragEnterListener: VoidListener;\n\n    dragLeaveListener: VoidListener;\n\n    mouseDownListener: VoidListener;\n\n    constructor(\n        public tt: TreeTable,\n        public zone: NgZone\n    ) {\n        super();\n    }\n\n    onAfterViewInit() {\n        if (this.isEnabled()) {\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.zone.runOutsideAngular(() => {\n                this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n                this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n                this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragEnter.bind(this));\n                this.dragEnterListener = this.renderer.listen(this.el.nativeElement, 'dragenter', this.onDragEnter.bind(this));\n                this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n            });\n        }\n    }\n\n    unbindEvents() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.mouseDownListener) {\n                this.mouseDownListener();\n                this.mouseDownListener = null;\n            }\n\n            if (this.dragOverListener) {\n                this.dragOverListener();\n                this.dragOverListener = null;\n            }\n\n            if (this.dragEnterListener) {\n                this.dragEnterListener();\n                this.dragEnterListener = null;\n            }\n\n            if (this.dragLeaveListener) {\n                this.dragLeaveListener();\n                this.dragLeaveListener = null;\n            }\n        }\n    }\n\n    onMouseDown(event: any) {\n        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || findSingle(event.target, '[data-pc-section=\"columnresizer\"]')) this.el.nativeElement.draggable = false;\n        else this.el.nativeElement.draggable = true;\n    }\n\n    onDragStart(event: DragEvent) {\n        this.tt.onColumnDragStart(event, this.el.nativeElement);\n    }\n\n    onDragOver(event: DragEvent) {\n        event.preventDefault();\n    }\n\n    onDragEnter(event: DragEvent) {\n        this.tt.onColumnDragEnter(event, this.el.nativeElement);\n    }\n\n    onDragLeave(event: DragEvent) {\n        this.tt.onColumnDragLeave(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event: DragEvent) {\n        if (this.isEnabled()) {\n            this.tt.onColumnDrop(event, this.el.nativeElement);\n        }\n    }\n\n    isEnabled() {\n        return this.ttReorderableColumnDisabled !== true;\n    }\n\n    onDestroy() {\n        this.unbindEvents();\n    }\n}\n\n@Directive({\n    selector: '[ttSelectableRow]',\n    standalone: false,\n    host: {\n        '[class]': 'cx(\"row\")',\n        '[attr.aria-selected]': 'selected'\n    },\n    providers: [TreeTableStyle]\n})\nexport class TTSelectableRow extends BaseComponent {\n    @Input('ttSelectableRow') rowNode: any;\n\n    @Input({ transform: booleanAttribute }) ttSelectableRowDisabled: boolean | undefined;\n\n    selected: boolean | undefined;\n\n    subscription: Subscription | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public tableService: TreeTableService\n    ) {\n        super();\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    onInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        switch (event.code) {\n            case 'Enter':\n            case 'Space':\n                this.onEnterKey(event);\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    @HostListener('touchend', ['$event'])\n    onTouchEnd(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowTouchEnd(event);\n        }\n    }\n\n    onEnterKey(event) {\n        if (this.tt.selectionMode === 'checkbox') {\n            this.tt.toggleNodeWithCheckbox({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        } else {\n            this.onClick(event);\n        }\n        event.preventDefault();\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[ttSelectableRowDblClick]',\n    standalone: false,\n    host: {\n        '[class]': 'cx(\"row\")'\n    },\n    providers: [TreeTableStyle]\n})\nexport class TTSelectableRowDblClick extends BaseComponent {\n    @Input('ttSelectableRowDblClick') rowNode: any;\n\n    @Input({ transform: booleanAttribute }) ttSelectableRowDisabled: boolean | undefined;\n\n    selected: boolean | undefined;\n\n    subscription: Subscription | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public tableService: TreeTableService\n    ) {\n        super();\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    onInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('dblclick', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[ttContextMenuRow]',\n    standalone: false,\n    host: {\n        '[class]': 'cx(\"contextMenuRow\")',\n        '[tabindex]': 'isEnabled() ? 0 : undefined'\n    },\n    providers: [TreeTableStyle]\n})\nexport class TTContextMenuRow extends BaseComponent {\n    @Input('ttContextMenuRow') rowNode: any | undefined;\n\n    @Input({ transform: booleanAttribute }) ttContextMenuRowDisabled: boolean | undefined;\n\n    selected: boolean | undefined;\n\n    subscription: Subscription | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public tableService: TreeTableService\n    ) {\n        super();\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {\n                this.selected = node ? this.tt.equals(this.rowNode.node, node) : false;\n            });\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onContextMenu(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowRightClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n\n            this.el.nativeElement.focus();\n\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.ttContextMenuRowDisabled !== true;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-treeTableCheckbox, p-treetable-checkbox, p-tree-table-checkbox',\n    standalone: false,\n    template: `\n        <p-checkbox [ngModel]=\"checked\" [pt]=\"ptm('pcRowCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"disabled\" [indeterminate]=\"partialChecked\" [styleClass]=\"cx('pcNodeCheckbox')\" [tabIndex]=\"-1\" [unstyled]=\"unstyled()\">\n            <ng-container *ngIf=\"tt.checkboxIconTemplate || tt._checkboxIconTemplate\">\n                <ng-template pTemplate=\"icon\">\n                    <ng-template *ngTemplateOutlet=\"tt.checkboxIconTemplate || tt._checkboxIconTemplate; context: { $implicit: checked, partialSelected: partialChecked }\"></ng-template>\n                </ng-template>\n            </ng-container>\n        </p-checkbox>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TreeTableStyle]\n})\nexport class TTCheckbox extends BaseComponent {\n    hostName = 'TreeTable';\n\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n\n    @Input('value') rowNode: any;\n\n    checked: boolean | undefined;\n\n    partialChecked: boolean | undefined;\n\n    focused: boolean | undefined;\n\n    subscription: Subscription | undefined;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public tableService: TreeTableService,\n        public cd: ChangeDetectorRef\n    ) {\n        super();\n        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            if (this.tt.selectionKeys) {\n                this.checked = this.tt.isNodeSelected(this.rowNode.node);\n                this.partialChecked = this.tt.isNodePartialSelected(this.rowNode.node);\n            } else {\n                this.checked = this.tt.isSelected(this.rowNode.node);\n                this.partialChecked = this.rowNode.node.partialSelected;\n            }\n            this.cd.markForCheck();\n        });\n    }\n\n    onInit() {\n        if (this.tt.selectionKeys) {\n            this.checked = this.tt.isNodeSelected(this.rowNode.node);\n            this.partialChecked = this.tt.isNodePartialSelected(this.rowNode.node);\n        } else {\n            // for backward compatibility\n            this.checked = this.tt.isSelected(this.rowNode.node);\n            this.partialChecked = this.rowNode.node.partialSelected;\n        }\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            if (this.tt.selectionKeys) {\n                const _check = !this.checked;\n                this.tt.toggleCheckbox({\n                    originalEvent: event,\n                    check: _check,\n                    rowNode: this.rowNode\n                });\n            } else {\n                this.tt.toggleNodeWithCheckbox({\n                    originalEvent: event,\n                    rowNode: this.rowNode\n                });\n            }\n        }\n        clearSelection();\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-treeTableHeaderCheckbox',\n    standalone: false,\n    template: `\n        <p-checkbox [ngModel]=\"checked\" [pt]=\"ptm('pcHeaderCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"!tt.value || tt.value.length === 0\" [unstyled]=\"unstyled()\">\n            <ng-container *ngIf=\"tt.headerCheckboxIconTemplate || tt._headerCheckboxIconTemplate\">\n                <ng-template pTemplate=\"icon\">\n                    <ng-template *ngTemplateOutlet=\"tt.headerCheckboxIconTemplate || tt._headerCheckboxIconTemplate; context: { $implicit: checked }\"></ng-template>\n                </ng-template>\n            </ng-container>\n        </p-checkbox>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TTHeaderCheckbox extends BaseComponent {\n    checked: boolean | undefined;\n\n    disabled: boolean | undefined;\n\n    selectionChangeSubscription: Subscription;\n\n    valueChangeSubscription: Subscription;\n\n    constructor(\n        public tt: TreeTable,\n        public tableService: TreeTableService\n    ) {\n        super();\n        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n\n        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n    }\n\n    onInit() {\n        this.checked = this.updateCheckedState();\n    }\n\n    onClick(event: Event) {\n        if ((this.tt?.value || this.tt?.filteredNodes) && ((this.tt?.value && this.tt.value.length > 0) || (this.tt?.filteredNodes && this.tt.filteredNodes.length > 0))) {\n            this.tt?.toggleNodesWithCheckbox(event, !this.checked);\n        }\n\n        clearSelection();\n    }\n\n    onDestroy() {\n        if (this.selectionChangeSubscription) {\n            this.selectionChangeSubscription.unsubscribe();\n        }\n\n        if (this.valueChangeSubscription) {\n            this.valueChangeSubscription.unsubscribe();\n        }\n    }\n\n    updateCheckedState() {\n        this.cd.markForCheck();\n        let checked!: boolean;\n        const data = this.tt.filteredNodes || this.tt.value;\n\n        if (data) {\n            if (this.tt.selectionKeys) {\n                for (let node of data) {\n                    if (this.tt.isNodeSelected(node)) {\n                        checked = true;\n                    } else {\n                        checked = false;\n                        break;\n                    }\n                }\n            }\n            if (!this.tt.selectionKeys) {\n                // legacy selection support, will be removed in v18\n                for (let node of data) {\n                    if (this.tt.isSelected(node)) {\n                        checked = true;\n                    } else {\n                        checked = false;\n                        break;\n                    }\n                }\n            }\n        } else {\n            checked = false;\n        }\n\n        return checked;\n    }\n}\n\n@Directive({\n    selector: '[ttEditableColumn]',\n    standalone: false\n})\nexport class TTEditableColumn extends BaseComponent {\n    @Input('ttEditableColumn') data: any;\n\n    @Input('ttEditableColumnField') field: any;\n\n    @Input({ transform: booleanAttribute }) ttEditableColumnDisabled: boolean | undefined;\n\n    constructor(\n        public tt: TreeTable,\n        public zone: NgZone\n    ) {\n        super();\n    }\n\n    onAfterViewInit() {\n        if (this.isEnabled()) {\n            !this.$unstyled() && addClass(this.el.nativeElement, 'p-editable-column');\n            this.el?.nativeElement.setAttribute('data-p-editable-column', 'true');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.tt.editingCellClick = true;\n\n            if (this.tt.editingCell) {\n                if (this.tt.editingCell !== this.el.nativeElement) {\n                    if (!this.tt.isEditingCellValid()) {\n                        return;\n                    }\n\n                    if (this.tt.editingCell) !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.openCell();\n                }\n            } else {\n                this.openCell();\n            }\n        }\n    }\n\n    openCell() {\n        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);\n        !this.$unstyled() && addClass(this.el.nativeElement, 'p-cell-editing');\n        this.el?.nativeElement.setAttribute('data-p-cell-editing', 'true');\n        this.tt.onEditInit.emit({ field: this.field, data: this.data });\n        this.tt.editingCellClick = true;\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let focusable = <any>findSingle(this.el.nativeElement, 'input, textarea');\n                if (focusable) {\n                    focusable.focus();\n                }\n            }, 50);\n        });\n    }\n\n    closeEditingCell() {\n        if (this.tt.editingCell) !this.$unstyled() && removeClass(this.tt.editingCell, 'p-checkbox-icon');\n        this.tt.editingCell = null;\n        this.tt.unbindDocumentEditListener();\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            //enter\n            if (event.keyCode == 13 && !event.shiftKey) {\n                if (this.tt.isEditingCellValid()) {\n                    if (this.tt.editingCell) {\n                        !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n                        this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n                    }\n                    this.closeEditingCell();\n                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //escape\n            else if (event.keyCode == 27) {\n                if (this.tt.isEditingCellValid()) {\n                    if (this.tt.editingCell) {\n                        !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n                        this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n                    }\n                    this.closeEditingCell();\n                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //tab\n            else if (event.keyCode == 9) {\n                this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n\n                if (event.shiftKey) this.moveToPreviousCell(event);\n                else this.moveToNextCell(event);\n            }\n        }\n    }\n\n    findCell(element: any) {\n        if (element) {\n            let cell = element;\n            while (cell && !findSingle(cell, '[data-p-cell-editing=\"true\"]')) {\n                cell = cell.parentElement;\n            }\n\n            return cell;\n        } else {\n            return null;\n        }\n    }\n\n    moveToPreviousCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findPreviousEditableColumn(currentCell);\n\n        if (targetCell) {\n            // @ts-ignore\n            invokeElementMethod(targetCell as HTMLElement, 'click', undefined);\n            event.preventDefault();\n        }\n    }\n\n    moveToNextCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findNextEditableColumn(currentCell);\n\n        if (targetCell) {\n            // @ts-ignore\n            invokeElementMethod(targetCell, 'click', undefined);\n            event.preventDefault();\n        }\n    }\n\n    findPreviousEditableColumn(cell: any): Element | null {\n        let prevCell = cell.previousElementSibling;\n\n        if (!prevCell) {\n            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;\n            if (previousRow) {\n                prevCell = previousRow.lastElementChild;\n            }\n        }\n\n        if (prevCell) {\n            if (findSingle(prevCell, '[data-p-editable-column=\"true\"]')) return prevCell;\n            else return this.findPreviousEditableColumn(prevCell);\n        } else {\n            return null;\n        }\n    }\n\n    findNextEditableColumn(cell: Element): Element | null {\n        let nextCell = cell.nextElementSibling;\n\n        if (!nextCell) {\n            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;\n            if (nextRow) {\n                nextCell = nextRow.firstElementChild;\n            }\n        }\n\n        if (nextCell) {\n            if (findSingle(nextCell, '[data-p-editable-column=\"true\"]')) return nextCell;\n            else return this.findNextEditableColumn(nextCell);\n        } else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.ttEditableColumnDisabled !== true;\n    }\n}\n\n@Component({\n    selector: 'p-treeTableCellEditor, p-treetablecelleditor, p-treetable-cell-editor',\n    standalone: false,\n    template: `\n        <ng-container *ngIf=\"tt.editingCell === editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    hostDirectives: [Bind]\n})\nexport class TreeTableCellEditor extends BaseComponent {\n    hostName = 'TreeTable';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptm('cellEditor'));\n    }\n\n    @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<PrimeTemplate>>;\n\n    inputTemplate: Nullable<TemplateRef<any>>;\n\n    outputTemplate: Nullable<TemplateRef<any>>;\n\n    constructor(\n        public tt: TreeTable,\n        public editableColumn: TTEditableColumn\n    ) {\n        super();\n    }\n\n    onAfterContentInit() {\n        (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n            switch (item.getType()) {\n                case 'input':\n                    this.inputTemplate = item.template;\n                    break;\n\n                case 'output':\n                    this.outputTemplate = item.template;\n                    break;\n            }\n        });\n    }\n}\n\n@Directive({\n    selector: '[ttRow]',\n    standalone: false,\n    host: {\n        '[class]': `'p-element ' + styleClass`,\n        '[tabindex]': \"'0'\",\n        '[attr.aria-expanded]': 'expanded',\n        '[attr.aria-level]': 'level',\n        role: 'row'\n    },\n    providers: [TreeTableStyle],\n    hostDirectives: [Bind]\n})\nexport class TTRow extends BaseComponent {\n    hostName = 'TreeTable';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    treeTable = inject(TreeTable);\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptm('row', this.ptmOptions()));\n    }\n\n    get level() {\n        return this.rowNode?.['level'] + 1;\n    }\n\n    get styleClass() {\n        return this.rowNode?.node['styleClass'] || '';\n    }\n\n    get expanded() {\n        return this.rowNode?.node['expanded'];\n    }\n\n    @Input('ttRow') rowNode: any;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(\n        public tt: TreeTable,\n        public el: ElementRef,\n        public zone: NgZone\n    ) {\n        super();\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        switch (event.code) {\n            case 'ArrowDown':\n                this.onArrowDownKey(event);\n                break;\n\n            case 'ArrowUp':\n                this.onArrowUpKey(event);\n                break;\n\n            case 'ArrowRight':\n                this.onArrowRightKey(event);\n                break;\n\n            case 'ArrowLeft':\n                this.onArrowLeftKey(event);\n                break;\n\n            case 'Tab':\n                this.onTabKey(event);\n                break;\n\n            case 'Home':\n                this.onHomeKey(event);\n                break;\n\n            case 'End':\n                this.onEndKey(event);\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    onArrowDownKey(event: KeyboardEvent) {\n        let nextRow = this.el?.nativeElement?.nextElementSibling;\n        if (nextRow) {\n            this.focusRowChange(<HTMLElement>event.currentTarget, nextRow);\n        }\n\n        event.preventDefault();\n    }\n\n    onArrowUpKey(event: KeyboardEvent) {\n        let prevRow = this.el?.nativeElement?.previousElementSibling;\n        if (prevRow) {\n            this.focusRowChange(<HTMLElement>event.currentTarget, prevRow);\n        }\n\n        event.preventDefault();\n    }\n\n    onArrowRightKey(event: KeyboardEvent) {\n        const currentTarget = <HTMLElement>event.currentTarget;\n        const isHiddenIcon = (findSingle(currentTarget, 'button') as any).style.visibility === 'hidden';\n\n        if (!isHiddenIcon && !this.expanded && this.rowNode.node['children']) {\n            this.expand(event);\n\n            currentTarget.tabIndex = -1;\n        }\n        event.preventDefault();\n    }\n\n    onArrowLeftKey(event: KeyboardEvent) {\n        const container = this.tt.el?.nativeElement;\n        const expandedRows = find(container, '[aria-expanded=\"true\"]');\n        const lastExpandedRow = expandedRows[expandedRows.length - 1];\n\n        if (this.expanded) {\n            this.collapse(event);\n        }\n        if (lastExpandedRow) {\n            this.tt.toggleRowIndex = getIndex(lastExpandedRow as any);\n        }\n        this.restoreFocus();\n        event.preventDefault();\n    }\n\n    onHomeKey(event: KeyboardEvent) {\n        const firstElement = <any>findSingle(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n        firstElement && focus(firstElement);\n        event.preventDefault();\n    }\n\n    onEndKey(event: KeyboardEvent) {\n        const nodes = <any>find(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n        const lastElement = nodes[nodes.length - 1];\n        focus(lastElement);\n        event.preventDefault();\n    }\n\n    onTabKey(event: KeyboardEvent) {\n        const rows = this.el.nativeElement ? [...find(this.el.nativeElement.parentNode, 'tr')] : undefined;\n\n        if (rows && isNotEmpty(rows)) {\n            const hasSelectedRow = rows.some((row) => getAttribute(row, 'data-p-highlight') || row.getAttribute('aria-selected') === 'true');\n            rows.forEach((row: any) => {\n                row.tabIndex = -1;\n            });\n\n            if (hasSelectedRow) {\n                const selectedNodes = rows.filter((node) => getAttribute(node, 'data-p-highlight') || node.getAttribute('aria-selected') === 'true');\n                (selectedNodes[0] as any).tabIndex = 0;\n\n                return;\n            }\n\n            (rows[0] as any).tabIndex = 0;\n        }\n    }\n\n    expand(event: Event) {\n        this.tt.toggleRowIndex = getIndex(this.el.nativeElement);\n        this.rowNode.node['expanded'] = true;\n\n        this.tt.updateSerializedValue();\n        this.tt.tableService.onUIUpdate(this.tt.value);\n        this.rowNode.node['children'] ? this.restoreFocus(this.tt.toggleRowIndex + 1) : this.restoreFocus();\n\n        this.tt.onNodeExpand.emit({\n            originalEvent: event,\n            node: this.rowNode.node\n        });\n    }\n\n    collapse(event: Event) {\n        this.rowNode.node['expanded'] = false;\n\n        this.tt.updateSerializedValue();\n        this.tt.tableService.onUIUpdate(this.tt.value);\n\n        this.tt.onNodeCollapse.emit({ originalEvent: event, node: this.rowNode.node });\n    }\n\n    focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant?) {\n        firstFocusableRow.tabIndex = '-1';\n        currentFocusedRow.tabIndex = '0';\n\n        focus(currentFocusedRow);\n    }\n\n    restoreFocus(index?) {\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                const container = this.tt.el?.nativeElement;\n                const tbody = findSingle(container, '[data-pc-section=\"tbody\"]');\n                const row = tbody?.children?.[<number>index || this.tt.toggleRowIndex || 0];\n                const rows = [...find(container, 'tr')];\n\n                rows &&\n                    rows.forEach((r: any) => {\n                        if (row && !row.isSameNode(r)) {\n                            r.tabIndex = -1;\n                        }\n                    });\n\n                if (row) {\n                    (row as HTMLElement).tabIndex = 0;\n                    (row as HTMLElement).focus();\n                }\n            }, 25);\n        });\n    }\n\n    ptmOptions() {\n        return {\n            context: {\n                selectable: this.treeTable?.rowHover || this.treeTable.selectionMode === 'row',\n                selected: this.treeTable.isSelected((<any>this.rowNode)?.node),\n                scrollable: this.treeTable?.scrollable,\n                rowNode: this.rowNode\n            }\n        };\n    }\n}\n\n@Component({\n    selector: 'p-treeTableToggler, p-treetabletoggler, p-treetable-toggler',\n    standalone: false,\n    template: `\n        <button\n            type=\"button\"\n            [class]=\"cx('toggler')\"\n            [pBind]=\"ptm('rowToggleButton')\"\n            (click)=\"onClick($event)\"\n            tabindex=\"-1\"\n            pRipple\n            [style.visibility]=\"rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'\"\n            [style.marginInlineStart]=\"rowNode.level * 16 + 'px'\"\n            [attr.data-pc-group-section]=\"'rowactionbutton'\"\n            [attr.aria-label]=\"toggleButtonAriaLabel\"\n        >\n            <ng-container *ngIf=\"!tt.togglerIconTemplate && !tt._togglerIconTemplate\">\n                <svg data-p-icon=\"chevron-down\" *ngIf=\"rowNode.node.expanded\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n                <svg data-p-icon=\"chevron-right\" *ngIf=\"!rowNode.node.expanded\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n            </ng-container>\n            <ng-template *ngTemplateOutlet=\"tt.togglerIconTemplate || tt._togglerIconTemplate; context: { $implicit: rowNode.node.expanded }\"></ng-template>\n        </button>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    providers: [TreeTableStyle],\n    hostDirectives: [Bind]\n})\nexport class TreeTableToggler extends BaseComponent {\n    hostName = 'TreeTable';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptm('toggler'));\n    }\n\n    @Input() rowNode: any;\n\n    _componentStyle = inject(TreeTableStyle);\n\n    constructor(public tt: TreeTable) {\n        super();\n    }\n\n    get toggleButtonAriaLabel() {\n        return this.config.translation ? (this.rowNode.expanded ? this.config.translation?.aria?.collapseRow : this.config.translation?.aria?.expandRow) : undefined;\n    }\n\n    onClick(event: Event) {\n        this.rowNode.node.expanded = !this.rowNode.node.expanded;\n\n        if (this.rowNode.node.expanded) {\n            this.tt.onNodeExpand.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        } else {\n            this.tt.onNodeCollapse.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        }\n\n        this.tt.updateSerializedValue();\n        this.tt.tableService.onUIUpdate(this.tt.value);\n\n        event.preventDefault();\n    }\n}\n\n@NgModule({\n    imports: [\n        CommonModule,\n        PaginatorModule,\n        Ripple,\n        Scroller,\n        SpinnerIcon,\n        ArrowDownIcon,\n        ArrowUpIcon,\n        SortAltIcon,\n        SortAmountUpAltIcon,\n        SortAmountDownIcon,\n        BadgeModule,\n        CheckIcon,\n        ChevronDownIcon,\n        ChevronRightIcon,\n        Checkbox,\n        SharedModule,\n        FormsModule,\n        BindModule\n    ],\n    exports: [\n        TreeTable,\n        SharedModule,\n        TreeTableToggler,\n        TTSortableColumn,\n        TTSortIcon,\n        TTResizableColumn,\n        TTRow,\n        TTReorderableColumn,\n        TTSelectableRow,\n        TTSelectableRowDblClick,\n        TTContextMenuRow,\n        TTCheckbox,\n        TTHeaderCheckbox,\n        TTEditableColumn,\n        TreeTableCellEditor,\n        Scroller\n    ],\n    declarations: [\n        TreeTable,\n        TreeTableToggler,\n        TTScrollableView,\n        TTBody,\n        TTSortableColumn,\n        TTSortIcon,\n        TTResizableColumn,\n        TTRow,\n        TTReorderableColumn,\n        TTSelectableRow,\n        TTSelectableRowDblClick,\n        TTContextMenuRow,\n        TTCheckbox,\n        TTHeaderCheckbox,\n        TTEditableColumn,\n        TreeTableCellEditor\n    ]\n})\nexport class TreeTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwfrB;AAED,MAAM,OAAO,GAAG;AACZ,IAAA,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK;QACpB,yBAAyB;AACzB,QAAA;YACI,uBAAuB,EAAE,QAAQ,CAAC,aAAa;AAC/C,YAAA,4BAA4B,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,UAAU;YAC/H,yBAAyB,EAAE,QAAQ,CAAC,UAAU;YAC9C,uBAAuB,EAAE,QAAQ,CAAC,gBAAgB;YAClD,2BAA2B,EAAE,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,KAAK,KAAK;YAC7F,6BAA6B,EAAE,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,YAAY,KAAK;AACnF;AACJ,KAAA;AACD,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,IAAI,EAAE,iCAAiC;AACvC,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,MAAM,EAAE,oBAAoB;AAC5B,IAAA,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;AACpH,IAAA,cAAc,EAAE,6BAA6B;IAC7C,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AACtB,QAAA,mBAAmB,EAAE,IAAI;QACzB,8BAA8B,EAAE,QAAQ,CAAC,UAAU;QACnD,6BAA6B,EAAE,QAAQ,CAAC,gBAAgB;QACxD,iCAAiC,EAAE,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,KAAK;KACjG,CAAC;AACF,IAAA,KAAK,EAAE,mBAAmB;IAC1B,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC/B,QAAA,mBAAmB,EAAE,QAAQ,CAAC,SAAS,EAAE;QACzC,2BAA2B,EAAE,QAAQ,CAAC;KACzC,CAAC;AACF,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,mBAAmB,EAAE,yBAAyB;AAC9C,IAAA,aAAa,EAAE,4BAA4B;AAC3C,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,QAAQ,EAAE,uBAAuB;AACjC,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,KAAK,EAAE,mBAAmB;IAC1B,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QACpB,0BAA0B,EAAE,QAAQ,CAAC;KACxC,CAAC;IACF,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAC/B,sCAAsC,EAAE,QAAQ,CAAC;KACpD,CAAC;AACF,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,gBAAgB,EAAE,gCAAgC;AAClD,IAAA,cAAc,EAAE,8BAA8B;AAC9C,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC3B,QAAA,2BAA2B,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;KAC5D,CAAC;AACF,IAAA,MAAM,EAAE,oBAAoB;AAC5B,IAAA,qBAAqB,EAAE,qCAAqC;AAC5D,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,cAAc,EAAE,6BAA6B;AAC7C,IAAA,UAAU,EAAE,yBAAyB;AACrC,IAAA,mBAAmB,EAAE,yBAAyB;AAC9C,IAAA,kBAAkB,EAAE,kCAAkC;AACtD,IAAA,oBAAoB,EAAE,oCAAoC;AAC1D,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,qBAAqB,EAAE,qCAAqC;AAC5D,IAAA,cAAc,EAAE,6BAA6B;AAC7C,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,qBAAqB,EAAE;CAC1B;AAGK,MAAO,cAAe,SAAQ,SAAS,CAAA;IACzC,IAAI,GAAG,WAAW;IAElB,KAAK,GAAG,KAAK;IAEb,OAAO,GAAG,OAAO;uGALR,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;AASD;;;;;;;;AAQG;IACS;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AACxB;;AAEG;AACH,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB;;AAEG;AACH,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,qBAA+B;AAC/B;;AAEG;AACH,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,kBAAyB;AACzB;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,0BAAwC;AACxC;;AAEG;AACH,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,oBAA6B;AAC7B;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,kCAAgD;AAChD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,4BAA4C;AAC5C;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,0BAAwC;AACxC;;AAEG;AACH,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,uBAAkC;AAClC;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,wBAAsC;AACtC;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,gCAAmD;AACnD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,8BAA+C;AAC/C;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,2BAA4C;AAC5C;;AAEG;AACH,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,2BAA0C;AAC1C;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,oBAA6B;AAC7B;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,qBAA+B;AAC/B;;AAEG;AACH,IAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,gCAAoD;AACpD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,yBAAsC;AACtC;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,kCAAuD;AACvD;;AAEG;AACH,IAAA,gBAAA,CAAA,sBAAA,CAAA,GAAA,oCAA2D;AAC3D;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,+BAAkD;AAClD;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,+BAAkD;AAClD;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,wBAA6C;AACjD,CAAC,EAjJW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;AC7f5B,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAY,oBAAoB,CAAC;MAGjE,gBAAgB,CAAA;AACjB,IAAA,UAAU,GAAG,IAAI,OAAO,EAAgC;AACxD,IAAA,eAAe,GAAG,IAAI,OAAO,EAAE;AAC/B,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO;AACtC,IAAA,cAAc,GAAG,IAAI,OAAO,EAAO;AACnC,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAAO;AAE/C,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC5C,IAAA,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACtD,IAAA,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAC1D,IAAA,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACpD,IAAA,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAE5D,IAAA,MAAM,CAAC,QAAsC,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC;IAEA,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,aAAa,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;uGA/BS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;AAmCD;;;AAGG;AA4JG,MAAO,SAAU,SAAQ,aAAmC,CAAA;IAC9D,aAAa,GAAG,WAAW;AAE3B,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;IAExC,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE;AACA;;;AAGG;AACM,IAAA,OAAO;AAChB;;;;AAIG;AACM,IAAA,UAAU;AACnB;;;AAGG;AACM,IAAA,UAAU;AACnB;;;AAGG;AACM,IAAA,eAAe;AACxB;;;AAGG;AACqC,IAAA,UAAU;AAClD;;;AAGG;IACqC,IAAI,GAAY,KAAK;AAC7D;;;AAGG;IACqC,cAAc,GAAY,IAAI;AACtE;;;AAGG;AACqC,IAAA,SAAS;AACjD;;;AAGG;AACoC,IAAA,IAAI;AAC3C;;;AAGG;IACoC,KAAK,GAAW,CAAC;AACxD;;;AAGG;IACoC,SAAS,GAAW,CAAC;AAC5D;;;AAGG;AACM,IAAA,kBAAkB;AAC3B;;;AAGG;IACqC,mBAAmB,GAAY,IAAI;AAC3E;;;AAGG;IACM,iBAAiB,GAA8B,QAAQ;AAChE;;;AAGG;AACM,IAAA,mBAAmB;AAC5B;;;AAGG;AACM,IAAA,yBAAyB;AAClC;;;AAGG;IACM,yBAAyB,GAAW,+BAA+B;AAC5E;;;AAGG;AACqC,IAAA,qBAAqB;AAC7D;;;AAGG;AACqC,IAAA,sBAAsB;AAC9D;;;AAGG;IACqC,iBAAiB,GAAY,IAAI;AACzE;;;AAGG;IACqC,aAAa,GAAY,IAAI;AACrE;;;AAGG;IACoC,gBAAgB,GAAW,CAAC;AACnE;;;AAGG;IACM,QAAQ,GAA0B,QAAQ;AACnD;;;AAGG;IACqC,eAAe,GAAY,IAAI;AACvE;;;AAGG;AACqC,IAAA,UAAU;AAClD;;;AAGG;AACM,IAAA,aAAa;AACtB;;;AAGG;AACM,IAAA,oBAAoB;AAC7B;;;AAGG;IACM,wBAAwB,GAAW,UAAU;AACtD;;;AAGG;AACM,IAAA,OAAO;AAChB;;;AAGG;IACqC,gBAAgB,GAAwB,KAAK;AACrF;;;AAGG;IACM,kBAAkB,GAAW,YAAY;AAClD;;;AAGG;AACqC,IAAA,QAAQ;AAChD;;;AAGG;AACqC,IAAA,OAAO;AAC/C;;;AAGG;AACM,IAAA,WAAW;AACpB;;;AAGG;IACqC,UAAU,GAAY,IAAI;AAClE;;;AAGG;AACqC,IAAA,UAAU;AAClD;;;AAGG;AACM,IAAA,YAAY;AACrB;;;AAGG;AACqC,IAAA,aAAa;AACrD;;;AAGG;AACoC,IAAA,qBAAqB;AAC5D;;;AAGG;AACM,IAAA,oBAAoB;AAC7B;;;AAGG;IACoC,kBAAkB,GAAW,GAAG;AACvE;;;AAGG;AACM,IAAA,WAAW;AACpB;;;AAGG;AACM,IAAA,aAAa;AACtB;;;AAGG;AACqC,IAAA,gBAAgB;AACxD;;;AAGG;IACM,gBAAgB,GAAW,KAAK;AACzC;;;AAGG;AACqC,IAAA,kBAAkB;AAC1D;;;AAGG;AACM,IAAA,WAAW;AACpB;;;AAGG;IACM,UAAU,GAAa,CAAC,KAAa,EAAE,IAAS,KAAK,IAAI;AAClE;;;AAGG;IACM,OAAO,GAAgD,EAAE;AAClE;;;AAGG;AACM,IAAA,kBAAkB;AAC3B;;;AAGG;IACoC,WAAW,GAAW,GAAG;AAChE;;;AAGG;IACM,UAAU,GAAW,SAAS;AACvC;;;AAGG;AACM,IAAA,YAAY;AACrB;;;AAGG;AACM,IAAA,eAAe;AACxB;;;AAGG;AACH,IAAA,IAAa,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC7B;IACA,IAAI,YAAY,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;QACxB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;IAC9D;AACA;;;AAGG;AACH,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IAC1B;IACA,IAAI,SAAS,CAAC,GAA8B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;IACzB;AACA;;;;AAIG;AACH,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IAC1B;IACA,IAAI,SAAS,CAAC,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;IACzB;AACA;;;;AAIG;AACH,IAAA,IAAa,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC9B;IACA,IAAI,aAAa,CAAC,GAAkC,EAAA;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG;IAC7B;AACA;;;;AAIG;AACH,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IAC1B;IACA,IAAI,SAAS,CAAC,GAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;IACzB;AACA;;;;AAIG;AACH,IAAA,IAAa,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACtB;IACA,IAAI,KAAK,CAAC,GAAgC,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;IACrB;AACA;;;;;AAKG;AACH,IAAA,IAAa,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAI,gBAAgB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC;IAC3G;AACA;;;AAGG;AACH,IAAA,IAAa,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC9B;IACA,IAAI,aAAa,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IACtD;AACA;;;;AAIG;IACqC,aAAa,GAAY,KAAK;AACtE;;;;AAIG;AACO,IAAA,eAAe,GAAmE,IAAI,YAAY,EAAoD;AAChK;;;;AAIG;AACO,IAAA,0BAA0B,GAAgC,IAAI,YAAY,EAAiB;AACrG;;;;AAIG;AACO,IAAA,QAAQ,GAAuC,IAAI,YAAY,EAAwB;AACjG;;;;AAIG;AACO,IAAA,YAAY,GAA2C,IAAI,YAAY,EAA4B;AAC7G;;;;AAIG;AACO,IAAA,cAAc,GAA6C,IAAI,YAAY,EAA8B;AACnH;;;;AAIG;AACO,IAAA,MAAM,GAA0C,IAAI,YAAY,EAA2B;AACrG;;;;AAIG;AACO,IAAA,MAAM,GAAsB,IAAI,YAAY,EAAO;AAC7D;;;;AAIG;AACO,IAAA,UAAU,GAAyC,IAAI,YAAY,EAA0B;AACvG;;;;AAIG;AACO,IAAA,YAAY,GAAqC,IAAI,YAAY,EAAsB;AACjG;;;;AAIG;AACO,IAAA,WAAW,GAA0C,IAAI,YAAY,EAA2B;AAC1G;;;;AAIG;AACO,IAAA,YAAY,GAA8C,IAAI,YAAY,EAA+B;AACnH;;;;AAIG;AACO,IAAA,YAAY,GAAgC,IAAI,YAAY,EAAiB;AACvF;;;;AAIG;AACO,IAAA,cAAc,GAA6C,IAAI,YAAY,EAA8B;AACnH;;;;AAIG;AACO,IAAA,mBAAmB,GAAkD,IAAI,YAAY,EAAmC;AAClI;;;;AAIG;AACO,IAAA,sBAAsB,GAAqD,IAAI,YAAY,EAAsC;AAC3I;;;;AAIG;AACO,IAAA,UAAU,GAAqC,IAAI,YAAY,EAAsB;AAC/F;;;;AAIG;AACO,IAAA,cAAc,GAAqC,IAAI,YAAY,EAAsB;AACnG;;;;AAIG;AACO,IAAA,YAAY,GAAqC,IAAI,YAAY,EAAsB;AACjG;;;;AAIG;AACO,IAAA,mBAAmB,GAAsB,IAAI,YAAY,EAAE;AAE1C,IAAA,qBAAqB;AAEf,IAAA,2BAA2B;AAEzB,IAAA,6BAA6B;AAE5C,IAAA,cAAc;AAEL,IAAA,mBAAmB;AAEb,IAAA,yBAAyB;IAE5D,MAAM,GAAgC,EAAE;IAExC,iBAAiB,GAAW,EAAE;AAE9B,IAAA,cAAc;AAEd,IAAA,eAAe;IAEf,aAAa,GAAW,CAAC;AAEzB,IAAA,cAAc;AAEd,IAAA,UAAU;IAEV,UAAU,GAAW,CAAC;AAEtB,IAAA,aAAa;AAEb,IAAA,aAAa;AAEqC,IAAA,iBAAiB;AACnE,IAAA,gBAAgB;AAEiC,IAAA,gBAAgB;AACjE,IAAA,eAAe;AAEiC,IAAA,eAAe;AAC/D,IAAA,cAAc;AAEgC,IAAA,aAAa;AAC3D,IAAA,YAAY;AAEoC,IAAA,eAAe;AAC/D,IAAA,cAAc;AAEmC,IAAA,gBAAgB;AACjE,IAAA,eAAe;AAEuC,IAAA,qBAAqB;AAC3E,IAAA,oBAAoB;AAEmC,IAAA,sBAAsB;AAC7E,IAAA,qBAAqB;AAEmC,IAAA,uBAAuB;AAC/E,IAAA,sBAAsB;AAEyC,IAAA,8BAA8B;AAC7F,IAAA,6BAA6B;AAEyB,IAAA,qBAAqB;AAC3E,IAAA,oBAAoB;AAEgC,IAAA,mBAAmB;AACvE,IAAA,kBAAkB;AAEoC,IAAA,qBAAqB;AAC3E,IAAA,oBAAoB;AAEoC,IAAA,uBAAuB;AAC/E,IAAA,sBAAsB;AAE+B,IAAA,oBAAoB;AACzE,IAAA,mBAAmB;AAE6C,IAAA,+BAA+B;AAC/F,IAAA,8BAA8B;AAEoC,IAAA,iCAAiC;AACnG,IAAA,gCAAgC;AAEkB,IAAA,iBAAiB;AACnE,IAAA,gBAAgB;AAEsC,IAAA,qBAAqB;AAC3E,IAAA,oBAAoB;AAEwC,IAAA,2BAA2B;AACvF,IAAA,0BAA0B;AAE2B,IAAA,oBAAoB;AACzE,IAAA,mBAAmB;AAEiD,IAAA,mCAAmC;AACvG,IAAA,kCAAkC;AAEiC,IAAA,kCAAkC;AACrG,IAAA,iCAAiC;AAEsC,IAAA,sCAAsC;AAC7G,IAAA,qCAAqC;AAE8B,IAAA,kCAAkC;AACrG,IAAA,iCAAiC;AAEe,IAAA,eAAe;AAC/D,IAAA,cAAc;AAEd,IAAA,kBAAkB;AAElB,IAAA,gBAAgB;AAEhB,IAAA,iBAAiB;AAEjB,IAAA,aAAa;AAEb,IAAA,YAAY;AAEZ,IAAA,iCAAiC;AAEjC,IAAA,UAAU;IAEV,YAAY,GAAQ,EAAE;AAEtB,IAAA,UAAU;AAEV,IAAA,WAAW;AAEX,IAAA,eAAe;AAEf,IAAA,gBAAgB;AAEhB,IAAA,gBAAgB;AAEhB,IAAA,oBAAoB;AAEpB,IAAA,WAAW;AAEX,IAAA,cAAc;IAEd,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;AAEgC,IAAA,SAAS;IAEzC,kBAAkB,GAAA;QACb,IAAI,CAAC,SAAsC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1D,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AAClB,gBAAA,KAAK,SAAS;AACV,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ;oBACpC;AAEJ,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;oBACnC;AAEJ,gBAAA,KAAK,MAAM;AACP,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;oBACjC;AAEJ,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;oBACnC;AAEJ,gBAAA,KAAK,SAAS;AACV,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ;oBACpC;AAEJ,gBAAA,KAAK,UAAU;AACX,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;oBACrC;AAEJ,gBAAA,KAAK,cAAc;AACf,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ;oBACzC;AAEJ,gBAAA,KAAK,eAAe;AAChB,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ;oBAC1C;AAEJ,gBAAA,KAAK,gBAAgB;AACjB,oBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ;oBAC3C;AAEJ,gBAAA,KAAK,uBAAuB;AACxB,oBAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,QAAQ;oBAClD;AAEJ,gBAAA,KAAK,cAAc;AACf,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ;oBACzC;AAEJ,gBAAA,KAAK,YAAY;AACb,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ;oBACvC;AAEJ,gBAAA,KAAK,cAAc;AACf,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ;oBACzC;AAEJ,gBAAA,KAAK,gBAAgB;AACjB,oBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ;oBAC3C;AAEJ,gBAAA,KAAK,aAAa;AACd,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ;oBACxC;AAEJ,gBAAA,KAAK,wBAAwB;AACzB,oBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,QAAQ;oBACnD;AAEJ,gBAAA,KAAK,0BAA0B;AAC3B,oBAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,QAAQ;oBACrD;AAEJ,gBAAA,KAAK,UAAU;AACX,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;oBACrC;AAEJ,gBAAA,KAAK,cAAc;AACf,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ;oBACzC;AAEJ,gBAAA,KAAK,oBAAoB;AACrB,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,QAAQ;oBAC/C;AAEJ,gBAAA,KAAK,aAAa;AACd,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ;oBACxC;AAEJ,gBAAA,KAAK,4BAA4B;AAC7B,oBAAA,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,QAAQ;oBACvD;AAEJ,gBAAA,KAAK,2BAA2B;AAC5B,oBAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,QAAQ;oBACtD;AAEJ,gBAAA,KAAK,+BAA+B;AAChC,oBAAA,IAAI,CAAC,qCAAqC,GAAG,IAAI,CAAC,QAAQ;oBAC1D;AAEJ,gBAAA,KAAK,2BAA2B;AAC5B,oBAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,QAAQ;oBACtD;AAEJ,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;oBACnC;;AAEZ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,IAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEvC,IAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAErB,IAAA,SAAS,CAAC,YAA2B,EAAA;AACjC,QAAA,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY;AAE7C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAExD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS;oBAAE,IAAI,CAAC,UAAU,EAAE;qBAC7D,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,aAAa;oBAAE,IAAI,CAAC,YAAY,EAAE;qBAC1E,IAAI,IAAI,CAAC,SAAS,EAAE;;oBAErB,IAAI,CAAC,OAAO,EAAE;YACtB;YAEA,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C;AAEA,QAAA,IAAI,YAAY,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY;;YAGrD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBAC5B,IAAI,CAAC,UAAU,EAAE;gBACrB;YACJ;QACJ;AAEA,QAAA,IAAI,YAAY,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY;;YAGrD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBAC5B,IAAI,CAAC,UAAU,EAAE;gBACrB;YACJ;QACJ;AAEA,QAAA,IAAI,YAAY,CAAC,aAAa,EAAE;YAC5B,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY;AAC7D,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,YAAY,EAAE;YACvB;QACJ;AAEA,QAAA,IAAI,YAAY,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY;AAErD,YAAA,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBACzC,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;YACzC;AACA,YAAA,IAAI,CAAC,iCAAiC,GAAG,KAAK;QAClD;IACJ;IAEA,qBAAqB,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAEzB,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,kBAAkB,EAAE;;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7E;AAEA,IAAA,cAAc,CAAC,MAA+B,EAAE,KAA2B,EAAE,KAAuB,EAAE,OAA0B,EAAA;AAC5H,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,YAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAkB,MAAM;AACnC,gBAAA,MAAM,OAAO,GAAG;AACZ,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;iBACvD;AACY,gBAAA,IAAI,CAAC,eAAgB,CAAC,IAAI,CAAgB,OAAO,CAAC;gBAE/D,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAU,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;gBAChF;YACJ;QACJ;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;AAExC,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,GAAW,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AACpD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,EAAE;AACN,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAO,IAAI;AACjB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE;AACZ,qBAAA,CAAC;AAEF,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;gBACrD;YACJ;QACJ;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;YACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAC9B,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5E;YACJ;iBAAO;gBACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAO,IAAI,CAAC,UAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9F;QACJ;IACJ;AAEA,IAAA,YAAY,CAAC,KAA8B,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,GAAW,KAAK,CAAC,KAAK;AAChC,QAAA,IAAI,CAAC,IAAI,GAAW,KAAK,CAAC,IAAI;QAE9B,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;YAC7D,IAAI,CAAC,kBAAkB,EAAE;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;AAEA,IAAA,IAAI,CAAC,KAAyB,EAAA;AAC1B,QAAA,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa;AAEvC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK;YAC7B,IAAI,CAAC,UAAU,EAAE;YAEjB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE;gBACzC,IAAI,CAAC,cAAc,EAAE;YACzB;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC9B,IAAI,OAAO,GAAmB,aAAc,CAAC,OAAO,IAAoB,aAAc,CAAC,OAAO;YAC9F,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAS,KAAK,CAAC,KAAK,CAAC;YAEpD,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,OAAO,EAAE;oBACV,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,EAAU,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;oBAElF,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE;wBACzC,IAAI,CAAC,cAAc,EAAE;oBACzB;gBACJ;qBAAO;oBACH,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACxC;YACJ;iBAAO;gBACH,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACjC,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE;oBAExB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE;wBACzC,IAAI,CAAC,cAAc,EAAE;oBACzB;gBACJ;AACa,gBAAA,IAAI,CAAC,aAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAU,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvG;YAEA,IAAI,CAAC,YAAY,EAAE;QACvB;IACJ;IAEA,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBAClB,IAAI,CAAC,OAAO,EAAE;gBAClB;YACJ;AAEA,YAAA,IAAI,QAAQ,GAAa;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,IAAI,CAAC;aACf;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,qBAAqB,EAAE;QAChC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAiB,EAAA;QACvB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,KAAK,EAAU,IAAI,CAAC,SAAS;gBAC7B,KAAK,EAAE,IAAI,CAAC;AACf,aAAA,CAAC;QACN;aAAO;YACH,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxB,gBAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACzD,gBAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACzD,IAAI,MAAM,GAAW,CAAC;AAEtB,gBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC,CAAC;AAC5C,qBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC;AAChD,qBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC;qBAChD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,oBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oBACjI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAE5D,gBAAA,OAAO,IAAI,CAAC,SAAS,GAAG,MAAM;AAClC,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAsB,CAAC;QAC/C;IACJ;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAElC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBAClB,IAAI,CAAC,OAAO,EAAE;gBAClB;YACJ;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACb,aAAa,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD;IACJ;AAEA,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,aAAa,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;QACN;aAAO;YACH,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxB,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAc,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAC/E,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAsB,CAAC;QACvD;IACJ;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAE,KAAoB,EAAE,aAAyB,EAAE,KAAa,EAAA;AAC/F,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,YAAA,OAAO,CAAC;QACZ;AAEA,QAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrE,QAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACrE,IAAI,MAAM,GAAW,CAAC;AAEtB,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC,CAAC;AAC5C,aAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC;AAChD,aAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC;QACrD,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,YAAY,MAAM,EAAE;YACvD,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,IAAI,MAAM,EAAE;gBAC1C,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAClG;QACJ;aAAO;AACH,YAAA,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;QACrC;AAEA,QAAA,IAAI,MAAM,IAAI,MAAM,EAAE;AAClB,YAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC7G;QAEA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM;IAC9C;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACjD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;AACvC,oBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAChC;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC5B,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;QACrD;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;YACrC,IAAI,MAAM,GAAG,KAAK;AAClB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;wBACtC,MAAM,GAAG,IAAI;wBACb;oBACJ;gBACJ;YACJ;AACA,YAAA,OAAO,MAAM;QACjB;IACJ;IAEA,sBAAsB,GAAA;QAClB,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI;YAC1F,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa;SAC3C;IACL;AAEA,IAAA,cAAc,CAAC,KAA6B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,GAAG,KAAK;AACR,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC5B,SAAA,CAAC;IACN;AACA;;;AAGG;IACI,cAAc,GAAA;QACjB,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;;YAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAClC;AACA;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAoB,CAAC,oBAAoB,CAAS,KAAK,CAAC;QACvE;AAEA,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAoB,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAC/D;IACJ;AACA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrD;AAEA,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrD;IACJ;IAEA,OAAO,GAAA;QACH,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;QAC3C,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;IAC3C;IAEA,mBAAmB,GAAA;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C;AAEA,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,aAAa,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,IAAI;AAC/D,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU;QACzF,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,aAAa,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,IAAI;QAC/D,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC;AACvE,QAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,qBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,GAAG,IAAI;AACnG,QAAA,IAAI,CAAC,qBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI;QAC9D,IAAI,CAAC,qBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU,GAAG,IAAI;QAE7H,IAAI,CAAC,qBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;IAClF;IAEA,iBAAiB,CAAC,KAAiB,EAAE,MAAW,EAAA;AAC5C,QAAA,IAAI,KAAK,GAAgB,IAAI,CAAC,qBAAsB,CAAC,aAAa,CAAC,UAAU,GAAW,IAAI,CAAC,kBAAkB;AAC/G,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW;AACpC,QAAA,IAAI,cAAc,GAAG,WAAW,GAAG,KAAK;QACxC,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;QAE1C,IAAI,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;AACjC,gBAAA,IAAI,UAAU,GAAG,MAAM,CAAC,kBAAkB;AAC1C,gBAAA,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;AAC7B,oBAAA,UAAU,GAAG,UAAU,CAAC,kBAAkB;gBAC9C;gBAEA,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,eAAe,GAAG,UAAU,CAAC,WAAW,GAAG,KAAK;oBACpD,IAAI,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;oBAExD,IAAI,cAAc,GAAG,EAAE,IAAI,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACvE,wBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;4BACjB,IAAI,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC1D,4BAAA,IAAI,mBAAmB,GAAQ,UAAU,CAAC,cAAc,EAAE,0CAA0C,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,wCAAwC,CAAC;4BAC7K,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;4BACxG,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;AACxG,4BAAA,IAAI,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;4BAExC,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;4BAC9F,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;4BAC5F,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;wBAClG;6BAAO;4BACH,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;4BAC1C,IAAI,UAAU,EAAE;gCACZ,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI;4BACnD;wBACJ;oBACJ;gBACJ;YACJ;AAAO,iBAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC1D,oBAAA,IAAI,cAAc,GAAQ,UAAU,CAAC,cAAc,EAAE,oCAAoC,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,kCAAkC,CAAC;oBAC5J,IAAI,gBAAgB,GAAQ,UAAU,CAAC,cAAc,EAAE,sCAAsC,CAAC;oBAC9F,IAAI,gBAAgB,GAAQ,UAAU,CAAC,cAAc,EAAE,sCAAsC,CAAC;AAC9F,oBAAA,IAAI,mBAAmB,GAAQ,UAAU,CAAC,cAAc,EAAE,0CAA0C,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,wCAAwC,CAAC;oBAC7K,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;oBACxG,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;AACxG,oBAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;AAChF,oBAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBACpF,IAAI,qBAAqB,EAAE;AACvB,wBAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBACxF;AACA,oBAAA,IAAI,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAExC,oBAAA,MAAM,wBAAwB,GAAG,MAAM,GAAG,mBAAmB,CAAC,WAAW,GAAG,KAAK,GAAG,cAAc;AAClG,oBAAA,MAAM,0BAA0B,GAAG,MAAM,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,cAAc;oBACtG,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,IAAI,wBAAwB;oBAE5F,IAAI,QAAQ,GAAG,CAAC,SAAsB,EAAE,KAAkB,EAAE,KAAa,EAAE,qBAA8B,KAAI;AACzG,wBAAA,IAAI,SAAS,IAAI,KAAK,EAAE;4BACpB,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,GAAG,KAAK,GAAG,uBAAuB,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,MAAM;4BAC/G,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI;wBACpC;AACJ,oBAAA,CAAC;oBAED,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;oBAC9F,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,CAAC;oBACpG,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,CAAC;oBAEpG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;oBACnF,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;oBACjF,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;gBACvF;qBAAO;oBACU,IAAI,CAAC,cAAe,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBAC3H,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;oBAC1C,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK;AACtD,oBAAA,IAAI,CAAC,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;gBAC3E;YACJ;AAEA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC;QACN;QAEC,IAAI,CAAC,qBAAoC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QAE/E,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC;AACjE,QAAA,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;IAC1E;AAEA,IAAA,wBAAwB,CAAC,MAAW,EAAA;QAChC,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa;YACjC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,oCAAoC,CAAC,EAAE;AACxE,gBAAA,MAAM,GAAG,MAAM,CAAC,aAAa;YACjC;AAEA,YAAA,OAAO,MAAM;QACjB;aAAO;AACH,YAAA,OAAO,IAAI;QACf;IACJ;AAEA,IAAA,cAAc,CAAC,KAA4B,EAAE,iBAAmC,EAAE,cAAgC,EAAE,eAAiC,EAAA;QACjJ,IAAI,KAAK,EAAE;YACP,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;YAEnF,IAAI,QAAQ,EAAE;gBACV,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAS,iBAAiB,CAAC;AACtD,gBAAA,IAAI,OAAO,GAAG,GAAG,CAAC,kBAAkB;gBACtB,GAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;AAEtD,gBAAA,IAAI,OAAO,IAAI,eAAe,EAAE;oBACd,OAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI;gBAC/D;YACJ;iBAAO;AACH,gBAAA,MAAM,mEAAmE;YAC7E;QACJ;IACJ;IAEA,iBAAiB,CAAC,KAAgB,EAAE,aAAkB,EAAA;QAClD,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC;QACnG,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,IAAI,CAAC,6BAA6B,EAAE,aAAa,CAAC;AACvG,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAC5B,KAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD;IAEA,iBAAiB,CAAC,KAAgB,EAAE,UAAe,EAAA;QAC/C,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;YAC7D,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,eAAe,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC;AAC5D,YAAA,IAAI,gBAAgB,GAAQ,SAAS,CAAC,UAAU,CAAC;AAEjD,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;gBAClC,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI;gBAC7D,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG;gBAC1D,IAAI,YAAY,GAAG,gBAAgB,CAAC,IAAI,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC;gBAExD,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,IAAY,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI;gBACpJ,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,IAAI;AAEtJ,gBAAA,IAAI,KAAK,CAAC,KAAK,GAAG,YAAY,EAAE;oBACf,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;oBACtJ,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;AACrK,oBAAA,IAAI,CAAC,YAAY,GAAG,CAAC;gBACzB;qBAAO;oBACU,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;oBAC7H,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;AAC5I,oBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC1B;gBAEa,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;gBACvE,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;YAC1F;iBAAO;AACG,gBAAA,KAAM,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;YACjD;QACJ;IACJ;AAEA,IAAA,iBAAiB,CAAC,KAAgB,EAAA;QAC9B,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE;YAC/C,KAAK,CAAC,cAAc,EAAE;YACT,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACtE,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACzF;IACJ;IAEA,YAAY,CAAC,KAAgB,EAAE,UAAe,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC;YACtF,IAAI,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC;AAC9E,YAAA,IAAI,SAAS,GAAG,SAAS,IAAI,SAAS;AACtC,YAAA,IAAI,SAAS,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE;gBACpI,SAAS,GAAG,KAAK;YACrB;AAEA,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;AAC/D,gBAAA,SAAS,GAAG,SAAS,GAAG,CAAC;YAC7B;AAEA,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;AAChE,gBAAA,SAAS,GAAG,SAAS,GAAG,CAAC;YAC7B;YAEA,IAAI,SAAS,EAAE;gBACX,YAAY,CAAQ,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;AAEvD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,IAAI,CAAC;AACjB,iBAAA,CAAC;YACN;YAEa,IAAI,CAAC,2BAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACtE,IAAI,CAAC,6BAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACpF,YAAA,IAAI,CAAC,aAAqB,CAAC,SAAS,GAAG,KAAK;AAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC5B;IACJ;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;QACrB,IAAI,UAAU,GAAiB,KAAK,CAAC,aAAa,CAAC,MAAO,CAAC,QAAQ;QACnE,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACjH;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;AAC7C,YAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;YAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAO,OAAQ,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB;YACnE,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAiB,OAAO,CAAC,IAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;YAEnH,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,aAAa,GAAkB,KAAK,CAAC,aAAa;gBACtD,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;AAE5D,gBAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,wBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC;yBAAO;wBACH,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAkB,EAAE,CAAS,KAAK,CAAC,IAAI,cAAc,CAAC;wBAC/F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBACzC,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;AAEA,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;wBACrB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,IAAI,EAAiB,OAAO,CAAC,IAAI;AACjC,wBAAA,IAAI,EAAE;AACT,qBAAA,CAAC;gBACN;qBAAO;AACH,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI;wBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBACvC,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;AAAO,yBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;wBACvC,IAAI,OAAO,EAAE;4BACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;wBAC1C;6BAAO;AACH,4BAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;wBAC1B;AAEA,wBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC;wBACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBACzC,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;AAEA,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;wBACnB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,wBAAA,IAAI,EAAE,KAAK;wBACX,KAAK,EAAQ,KAAM,CAAC;AACvB,qBAAA,CAAC;gBACN;YACJ;iBAAO;AACH,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;oBACjC,IAAI,QAAQ,EAAE;AACV,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,wBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;wBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;4BACrB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAiB,OAAO,CAAC,IAAI;AACjC,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;oBACN;yBAAO;AACH,wBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI;wBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;4BACnB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;gBACJ;AAAO,qBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;oBAC1C,IAAI,QAAQ,EAAE;wBACV,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAkB,EAAE,CAAS,KAAK,CAAC,IAAI,cAAc,CAAC;wBAC/F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;4BACrB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;yBAAO;wBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACrF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;4BACnB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;gBACJ;YACJ;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACzC;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;AAEA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;AAEA,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;YAE/B,MAAM,eAAe,GAAG,MAAK;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,MAAK;AACjC,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,oBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE;AACtC,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AACzC,gBAAA,CAAC;AACL,YAAA,CAAC;AAED,YAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,UAAU,EAAE;AAC9C,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AACrC,gBAAA,eAAe,EAAE;AACjB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACrF;AAAO,iBAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,OAAO,EAAE;AAClD,gBAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;gBAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;gBAE1F,IAAI,CAAC,QAAQ,EAAE;AACX,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,wBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC;AAAO,yBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;AACvC,wBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC;wBACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC7C;oBAEA,IAAI,YAAY,EAAE;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;oBACvC;gBACJ;AAEA,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AAErC,gBAAA,eAAe,EAAE;AACjB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACrF;QACJ;IACJ;AAEA,IAAA,sBAAsB,CAAC,KAAU,EAAA;;QAE7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;AACrC,QAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;AAC7C,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAEpC,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YACjD;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClE;aAAO;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC;AACvC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAChD;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAChE;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACzC;IAEA,uBAAuB,CAAC,KAAY,EAAE,KAAc,EAAA;;QAEhD,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAEnD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;QAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;AAErC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9E;AAEA,IAAA,SAAS,CAAC,OAAgB,EAAA;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAE3C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACnB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC9C;YACJ;QACJ;aAAO;;AAEH,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACnB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC;gBACA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YACrD;QACJ;IACJ;IAEA,oBAAoB,CAAC,IAAmB,EAAE,MAAe,EAAA;;QAErD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACvC,IAAI,kBAAkB,GAAW,CAAC;YAClC,IAAI,oBAAoB,GAAY,KAAK;YACzC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAE1F,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAAE,oBAAA,kBAAkB,EAAE;qBAC3C,IAAI,KAAK,CAAC,eAAe;oBAAE,oBAAoB,GAAG,IAAI;YAC/D;YAEA,IAAI,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtD,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AACnD,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;gBAC5B,IAAI,YAAY,EAAE;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;gBACvC;YACJ;iBAAO;gBACH,IAAI,CAAC,MAAM,EAAE;oBACT,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3C,oBAAA,IAAI,KAAK,IAAI,CAAC,EAAE;wBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC;wBAE5E,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;gBACJ;AAEA,gBAAA,IAAI,oBAAoB,KAAK,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAE,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;AAC1H,oBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YACrC;QACJ;AAEA,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;QAC7C;IACJ;IAEA,sBAAsB,CAAC,IAAmB,EAAE,MAAe,EAAA;;QAEvD,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAE1F,QAAA,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACnD,IAAI,YAAY,EAAE;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;YACvC;QACJ;aAAO,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC;YAC5E,IAAI,YAAY,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAC1C;QACJ;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;YAC9C;QACJ;IACJ;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;;AAE1B,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAChC,oBAAA,OAAO,IAAI,CAAC,SAAS,CAAC;gBAC1B;qBAAO;AACH,oBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS;gBACrF;YACJ;iBAAO;AACH,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;oBACzE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjD;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,cAAc,CAAC,IAAI,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,KAAK;IACtH;AAEA,IAAA,qBAAqB,CAAC,IAAI,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GAAG,KAAK;IAC7H;AAEA,IAAA,OAAO,CAAC,IAAI,EAAA;AACR,QAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IAC7F;AAEA,IAAA,cAAc,CAAC,KAAK,EAAA;QAChB,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK;AAC7C,QAAA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YACxC;YAEA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACrD;aAAO;YACH,IAAI,CAAC,sBAAsB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACzC;IAEA,aAAa,CAAC,IAAI,EAAE,KAAK,EAAA;QACrB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACrF;aAAO;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD;QAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;YACpC;QACJ;IACJ;IAEA,WAAW,CAAC,IAAI,EAAE,KAAK,EAAA;QACnB,IAAI,iBAAiB,GAAG,CAAC;QACzB,IAAI,oBAAoB,GAAG,KAAK;AAEhC,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;AAAE,gBAAA,iBAAiB,EAAE;iBAC9G,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc;gBAAE,oBAAoB,GAAG,IAAI;QAC3I;QAEA,IAAI,KAAK,IAAI,iBAAiB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACrF;aAAO;YACH,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD;AAEA,YAAA,IAAI,oBAAoB,KAAK,iBAAiB,GAAG,CAAC,IAAI,iBAAiB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;;gBAC/K,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;QAC3F;AAEA,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;QACxB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QACnC;IACJ;AAEA,IAAA,oBAAoB,CAAC,IAAS,EAAA;AAC1B,QAAA,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;oBACtC,KAAK,GAAG,CAAC;oBACT;gBACJ;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEA,qBAAqB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;IAC1C;IAEA,uBAAuB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;IAC5C;IAEA,MAAM,CAAC,KAAoB,EAAE,KAAoB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IACrH;AAEA,IAAA,MAAM,CAAC,KAAwB,EAAE,KAAa,EAAE,SAAiB,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QACpC;QAEA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;QAChE;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;YACjC,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAC7B,QAAA,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC;IACxB;IAEA,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAA;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC3C;AAEA,IAAA,aAAa,CAAC,MAAW,EAAA;QACrB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AACtH,gBAAA,OAAO,KAAK;QACrB;AACA,QAAA,OAAO,IAAI;IACf;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb;YACJ;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC1D;YACJ;iBAAO;AACH,gBAAA,IAAI,uBAAuB;AAC3B,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB;AAAE,wBAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;;wBAC3I,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO;gBAC1E;AAEA,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,QAAQ;gBACjD,IAAI,cAAc,GAAG,KAAK;AAE1B,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACzB,oBAAA,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE;oBAC1B,IAAI,UAAU,GAAG,IAAI;oBACrB,IAAI,WAAW,GAAG,KAAK;AACvB,oBAAA,IAAI,iBAAiB;AAErB,oBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3B,wBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,QAAQ,EAAE;4BACxD,IAAI,UAAU,GAAmB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;4BACnD,IAAI,WAAW,GAAG,IAAI;AACtB,4BAAA,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK;AAClC,4BAAA,IAAI,eAAe,GAAG,UAAU,CAAC,SAAS,IAAI,YAAY;4BAC1D,IAAI,gBAAgB,GAAS,IAAI,CAAC,aAAc,CAAC,OAAO,CAAC,eAAe,CAAC;4BACzE,iBAAiB,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE;4BAChF,IACI,CAAC,YAAY,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;iCAC3H,CAAC,YAAY,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChI;gCACE,UAAU,GAAG,KAAK;4BACtB;4BAEA,IAAI,CAAC,UAAU,EAAE;gCACb;4BACJ;wBACJ;oBACJ;AAEA,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,uBAAuB,EAAE;AACnE,wBAAA,IAAI,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE;wBACvC,IAAI,WAAW,GAAG,SAAS;wBAC3B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK;AAC9C,wBAAA,IAAI,gBAAgB,GAAS,IAAI,CAAC,aAAc,CAAC,OAAO,CAAO,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACjG,wBAAA,iBAAiB,GAAG;4BAChB,WAAW;4BACX,WAAW;4BACX,gBAAgB;4BAChB,YAAY;4BACZ;yBACH;wBAED,IACI,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;6BAC5I,CAAC,YAAY,KAAK,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACjJ;4BACE,WAAW,GAAG,IAAI;4BAClB,QAAQ,GAAG,iBAAiB;wBAChC;oBACJ;oBAEA,IAAI,OAAO,GAAG,UAAU;AACxB,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACxB,wBAAA,OAAO,GAAG,UAAU,IAAI,WAAW;oBACvC;oBAEA,IAAI,OAAO,EAAE;AACT,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACrC;AAEA,oBAAA,cAAc,GAAG,cAAc,IAAI,CAAC,UAAU,IAAI,WAAW,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;gBACvK;gBAEA,IAAI,CAAC,cAAc,EAAE;AACjB,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBAC7B;AAEA,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3G;YACJ;AACA,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QAEd,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAEtD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,aAAa,EAAE;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEA,iBAAiB,CAAC,IAAmB,EAAE,iBAAsB,EAAA;QACzD,IAAI,IAAI,EAAE;YACN,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,gBAAA,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;AAC9B,oBAAA,IAAI,aAAa,GAAG,EAAE,GAAG,SAAS,EAAE;oBACpC,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE;wBACxD,OAAO,GAAG,IAAI;AACd,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;oBACrC;gBACJ;YACJ;YAEA,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;IAEA,eAAe,CAAC,IAAmB,EAAE,aAAqC,EAAA;AACtE,QAAA,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,EAAE,GAAQ,aAAa;QAC9G,IAAI,OAAO,GAAG,KAAK;QACnB,MAAM,SAAS,GAAG,CAAC,KAAa,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAU,IAAI,CAAC,YAAY,CAAC;AAEjI,QAAA,OAAO,GAAG,uBAAuB,EAAE,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;AAEjL,QAAA,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;YACtD,OAAO;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;oBACzB,WAAW;oBACX,WAAW;oBACX,gBAAgB;oBAChB,YAAY;oBACZ;iBACH,CAAC,IAAI,OAAO;QACrB;AAEA,QAAA,OAAO,OAAO;IAClB;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjF;IAEA,SAAS,GAAA;QACL,IAAI,KAAK,GAAG,IAAI;AAChB,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACnC,KAAK,GAAG,KAAK;gBACb;YACJ;QACJ;QAEA,OAAO,CAAC,KAAK;IACjB;AACA;;;AAGG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AAEd,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;aAAO;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC5D;IACJ;AAEA,IAAA,iBAAiB,CAAC,IAAS,EAAE,IAAS,EAAE,KAAa,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,CAAC,wBAAwB,EAAE;IACnC;IAEA,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,MAAM,KAAK,CAAC;IAC1F;IAEA,wBAAwB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,KAAI;AAC/E,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACzE,oBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACpE,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtF,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;oBAC3B,IAAI,CAAC,0BAA0B,EAAE;gBACrC;AAEA,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,0BAA0B,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QACpC;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,EAAE,CAAC;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM;YAClE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC;IACN;uGA1hES,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,0OAmCE,gBAAgB,CAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAKhB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAKhB,gBAAgB,CAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAKhB,gBAAgB,CAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAKhB,eAAe,6BAKf,eAAe,CAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAKf,eAAe,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAUf,gBAAgB,iRAyBhB,gBAAgB,CAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAKhB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAKhB,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAKhB,gBAAgB,8DAKhB,eAAe,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAUf,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAKhB,gBAAgB,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAyBhB,gBAAgB,gFAUhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAKhB,gBAAgB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAUhB,gBAAgB,4CAKhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAUhB,gBAAgB,CAAA,EAAA,qBAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAKhB,eAAe,CAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAUf,eAAe,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAef,gBAAgB,0GAUhB,gBAAgB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAyBhB,eAAe,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EA8Gf,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,aAAA,EAAA,OAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,SAAA,EAhYzB,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAyoB3I,aAAa,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxxBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8IT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,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,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAqsHG,WAAW,2FACX,aAAa,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,WAAW,CAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAl/CN,gBAAgB,4IAlJhB,MAAM,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAzjEN,SAAS,EAAA,UAAA,EAAA,CAAA;kBA3JrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8IT,IAAA,CAAA;oBACD,SAAS,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAA,SAAW,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAA,SAAW,EAAE,CAAC;oBAC5J,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,4BAA4B;AACvC,wBAAA,eAAe,EAAE,OAAO;AACxB,wBAAA,6BAA6B,EAAE;AAClC,qBAAA;oBACD,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;;sBAeI;;sBAMA;;sBAKA;;sBAKA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;;sBAKA;;sBAKA;;sBAKA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;;sBAKA;;sBAKA;;sBAKA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAKpC;;sBAKA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAKrC;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"}