ngx-aur-mat-table 12.2.37 → 12.2.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,7 @@ import { DisplayColumnsFactory } from "./factories/DisplayColumnsFactory";
12
12
  import { EmptyValue } from "./model/EmptyValue";
13
13
  import { TotalRowProvider, TotalRowProviderDummy } from "./providers/TotalRowProvider";
14
14
  import { OffsetUtil } from "./utils/offset.util";
15
+ import { animate, state, style, transition, trigger } from "@angular/animations";
15
16
  import * as i0 from "@angular/core";
16
17
  import * as i1 from "@angular/material/form-field";
17
18
  import * as i2 from "@angular/material/icon";
@@ -25,13 +26,20 @@ import * as i9 from "@angular/common";
25
26
  import * as i10 from "@angular/material/input";
26
27
  import * as i11 from "@angular/material/tooltip";
27
28
  import * as i12 from "./data-property-getter-pipe/data-property-getter.pipe";
29
+ var ExpandState;
30
+ (function (ExpandState) {
31
+ ExpandState["COLLAPSED"] = "collapsed";
32
+ ExpandState["EXPANDED"] = "expanded";
33
+ })(ExpandState || (ExpandState = {}));
28
34
  export class NgxAurMatTableComponent {
29
35
  constructor() {
36
+ this.expandedStateEnum = ExpandState;
30
37
  this.tableDataSource = new MatTableDataSource([]);
31
38
  this._displayColumns = [];
32
39
  this._customDisplayColumnsEnabled = false;
33
40
  this.tableView = [];
34
41
  this.tableData = [];
42
+ this.extendedRowTemplate = null;
35
43
  this.sort = new EventEmitter();
36
44
  // events if enabled actions
37
45
  this.onRowAction = new EventEmitter();
@@ -236,14 +244,27 @@ export class NgxAurMatTableComponent {
236
244
  }
237
245
  }
238
246
  NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{tableConfig.filterCfg?.label}}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{indexProvider.name}}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{rowIndex + indexProvider.offset}}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || ''}}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{selectionProvider.selection.selected.length}}/{{tableDataSource.filteredData.length}})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{action.icon.name}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{action.icon.name}}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns\" [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"paginationProvider.isEnabled\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": i12.DataPropertyGetterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
247
+ NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\" [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns\" [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"paginationProvider.isEnabled\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.expanded-row{height:0}.row-detail{overflow:hidden;display:flex}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": i12.DataPropertyGetterPipe }, animations: [
248
+ trigger('detailExpand', [
249
+ state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
250
+ state(ExpandState.EXPANDED, style({ height: '*' })),
251
+ transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
252
+ ]),
253
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
240
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, decorators: [{
241
255
  type: Component,
242
256
  args: [{
243
257
  selector: 'aur-mat-table',
244
258
  templateUrl: './ngx-aur-mat-table.component.html',
245
259
  styleUrls: ['./ngx-aur-mat-table.component.scss'],
246
- changeDetection: ChangeDetectionStrategy.OnPush
260
+ changeDetection: ChangeDetectionStrategy.OnPush,
261
+ animations: [
262
+ trigger('detailExpand', [
263
+ state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
264
+ state(ExpandState.EXPANDED, style({ height: '*' })),
265
+ transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
266
+ ]),
267
+ ],
247
268
  }]
248
269
  }], ctorParameters: function () { return []; }, propDecorators: { displayColumns: [{
249
270
  type: Input
@@ -257,6 +278,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
257
278
  type: Input
258
279
  }], tableData: [{
259
280
  type: Input
281
+ }], extendedRowTemplate: [{
282
+ type: Input
260
283
  }], matPaginator: [{
261
284
  type: ViewChild,
262
285
  args: [MatPaginator, { static: false }]
@@ -284,4 +307,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
284
307
  }], highlight: [{
285
308
  type: Input
286
309
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFckcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFB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QVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkF3QkUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbHVtblZpZXcsIFRhYmxlQ29uZmlnfSBmcm9tICcuL21vZGVsL0NvbHVtbkNvbmZpZyc7XHJcbmltcG9ydCB7TWF0U29ydCwgU29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7TWF0UGFnaW5hdG9yfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1NlbGVjdGlvblByb3ZpZGVyLCBTZWxlY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9TZWxlY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7QWN0aW9uRXZlbnQsIFJvd0FjdGlvblByb3ZpZGVyLCBSb3dBY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9Sb3dBY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL21vZGVsL1RhYmxlUm93XCI7XHJcbmltcG9ydCB7VGFibGVWaWV3RmFjdG9yeX0gZnJvbSBcIi4vbW9kZWwvVGFibGVWaWV3RmFjdG9yeVwiO1xyXG5pbXBvcnQge0luZGV4UHJvdmlkZXIsIEluZGV4UHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL0luZGV4UHJvdmlkZXJcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uUHJvdmlkZXIsIFBhZ2luYXRpb25Qcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvUGFnaW5hdGlvblByb3ZpZGVyXCI7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL01hdFRhYmxlRGF0YVNvdXJjZUZhY3RvcnlcIjtcclxuaW1wb3J0IHtEaXNwbGF5Q29sdW1uc0ZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9EaXNwbGF5Q29sdW1uc0ZhY3RvcnlcIjtcclxuaW1wb3J0IHtFbXB0eVZhbHVlfSBmcm9tIFwiLi9tb2RlbC9FbXB0eVZhbHVlXCI7XHJcbmltcG9ydCB7VG90YWxSb3dQcm92aWRlciwgVG90YWxSb3dQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvVG90YWxSb3dQcm92aWRlclwiO1xyXG5pbXBvcnQge05neEF1ckZpbHRlcnN9IGZyb20gXCIuL2ZpbHRlcnMvTmd4QXVyRmlsdGVyc1wiO1xyXG5pbXBvcnQge05neEF1ck1hdFRhYmxlUHVibGljfSBmcm9tIFwiLi9uZ3gtYXVyLW1hdC10YWJsZS1wdWJsaWNcIjtcclxuaW1wb3J0IHtPZmZzZXRVdGlsfSBmcm9tIFwiLi91dGlscy9vZmZzZXQudXRpbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBrZXk6IHN0cmluZ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4QXVyTWF0VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95LCBOZ3hBdXJNYXRUYWJsZVB1YmxpYzxUPiB7XHJcblxyXG4gIHB1YmxpYyB0YWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFRhYmxlUm93PFQ+PihbXSk7XHJcbiAgX2Rpc3BsYXlDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIF9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc3BsYXlDb2x1bW5zKGNvbHVtbnM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAoY29sdW1ucykge1xyXG4gICAgICB0aGlzLl9kaXNwbGF5Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcclxuICAgICAgdGhpcy5fY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0YWJsZVZpZXc6IE1hcDxzdHJpbmcsIENvbHVtblZpZXc8c3RyaW5nPj5bXSA9IFtdO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZHJlbigncm93TGluaycsIHtyZWFkOiBFbGVtZW50UmVmfSkgcm93czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogVGFibGVDb25maWc8VD47XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogVFtdID0gW107XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwge3N0YXRpYzogZmFsc2V9KSBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiB0cnVlfSkgbWF0U29ydDogTWF0U29ydDtcclxuXHJcbiAgQE91dHB1dCgpIHNvcnQ6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgYWN0aW9uc1xyXG4gIEBPdXRwdXQoKSBvblJvd0FjdGlvbjogRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+KCk7XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgc2VsZWN0IGV2ZW50XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRSb3dzQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUW10+PigpO1xyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGZpbHRlcmVkIHJvd3NcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25GaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGNvbHVtbk9mZnNldHMgPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtbk9mZnNldFtdPigpO1xyXG4gIHByaXZhdGUgcHJldkNvbHVtbk9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gW107XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBwcml2YXRlIHJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgPSBFbXB0eVZhbHVlLlJFU0laRV9PQlNFUlZFUjtcclxuXHJcbiAgc2VsZWN0aW9uUHJvdmlkZXI6IFNlbGVjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBSb3dBY3Rpb25Qcm92aWRlckR1bW15PFQ+KCk7XHJcblxyXG4gIGluZGV4UHJvdmlkZXI6IEluZGV4UHJvdmlkZXIgPSBuZXcgSW5kZXhQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHBhZ2luYXRpb25Qcm92aWRlcjogUGFnaW5hdGlvblByb3ZpZGVyID0gbmV3IFBhZ2luYXRpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHRvdGFsUm93UHJvdmlkZXI6IFRvdGFsUm93UHJvdmlkZXI8VD4gPSBuZXcgVG90YWxSb3dQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIGhpZ2hsaWdodGVkOiBUIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGN1c3RvbVNvcnRGdW5jdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IFRhYmxlUm93PFQ+LCBrZXk6IHN0cmluZykgPT4gYW55PigpO1xyXG5cclxuICBwcml2YXRlIGZpbHRlclN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgTmd4QXVyRmlsdGVycy5CYXNlPFQ+PigpO1xyXG5cclxuICAvL9C30L3QsNGH0LXQvdC40LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YLQtdC50L3QtdGA0LUg0LjQvdCw0YfQtSBPbkNoYW5nZSDQvdC1INCy0LjQtNC40YIg0LjQt9C80LXQvdC10L3QuNC5INC60L7Qs9C00LAg0L/QtdGA0LXQtNCw0Y7RgtGB0Y8g0L7QtNC40L3QsNC60L7QstGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuCDQv9C+0LTRgdCy0LXRgtC60LAg0YHRgtGA0L7QutC4INC90LUg0L7RgtC60LvRjtGH0LDQtdGC0YHRj1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBoaWdobGlnaHQ6IEhpZ2hsaWdodENvbnRhaW5lcjxUPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoKGNoYW5nZXNbJ3RhYmxlRGF0YSddICYmIHRoaXMudGFibGVEYXRhKSB8fCAoY2hhbmdlc1snZGlzcGxheUNvbHVtbnMnXSAmJiB0aGlzLl9kaXNwbGF5Q29sdW1ucykpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YSB8fCBbXTtcclxuICAgICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGlnaGxpZ2h0J10gJiYgdGhpcy5oaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRDaGFuZ2UodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIaWdobGlnaHRDaGFuZ2UoaDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+KSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZCA9PT0gaC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSBoLnZhbHVlO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHJvdyA9PiByb3cucm93U3JjID09PSBoLnZhbHVlKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICB0aGlzLnJvd3M/LnRvQXJyYXkoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgICBibG9jazogXCJjZW50ZXJcIixcclxuICAgICAgICAgIGlubGluZTogXCJjZW50ZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0IGlucHV0cyBbdGFibGVDb25maWddIGlzIG1hbmRhdG9yeSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHdlIG5lZWQgdGhpcywgaW4gb3JkZXIgdG8gbWFrZSBwYWdpbmF0aW9uIHdvcmsgd2l0aCAqbmdJZlxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpXHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKSk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5vYnNlcnZlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IChkYXRhLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21Tb3J0RnVuY3Rpb24gPSB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbVNvcnRGdW5jdGlvbiA/IGN1c3RvbVNvcnRGdW5jdGlvbihkYXRhLCBrZXkpIDogZGF0YVtrZXldO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5PZmZzZXRzKCkge1xyXG4gICAgaWYgKHRoaXMudGFibGU/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpIHtcclxuICAgICAgY29uc3Qgb2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBBcnJheS5mcm9tKHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKVxyXG4gICAgICAgIC5tYXAoKGMpID0+IChjIGFzIEhUTUxFbGVtZW50KSlcclxuICAgICAgICAubWFwKChjLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgIGxlZnQ6IGMub2Zmc2V0TGVmdCxcclxuICAgICAgICAgIHdpZHRoOiBjLm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAga2V5OiB0aGlzLl9kaXNwbGF5Q29sdW1uc1tpbmRleF1cclxuICAgICAgICB9KSk7XHJcbiAgICAgIGlmIChPZmZzZXRVdGlsLmFyZU5vdEVxdWFsKHRoaXMucHJldkNvbHVtbk9mZnNldHMsIG9mZnNldHMpKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2Q29sdW1uT2Zmc2V0cyA9IG9mZnNldHM7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5PZmZzZXRzLmVtaXQob2Zmc2V0cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZVRhYmxlRGF0YSgpIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSlcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgaWYgKCF0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBEaXNwbGF5Q29sdW1uc0ZhY3RvcnkuY3JlYXRlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTZWFyY2hGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdG9yYWdlLmRlbGV0ZShmaWx0ZXJOYW1lKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZywgZmlsdGVyOiBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSB8fCAoIXRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkhLmVxdWFscyhmaWx0ZXIpKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2Uuc2V0KGZpbHRlck5hbWUsIGZpbHRlcik7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJBY3Rpb25zID0gWy4uLnRoaXMuZmlsdGVyU3RvcmFnZS52YWx1ZXMoKV07XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSAoZGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyQWN0aW9ucy5ldmVyeShmaWx0ZXJBY3Rpb24gPT4gZmlsdGVyQWN0aW9uLmZpbHRlckZuKCkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INGE0LjQu9GM0YLRgNCw0YbQuNC4LiDQvdGD0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YPQvdC40LrQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDRh9GC0L7QsdGLINGE0LjQu9GM0YLRgNCw0YbQuNGPINC30LDQv9GD0YHRgtC40LvQsNGB0YxcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9ICd0cmlnZ2VyLScgKyBNYXRoLnJhbmRvbSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZpbHRlcmVkVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZiA9PiBmLnJvd1NyYykpXHJcbiAgfVxyXG5cclxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydC5lbWl0KHNvcnRQYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvd3M6IFRbXSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93c0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3dzfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vblJvd0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3d9KTtcclxuICB9XHJcblxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNBbGxTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2FzdFNyYyhyb3c6IGFueSk6IFRhYmxlUm93PFQ+IHtcclxuICAgIHJldHVybiByb3c7XHJcbiAgfVxyXG5cclxuICByb3dDbGljayhyb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAocm93LnJvd1NyYyAhPT0gdGhpcy5oaWdobGlnaHRlZCB8fCAocm93LnJvd1NyYyA9PT0gdGhpcy5oaWdobGlnaHRlZCAmJiAhdGhpcy50YWJsZUNvbmZpZy5jbGlja0NmZz8uY2FuY2VsYWJsZSkpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93LnJvd1NyYyk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSByb3cucm93U3JjO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8g0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QsNCx0LvRjtC00LXQvdC40LUg0L/RgNC4INGD0L3QuNGH0YLQvtC20LXQvdC40Lgg0LrQvtC80L/QvtC90LXQvdGC0LBcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIj5cclxuICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiYXBwbHlTZWFyY2hGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3t0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIj5cclxuICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRhYmxlIC0tPlxyXG4gICAgPHRhYmxlICN0YWJsZSBtYXQtdGFibGUgbWF0U29ydFxyXG4gICAgICAgICAgIFtkYXRhU291cmNlXT1cInRhYmxlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlKCRldmVudClcIlxyXG4gICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5oZWlnaHRcIlxyXG4gICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8ubWF4SGVpZ2h0XCJcclxuICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1pbkhlaWdodFwiPlxyXG5cclxuICAgICAgPCEtLSAgICAgICAgaW5kZXgtY29sdW1uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmRleFByb3ZpZGVyLmlzRW5hYmxlZFwiIFttYXRDb2x1bW5EZWZdPVwiaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRVwiPlxyXG5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImluZGV4UHJvdmlkZXIuaGVhZGVyVmlld1wiPlxyXG4gICAgICAgICAgICB7e2luZGV4UHJvdmlkZXIubmFtZX19XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIHt7cm93SW5kZXggKyBpbmRleFByb3ZpZGVyLm9mZnNldH19XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgIHt7dG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUUpIHx8ICcnfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gICAgICAgIHNlbGVjdGlvbi1jb2x1bW4tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cInNlbGVjdGlvblByb3ZpZGVyLkNPTFVNTl9OQU1FXCIgKm5nSWY9XCJzZWxlY3Rpb25Qcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnPy5zaG93U2VsZWN0ZWRDb3VudCAmJiBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICh7e3NlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGh9fS97e3RhYmxlRGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RofX0pXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRhYmxlQ29uZmlnPy5zZWxlY3Rpb25DZmc/LmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uLmFjdGlvbiwgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnIS5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YWN0aW9uLmljb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaXNTZWxlY3RlZChjYXN0U3JjKHJvdykucm93U3JjKVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gYWN0aW9uIGNvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0FjdGlvbnNQcm92aWRlci5pc0VuYWJsZWRcIiBbbWF0Q29sdW1uRGVmXT1cInJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRVwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRSb3dBY3Rpb24oYWN0aW9uLmFjdGlvbiwgZWxlbWVudC5yb3dTcmMsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByb3dBY3Rpb25zUHJvdmlkZXIuYWN0aW9uVmlldy5nZXQoZWxlbWVudC5pZClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJhY3Rpb24uaWNvbi5jb2xvclwiPlxyXG4gICAgICAgICAgICAgIHt7YWN0aW9uLmljb24ubmFtZX19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbkNvbmZpZyBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5Db25maWcua2V5XCI+XHJcblxyXG4gICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uQ29uZmlnLmtleVwiXHJcbiAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGU+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVmFsdWU+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgINC/0L7QtNCz0L7RgtC+0LLQu9C10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8tLT5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZVZpZXdbZWxlbWVudC5pZF0/LmdldChjb2x1bW5Db25maWcua2V5KVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyJzogdGFibGVDb25maWcuY2xpY2tDZmc/LnBvaW50ZXIgfHwgZmFsc2UsICduZXctY29sb3InOiBoaWdobGlnaHRlZD09PXJvdy5yb3dTcmMgJiYgdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvcn1cIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWxSb3dQcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIl9kaXNwbGF5Q29sdW1uc1wiIFtzdHlsZV09XCJ0b3RhbFJvd1Byb3ZpZGVyLnN0eWxlXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICAgIDxtYXQtcGFnaW5hdG9yICpuZ0lmPVwicGFnaW5hdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2luYXRpb25Qcm92aWRlci5zaXplc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJDZWxsVGVtcGxhdGUgbGV0LWNvbHVtbk5hbWU+XHJcbiAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgIHt7IHRvdGFsUm93UHJvdmlkZXIudG90YWxzLmdldChjb2x1bW5OYW1lKSB8fCAnJyB9fVxyXG4gIDwvdGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFckcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFB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RyxXQUFXO3NCQUFwQixNQUFNO2dCQUlHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkF3QkUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb2x1bW5WaWV3LCBUYWJsZUNvbmZpZ30gZnJvbSAnLi9tb2RlbC9Db2x1bW5Db25maWcnO1xyXG5pbXBvcnQge01hdFNvcnQsIFNvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQge01hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtTZWxlY3Rpb25Qcm92aWRlciwgU2VsZWN0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSAnLi9wcm92aWRlcnMvU2VsZWN0aW9uUHJvdmlkZXInO1xyXG5pbXBvcnQge0FjdGlvbkV2ZW50LCBSb3dBY3Rpb25Qcm92aWRlciwgUm93QWN0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSAnLi9wcm92aWRlcnMvUm93QWN0aW9uUHJvdmlkZXInO1xyXG5pbXBvcnQge1RhYmxlUm93fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVJvd1wiO1xyXG5pbXBvcnQge1RhYmxlVmlld0ZhY3Rvcnl9IGZyb20gXCIuL21vZGVsL1RhYmxlVmlld0ZhY3RvcnlcIjtcclxuaW1wb3J0IHtJbmRleFByb3ZpZGVyLCBJbmRleFByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9JbmRleFByb3ZpZGVyXCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvblByb3ZpZGVyLCBQYWdpbmF0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL1BhZ2luYXRpb25Qcm92aWRlclwiO1xyXG5pbXBvcnQge01hdFRhYmxlRGF0YVNvdXJjZUZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9NYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5XCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbHVtbnNGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvRGlzcGxheUNvbHVtbnNGYWN0b3J5XCI7XHJcbmltcG9ydCB7RW1wdHlWYWx1ZX0gZnJvbSBcIi4vbW9kZWwvRW1wdHlWYWx1ZVwiO1xyXG5pbXBvcnQge1RvdGFsUm93UHJvdmlkZXIsIFRvdGFsUm93UHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL1RvdGFsUm93UHJvdmlkZXJcIjtcclxuaW1wb3J0IHtOZ3hBdXJGaWx0ZXJzfSBmcm9tIFwiLi9maWx0ZXJzL05neEF1ckZpbHRlcnNcIjtcclxuaW1wb3J0IHtOZ3hBdXJNYXRUYWJsZVB1YmxpY30gZnJvbSBcIi4vbmd4LWF1ci1tYXQtdGFibGUtcHVibGljXCI7XHJcbmltcG9ydCB7T2Zmc2V0VXRpbH0gZnJvbSBcIi4vdXRpbHMvb2Zmc2V0LnV0aWxcIjtcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodENvbnRhaW5lcjxUPiB7XHJcbiAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PZmZzZXQge1xyXG4gIGxlZnQ6IG51bWJlcixcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGtleTogc3RyaW5nXHJcbn1cclxuXHJcbmVudW0gRXhwYW5kU3RhdGUge1xyXG4gIENPTExBUFNFRCA9ICdjb2xsYXBzZWQnLFxyXG4gIEVYUEFOREVEID0gJ2V4cGFuZGVkJ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKEV4cGFuZFN0YXRlLkNPTExBUFNFRCwgc3R5bGUoe2hlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnfSkpLFxyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5FWFBBTkRFRCwgc3R5bGUoe2hlaWdodDogJyonfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKGAke0V4cGFuZFN0YXRlLkVYUEFOREVEfSA8PT4gJHtFeHBhbmRTdGF0ZS5DT0xMQVBTRUR9YCwgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgTmd4QXVyTWF0VGFibGVQdWJsaWM8VD4ge1xyXG5cclxuICBleHBhbmRlZFN0YXRlRW51bSA9IEV4cGFuZFN0YXRlO1xyXG5cclxuICBwdWJsaWMgdGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxUPj4oW10pO1xyXG4gIF9kaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBfY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKGNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBbLi4uY29sdW1uc107XHJcbiAgICAgIHRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFibGVWaWV3OiBNYXA8c3RyaW5nLCBDb2x1bW5WaWV3PHN0cmluZz4+W10gPSBbXTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd0xpbmsnLCB7cmVhZDogRWxlbWVudFJlZn0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7cmVhZDogRWxlbWVudFJlZn0pIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQElucHV0KCkgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+O1xyXG5cclxuICBASW5wdXQoKSB0YWJsZURhdGE6IFRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBleHRlbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwge3N0YXRpYzogZmFsc2V9KSBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiB0cnVlfSkgbWF0U29ydDogTWF0U29ydDtcclxuXHJcbiAgQE91dHB1dCgpIHNvcnQ6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgYWN0aW9uc1xyXG4gIEBPdXRwdXQoKSBvblJvd0FjdGlvbjogRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+KCk7XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgc2VsZWN0IGV2ZW50XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRSb3dzQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUW10+PigpO1xyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGZpbHRlcmVkIHJvd3NcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25GaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGNvbHVtbk9mZnNldHMgPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtbk9mZnNldFtdPigpO1xyXG4gIHByaXZhdGUgcHJldkNvbHVtbk9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gW107XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBwcml2YXRlIHJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgPSBFbXB0eVZhbHVlLlJFU0laRV9PQlNFUlZFUjtcclxuXHJcbiAgc2VsZWN0aW9uUHJvdmlkZXI6IFNlbGVjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBSb3dBY3Rpb25Qcm92aWRlckR1bW15PFQ+KCk7XHJcblxyXG4gIGluZGV4UHJvdmlkZXI6IEluZGV4UHJvdmlkZXIgPSBuZXcgSW5kZXhQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHBhZ2luYXRpb25Qcm92aWRlcjogUGFnaW5hdGlvblByb3ZpZGVyID0gbmV3IFBhZ2luYXRpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHRvdGFsUm93UHJvdmlkZXI6IFRvdGFsUm93UHJvdmlkZXI8VD4gPSBuZXcgVG90YWxSb3dQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIGhpZ2hsaWdodGVkOiBUIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGN1c3RvbVNvcnRGdW5jdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IFRhYmxlUm93PFQ+LCBrZXk6IHN0cmluZykgPT4gYW55PigpO1xyXG5cclxuICBwcml2YXRlIGZpbHRlclN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgTmd4QXVyRmlsdGVycy5CYXNlPFQ+PigpO1xyXG5cclxuICAvL9C30L3QsNGH0LXQvdC40LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YLQtdC50L3QtdGA0LUg0LjQvdCw0YfQtSBPbkNoYW5nZSDQvdC1INCy0LjQtNC40YIg0LjQt9C80LXQvdC10L3QuNC5INC60L7Qs9C00LAg0L/QtdGA0LXQtNCw0Y7RgtGB0Y8g0L7QtNC40L3QsNC60L7QstGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuCDQv9C+0LTRgdCy0LXRgtC60LAg0YHRgtGA0L7QutC4INC90LUg0L7RgtC60LvRjtGH0LDQtdGC0YHRj1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBoaWdobGlnaHQ6IEhpZ2hsaWdodENvbnRhaW5lcjxUPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoKGNoYW5nZXNbJ3RhYmxlRGF0YSddICYmIHRoaXMudGFibGVEYXRhKSB8fCAoY2hhbmdlc1snZGlzcGxheUNvbHVtbnMnXSAmJiB0aGlzLl9kaXNwbGF5Q29sdW1ucykpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YSB8fCBbXTtcclxuICAgICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGlnaGxpZ2h0J10gJiYgdGhpcy5oaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRDaGFuZ2UodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIaWdobGlnaHRDaGFuZ2UoaDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+KSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZCA9PT0gaC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSBoLnZhbHVlO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHJvdyA9PiByb3cucm93U3JjID09PSBoLnZhbHVlKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICB0aGlzLnJvd3M/LnRvQXJyYXkoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgICBibG9jazogXCJjZW50ZXJcIixcclxuICAgICAgICAgIGlubGluZTogXCJjZW50ZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0IGlucHV0cyBbdGFibGVDb25maWddIGlzIG1hbmRhdG9yeSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHdlIG5lZWQgdGhpcywgaW4gb3JkZXIgdG8gbWFrZSBwYWdpbmF0aW9uIHdvcmsgd2l0aCAqbmdJZlxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpXHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKSk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5vYnNlcnZlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IChkYXRhLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21Tb3J0RnVuY3Rpb24gPSB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbVNvcnRGdW5jdGlvbiA/IGN1c3RvbVNvcnRGdW5jdGlvbihkYXRhLCBrZXkpIDogZGF0YVtrZXldO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5PZmZzZXRzKCkge1xyXG4gICAgaWYgKHRoaXMudGFibGU/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpIHtcclxuICAgICAgY29uc3Qgb2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBBcnJheS5mcm9tKHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKVxyXG4gICAgICAgIC5tYXAoKGMpID0+IChjIGFzIEhUTUxFbGVtZW50KSlcclxuICAgICAgICAubWFwKChjLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgIGxlZnQ6IGMub2Zmc2V0TGVmdCxcclxuICAgICAgICAgIHdpZHRoOiBjLm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAga2V5OiB0aGlzLl9kaXNwbGF5Q29sdW1uc1tpbmRleF1cclxuICAgICAgICB9KSk7XHJcbiAgICAgIGlmIChPZmZzZXRVdGlsLmFyZU5vdEVxdWFsKHRoaXMucHJldkNvbHVtbk9mZnNldHMsIG9mZnNldHMpKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2Q29sdW1uT2Zmc2V0cyA9IG9mZnNldHM7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5PZmZzZXRzLmVtaXQob2Zmc2V0cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZVRhYmxlRGF0YSgpIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSlcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgaWYgKCF0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBEaXNwbGF5Q29sdW1uc0ZhY3RvcnkuY3JlYXRlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTZWFyY2hGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdG9yYWdlLmRlbGV0ZShmaWx0ZXJOYW1lKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZywgZmlsdGVyOiBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSB8fCAoIXRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkhLmVxdWFscyhmaWx0ZXIpKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2Uuc2V0KGZpbHRlck5hbWUsIGZpbHRlcik7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJBY3Rpb25zID0gWy4uLnRoaXMuZmlsdGVyU3RvcmFnZS52YWx1ZXMoKV07XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSAoZGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyQWN0aW9ucy5ldmVyeShmaWx0ZXJBY3Rpb24gPT4gZmlsdGVyQWN0aW9uLmZpbHRlckZuKCkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INGE0LjQu9GM0YLRgNCw0YbQuNC4LiDQvdGD0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YPQvdC40LrQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDRh9GC0L7QsdGLINGE0LjQu9GM0YLRgNCw0YbQuNGPINC30LDQv9GD0YHRgtC40LvQsNGB0YxcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9ICd0cmlnZ2VyLScgKyBNYXRoLnJhbmRvbSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZpbHRlcmVkVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZiA9PiBmLnJvd1NyYykpXHJcbiAgfVxyXG5cclxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydC5lbWl0KHNvcnRQYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvd3M6IFRbXSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93c0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3dzfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vblJvd0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3d9KTtcclxuICB9XHJcblxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNBbGxTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2FzdFNyYyhyb3c6IGFueSk6IFRhYmxlUm93PFQ+IHtcclxuICAgIHJldHVybiByb3c7XHJcbiAgfVxyXG5cclxuICByb3dDbGljayhyb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAocm93LnJvd1NyYyAhPT0gdGhpcy5oaWdobGlnaHRlZCB8fCAocm93LnJvd1NyYyA9PT0gdGhpcy5oaWdobGlnaHRlZCAmJiAhdGhpcy50YWJsZUNvbmZpZy5jbGlja0NmZz8uY2FuY2VsYWJsZSkpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93LnJvd1NyYyk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSByb3cucm93U3JjO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8g0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QsNCx0LvRjtC00LXQvdC40LUg0L/RgNC4INGD0L3QuNGH0YLQvtC20LXQvdC40Lgg0LrQvtC80L/QvtC90LXQvdGC0LBcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIj5cclxuICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyB0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHRlbmRlZFJvd1RlbXBsYXRlICE9PSBudWxsXCJcclxuICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8uaGVpZ2h0XCJcclxuICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1heEhlaWdodFwiXHJcbiAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5taW5IZWlnaHRcIj5cclxuXHJcbiAgICAgIDwhLS0gICAgICAgIGluZGV4LWNvbHVtbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhQcm92aWRlci5pc0VuYWJsZWRcIiBbbWF0Q29sdW1uRGVmXT1cImluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuXHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJpbmRleFByb3ZpZGVyLmhlYWRlclZpZXdcIj5cclxuICAgICAgICAgICAge3sgaW5kZXhQcm92aWRlci5uYW1lIH19XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIHt7IHJvd0luZGV4ICsgaW5kZXhQcm92aWRlci5vZmZzZXQgfX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUUpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tICAgICAgICBzZWxlY3Rpb24tY29sdW1uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJzZWxlY3Rpb25Qcm92aWRlci5DT0xVTU5fTkFNRVwiICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZz8uc2hvd1NlbGVjdGVkQ291bnQgJiYgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKClcIj5cclxuICAgICAgICAgICAgICAoe3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fS97eyB0YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLmxlbmd0aCB9fSlcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZz8uYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb24uYWN0aW9uLCBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uc2VsZWN0ZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmchLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi50b2dnbGUoY2FzdFNyYyhyb3cpLnJvd1NyYykgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2FzdFNyYyhyb3cpLnJvd1NyYylcIj5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIGFjdGlvbiBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dBY3Rpb25zUHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0Um93QWN0aW9uKGFjdGlvbi5hY3Rpb24sIGVsZW1lbnQucm93U3JjLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLmljb24udG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9uc1Byb3ZpZGVyLmFjdGlvblZpZXcuZ2V0KGVsZW1lbnQuaWQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICB7eyBhY3Rpb24uaWNvbi5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbkNvbmZpZyBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5Db25maWcua2V5XCI+XHJcblxyXG4gICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uQ29uZmlnLmtleVwiXHJcbiAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGU+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVmFsdWU+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgINC/0L7QtNCz0L7RgtC+0LLQu9C10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8tLT5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZVZpZXdbZWxlbWVudC5pZF0/LmdldChjb2x1bW5Db25maWcua2V5KVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyJzogdGFibGVDb25maWcuY2xpY2tDZmc/LnBvaW50ZXIgfHwgZmFsc2UsICduZXctY29sb3InOiBoaWdobGlnaHRlZD09PXJvdy5yb3dTcmMgJiYgdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvcn1cIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPCEtLWV4cGFuZGVkLXJvdy0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkUm93XCI+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctZGV0YWlsXCIgW0BkZXRhaWxFeHBhbmRdPVwiZWxlbWVudC5yb3dTcmMgPT09IGhpZ2hsaWdodGVkID8gZXhwYW5kZWRTdGF0ZUVudW0uRVhQQU5ERUQgOiBleHBhbmRlZFN0YXRlRW51bS5DT0xMQVBTRURcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dGVuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlbmRlZFJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJleHBhbmRlZC1yb3dcIiAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWRSb3cnXVwiPjwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tZXhwYW5kZWQtcm93LS0+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWxSb3dQcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIl9kaXNwbGF5Q29sdW1uc1wiIFtzdHlsZV09XCJ0b3RhbFJvd1Byb3ZpZGVyLnN0eWxlXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxyXG4gICAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cclxuICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlckNlbGxUZW1wbGF0ZSBsZXQtY29sdW1uTmFtZT5cclxuICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbk5hbWUpIHx8ICcnIH19XHJcbiAgPC90ZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -12,6 +12,7 @@ import { MatFormFieldModule } from "@angular/material/form-field";
12
12
  import { DataPropertyGetterPipe } from "./data-property-getter-pipe/data-property-getter.pipe";
13
13
  import { ColumnViewComponent } from './components/column-value/column-view.component';
14
14
  import { CommonModule } from "@angular/common";
15
+ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
15
16
  import * as i0 from "@angular/core";
16
17
  export class NgxAurMatTableModule {
17
18
  }
@@ -27,7 +28,8 @@ NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
27
28
  MatSortModule,
28
29
  MatTooltipModule,
29
30
  MatCheckboxModule,
30
- MatFormFieldModule], exports: [NgxAurMatTableComponent,
31
+ MatFormFieldModule,
32
+ BrowserAnimationsModule], exports: [NgxAurMatTableComponent,
31
33
  DataPropertyGetterPipe] });
32
34
  NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, imports: [[
33
35
  CommonModule,
@@ -39,7 +41,8 @@ NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
39
41
  MatSortModule,
40
42
  MatTooltipModule,
41
43
  MatCheckboxModule,
42
- MatFormFieldModule
44
+ MatFormFieldModule,
45
+ BrowserAnimationsModule
43
46
  ]] });
44
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, decorators: [{
45
48
  type: NgModule,
@@ -59,7 +62,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
59
62
  MatSortModule,
60
63
  MatTooltipModule,
61
64
  MatCheckboxModule,
62
- MatFormFieldModule
65
+ MatFormFieldModule,
66
+ BrowserAnimationsModule
63
67
  ],
64
68
  exports: [
65
69
  NgxAurMatTableComponent,
@@ -67,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
67
71
  ]
68
72
  }]
69
73
  }] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUEwQjdDLE1BQU0sT0FBTyxvQkFBb0I7O2tIQUFwQixvQkFBb0I7bUhBQXBCLG9CQUFvQixpQkFyQjdCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsbUJBQW1CLGFBR25CLFlBQVk7UUFDWixhQUFhO1FBQ2IsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGtCQUFrQixhQUdsQix1QkFBdUI7UUFDdkIsc0JBQXNCO21IQUdiLG9CQUFvQixZQWpCdEI7WUFDUCxZQUFZO1lBQ1osYUFBYTtZQUNiLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixrQkFBa0I7U0FDbkI7NEZBTVUsb0JBQW9CO2tCQXZCaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05neEF1ck1hdFRhYmxlQ29tcG9uZW50fSBmcm9tICcuL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRUYWJsZU1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7TWF0UGFnaW5hdG9yTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge01hdFNvcnRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtNYXRDaGVja2JveE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge0RhdGFQcm9wZXJ0eUdldHRlclBpcGV9IGZyb20gXCIuL2RhdGEtcHJvcGVydHktZ2V0dGVyLXBpcGUvZGF0YS1wcm9wZXJ0eS1nZXR0ZXIucGlwZVwiO1xyXG5pbXBvcnQge0NvbHVtblZpZXdDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW4tdmFsdWUvY29sdW1uLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4QXVyTWF0VGFibGVDb21wb25lbnQsXHJcbiAgICBEYXRhUHJvcGVydHlHZXR0ZXJQaXBlLFxyXG4gICAgQ29sdW1uVmlld0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBOZ3hBdXJNYXRUYWJsZUNvbXBvbmVudCxcclxuICAgIERhdGFQcm9wZXJ0eUdldHRlclBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hBdXJNYXRUYWJsZU1vZHVsZSB7XHJcbn1cclxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7QUEyQjdFLE1BQU0sT0FBTyxvQkFBb0I7O2tIQUFwQixvQkFBb0I7bUhBQXBCLG9CQUFvQixpQkF0QjdCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsbUJBQW1CLGFBR25CLFlBQVk7UUFDWixhQUFhO1FBQ2IsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQix1QkFBdUIsYUFHdkIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjttSEFHYixvQkFBb0IsWUFsQnRCO1lBQ1AsWUFBWTtZQUNaLGFBQWE7WUFDYixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixjQUFjO1lBQ2QsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLHVCQUF1QjtTQUN4Qjs0RkFNVSxvQkFBb0I7a0JBeEJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLHNCQUFzQjtxQkFDdkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOZ3hBdXJNYXRUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0VGFibGVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xyXG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtNYXRTb3J0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xyXG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtEYXRhUHJvcGVydHlHZXR0ZXJQaXBlfSBmcm9tIFwiLi9kYXRhLXByb3BlcnR5LWdldHRlci1waXBlL2RhdGEtcHJvcGVydHktZ2V0dGVyLnBpcGVcIjtcclxuaW1wb3J0IHtDb2x1bW5WaWV3Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvY29sdW1uLXZhbHVlL2NvbHVtbi12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7QnJvd3NlckFuaW1hdGlvbnNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnNcIjtcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4QXVyTWF0VGFibGVDb21wb25lbnQsXHJcbiAgICBEYXRhUHJvcGVydHlHZXR0ZXJQaXBlLFxyXG4gICAgQ29sdW1uVmlld0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50LFxyXG4gICAgRGF0YVByb3BlcnR5R2V0dGVyUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEF1ck1hdFRhYmxlTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -7,6 +7,7 @@ import { MatTableDataSource, MatTableModule } from '@angular/material/table';
7
7
  import * as i8 from '@angular/material/paginator';
8
8
  import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
9
9
  import { SelectionModel } from '@angular/cdk/collections';
10
+ import { trigger, state, style, transition, animate } from '@angular/animations';
10
11
  import * as i1$1 from '@angular/material/form-field';
11
12
  import { MatFormFieldModule } from '@angular/material/form-field';
12
13
  import * as i1 from '@angular/material/icon';
@@ -21,6 +22,7 @@ import * as i6 from '@angular/material/button';
21
22
  import { MatButtonModule } from '@angular/material/button';
22
23
  import * as i10 from '@angular/material/input';
23
24
  import { MatInputModule } from '@angular/material/input';
25
+ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
24
26
 
25
27
  class NgxAurTableConfigUtil {
26
28
  static keys(config) {
@@ -524,13 +526,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
524
526
  }]
525
527
  }] });
526
528
 
529
+ var ExpandState;
530
+ (function (ExpandState) {
531
+ ExpandState["COLLAPSED"] = "collapsed";
532
+ ExpandState["EXPANDED"] = "expanded";
533
+ })(ExpandState || (ExpandState = {}));
527
534
  class NgxAurMatTableComponent {
528
535
  constructor() {
536
+ this.expandedStateEnum = ExpandState;
529
537
  this.tableDataSource = new MatTableDataSource([]);
530
538
  this._displayColumns = [];
531
539
  this._customDisplayColumnsEnabled = false;
532
540
  this.tableView = [];
533
541
  this.tableData = [];
542
+ this.extendedRowTemplate = null;
534
543
  this.sort = new EventEmitter();
535
544
  // events if enabled actions
536
545
  this.onRowAction = new EventEmitter();
@@ -735,14 +744,27 @@ class NgxAurMatTableComponent {
735
744
  }
736
745
  }
737
746
  NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
738
- NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{tableConfig.filterCfg?.label}}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{indexProvider.name}}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{rowIndex + indexProvider.offset}}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || ''}}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{selectionProvider.selection.selected.length}}/{{tableDataSource.filteredData.length}})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{action.icon.name}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{action.icon.name}}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns\" [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"paginationProvider.isEnabled\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i1$1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3$1.MatCellDef, selector: "[matCellDef]" }, { type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": DataPropertyGetterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
747
+ NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\" [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns\" [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"paginationProvider.isEnabled\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.expanded-row{height:0}.row-detail{overflow:hidden;display:flex}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i1$1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3$1.MatCellDef, selector: "[matCellDef]" }, { type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": DataPropertyGetterPipe }, animations: [
748
+ trigger('detailExpand', [
749
+ state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
750
+ state(ExpandState.EXPANDED, style({ height: '*' })),
751
+ transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
752
+ ]),
753
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
739
754
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, decorators: [{
740
755
  type: Component,
741
756
  args: [{
742
757
  selector: 'aur-mat-table',
743
758
  templateUrl: './ngx-aur-mat-table.component.html',
744
759
  styleUrls: ['./ngx-aur-mat-table.component.scss'],
745
- changeDetection: ChangeDetectionStrategy.OnPush
760
+ changeDetection: ChangeDetectionStrategy.OnPush,
761
+ animations: [
762
+ trigger('detailExpand', [
763
+ state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
764
+ state(ExpandState.EXPANDED, style({ height: '*' })),
765
+ transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
766
+ ]),
767
+ ],
746
768
  }]
747
769
  }], ctorParameters: function () { return []; }, propDecorators: { displayColumns: [{
748
770
  type: Input
@@ -756,6 +778,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
756
778
  type: Input
757
779
  }], tableData: [{
758
780
  type: Input
781
+ }], extendedRowTemplate: [{
782
+ type: Input
759
783
  }], matPaginator: [{
760
784
  type: ViewChild,
761
785
  args: [MatPaginator, { static: false }]
@@ -798,7 +822,8 @@ NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
798
822
  MatSortModule,
799
823
  MatTooltipModule,
800
824
  MatCheckboxModule,
801
- MatFormFieldModule], exports: [NgxAurMatTableComponent,
825
+ MatFormFieldModule,
826
+ BrowserAnimationsModule], exports: [NgxAurMatTableComponent,
802
827
  DataPropertyGetterPipe] });
803
828
  NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, imports: [[
804
829
  CommonModule,
@@ -810,7 +835,8 @@ NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
810
835
  MatSortModule,
811
836
  MatTooltipModule,
812
837
  MatCheckboxModule,
813
- MatFormFieldModule
838
+ MatFormFieldModule,
839
+ BrowserAnimationsModule
814
840
  ]] });
815
841
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, decorators: [{
816
842
  type: NgModule,
@@ -830,7 +856,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
830
856
  MatSortModule,
831
857
  MatTooltipModule,
832
858
  MatCheckboxModule,
833
- MatFormFieldModule
859
+ MatFormFieldModule,
860
+ BrowserAnimationsModule
834
861
  ],
835
862
  exports: [
836
863
  NgxAurMatTableComponent,