@acorex/components 18.5.7 → 18.5.8
Sign up to get free protection for your applications and to get access to all the features.
@@ -94,6 +94,7 @@ export class AXDataTableComponent extends AXBaseDataTable {
|
|
94
94
|
this.totalRows = data.totalCount;
|
95
95
|
this.hasItems = data.totalCount > 0;
|
96
96
|
});
|
97
|
+
this.pageSize.set(this.dataSource.pageSize);
|
97
98
|
//
|
98
99
|
this.clickSubject
|
99
100
|
.pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))
|
@@ -143,14 +144,14 @@ export class AXDataTableComponent extends AXBaseDataTable {
|
|
143
144
|
if (pageChanged || pageSizeChanged) {
|
144
145
|
if (pageChanged) {
|
145
146
|
this.page.set(event.page - 1);
|
147
|
+
this.dataSource.setPage(this.page());
|
146
148
|
}
|
147
149
|
if (pageSizeChanged) {
|
148
150
|
this.pageSize.set(event.take);
|
151
|
+
this.dataSource.setPageSize(this.pageSize());
|
149
152
|
}
|
150
153
|
// Update displayed rows and data source
|
151
154
|
this.displayedRows.set(new Array(this.pageSize()));
|
152
|
-
this.dataSource.setPage(this.page());
|
153
|
-
this.dataSource.setPageSize(this.pageSize());
|
154
155
|
}
|
155
156
|
}
|
156
157
|
}
|
@@ -318,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
318
319
|
type: ContentChildren,
|
319
320
|
args: [AXDataTableColumnComponent]
|
320
321
|
}] } });
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQTBFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkksT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7OztBQW1CdkYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFqQnpEOztRQWtCVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxVQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBTXJCLGtCQUFhLEdBQTBCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxTQUFJLEdBQTJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQTJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxjQUFTLEdBQTRCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxnQkFBVyxHQUEwQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFaEQsd0JBQW1CLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekcsMEJBQXFCLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0csc0JBQWlCLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFOUgscUJBQWdCLEdBQUc7WUFDM0IsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsQ0FBQztZQUNiLFdBQVcsRUFBRSxDQUFDO1lBQ2QsY0FBYyxFQUFFLENBQUM7WUFDakIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQztRQUNRLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQVM1QixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUduQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBR25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFHbkIsZUFBVSxHQUFvQixFQUFFLENBQUM7UUFHakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHeEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUdkLGtCQUFhLEdBQXNCLE1BQU0sQ0FBQztRQUcxQyxZQUFPLEdBSUg7WUFDRixPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7UUFhRixxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUd0RSxlQUFVLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBR3hGLGlCQUFZLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRzlGLDBCQUFxQixHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUV6RyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFvQyxDQUFDO1FBOEovRCx1QkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ2hILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDN0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7UUFFTSxzQkFBaUIsR0FBRyxHQUFTLEVBQUU7WUFDckMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRWhFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDO0tBeURIO0lBMVBDLElBQ1csVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQVcsVUFBVSxDQUFDLENBQVU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBbUJRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksTUFBTSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUU7UUFDRixJQUFJLENBQUMsWUFBWTthQUNkLElBQUksQ0FDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDakQsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUNoRDthQUNBLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsSUFBSSxDQUFDLEtBQWlDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5QyxlQUFlLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDZixpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBaUIsRUFBRSxJQUFhO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBWSxFQUFFLElBQVM7UUFDbEQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEVBQUU7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsaUJBQWlCLEVBQUUsSUFBSTtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQThCO1FBQ3BELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXRELElBQUksV0FBVyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2dCQUVELElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFFRCx3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxDQUFhLEVBQUUsSUFBYTtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixFQUFFO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQWEsRUFBRSxNQUFrQztRQUNqRSxJQUFJLE1BQU0sWUFBWSw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUM5QixLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQ3ZCLEdBQUcsRUFBRSxLQUFLO2lCQUNYLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDbkYsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFUyxPQUFPLENBQUMsTUFBa0M7UUFDbEQsSUFBSSxNQUFNLFlBQVksOEJBQThCLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBaUIsRUFBRSxXQUFtQjtRQUNsRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLGFBQWEsQ0FBQztRQUM5RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNoQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBa0JPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsQ0FBQztZQUNiLFdBQVcsRUFBRSxDQUFDO1lBQ2QsY0FBYyxFQUFFLENBQUM7WUFDakIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTywrQkFBK0I7UUFDckMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUkseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLFVBQVUsSUFBSSxLQUFLLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxlQUEyQyxDQUFDO1FBRWhELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUUvQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3pELGVBQWUsR0FBRyxNQUFNLENBQUM7WUFDM0IsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIseUJBQXlCLElBQUksS0FBSyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksZUFBZTtZQUFFLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVqRSxJQUFJLHVCQUF1QixHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLGNBQTBDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBZSxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2dCQUNyRCxjQUFjLEdBQUcsTUFBTSxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLHVCQUF1QixJQUFJLEtBQUssQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksY0FBYztZQUFFLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsRSxDQUFDOzhHQXJVVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwwcUJBUnBCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7YUFDbEM7WUFDRCxjQUFjO1NBQ2Ysa0RBcUdnQiwwQkFBMEIsNEpDaEo3Qyw0b1lBOFJBOzsyRkRqUGEsb0JBQW9CO2tCQWpCaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQ3pCLENBQUMsWUFBWSxDQUFDLFdBQ2IsQ0FBQyxvQkFBb0IsQ0FBQyxhQUNwQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsV0FBVyxzQkFBc0I7eUJBQ2xDO3dCQUNELGNBQWM7cUJBQ2Y7OEJBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkE2QnRCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQVlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBVU4sZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTTtnQkFJUCxxQkFBcUI7c0JBRHBCLE1BQU07Z0JBTUcsT0FBTztzQkFEaEIsZUFBZTt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFQYWdlckNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSwgQVhDb2x1bW5zT3JkZXJDaGFuZ2VkRXZlbnQsIEFYRGF0YVRhYmxlUm93Q2xpY2ssIEFYRGF0YVRhYmxlUm93RGJDbGljayB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRleHQtY29sdW1uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgb3V0cHV0czogWydzZWxlY3RlZFJvd3NDaGFuZ2UnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhCYXNlRGF0YVRhYmxlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlRGF0YVRhYmxlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGFQYWdlcicpIGRhdGFQYWdlcjtcblxuICBwcm90ZWN0ZWQgcnRsITogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZGlzcGxheWVkUm93czogV3JpdGFibGVTaWduYWw8YW55W10+ID0gc2lnbmFsKFtdKTtcbiAgcHJvdGVjdGVkIHBhZ2U6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIGlzTG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIGNvbHVtbnNMaXN0OiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuXG4gIHByb3RlY3RlZCBlbmRGaXhlZENvbHVtbnNMaXN0OiBTaWduYWw8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ2VuZCcpKTtcbiAgcHJvdGVjdGVkIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdDogU2lnbmFsPGFueVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sdW1uc0xpc3QoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgPT09ICdzdGFydCcpKTtcbiAgcHJvdGVjdGVkIG5vcm1hbENvbHVtbnNMaXN0OiBTaWduYWw8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCAhPT0gJ2VuZCcgJiYgYy5maXhlZCAhPT0gJ3N0YXJ0JykpO1xuXG4gIHByb3RlY3RlZCByZXNpemVDb2x1bW5Qcm9wID0ge1xuICAgIHN0YXJ0WDogMCxcbiAgICBzdGFydFdpZHRoOiAwLFxuICAgIGNvbHVtbkluZGV4OiAwLFxuICAgIG5ld0NvbHVtbldpZHRoOiAwLFxuICAgIHRoRWxlbWVudDogbnVsbCxcbiAgfTtcbiAgcHJvdGVjdGVkIGhhc0l0ZW1zID0gZmFsc2U7XG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuICBwcm90ZWN0ZWQgY3VycmVudFBhZ2UgPSAwO1xuICBwcm90ZWN0ZWQgdG90YWxQYWdlcyA9IDA7XG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICBASW5wdXQoKVxuICByb3dUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBhbHRlcm5hdGl2ZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZml4ZWRIZWFkZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dGb290ZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmaXhlZEZvb3RlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaXRlbUhlaWdodDogbnVtYmVyIHwgJ2F1dG8nID0gNDA7XG5cbiAgQElucHV0KClcbiAgYWxsb3dSZW9yZGVyaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcGFnaW5nID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBmZXRjaERhdGFNb2RlOiAnYXV0bycgfCAnbWFudWFsJyA9ICdhdXRvJztcblxuICBASW5wdXQoKVxuICBsb2FkaW5nOiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBhbmltYXRpb246IGJvb2xlYW47XG4gICAgbG9hZGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIH0gPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBhbmltYXRpb246IHRydWUsXG4gIH07XG5cbiAgcHJpdmF0ZSBfZm9jdXNlZFJvdzogdW5rbm93bjtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBmb2N1c2VkUm93KCk6IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkUm93O1xuICB9XG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgZm9jdXNlZFJvd0NoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uUm93RGJDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93RGJDbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93RGJDbGljaz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Db2x1bW5zT3JkZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhDb2x1bW5zT3JkZXJDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudD4oKTtcblxuICBwcml2YXRlIGNsaWNrU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IGl0ZW06IGFueSB9PigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIHByb3RlY3RlZCBjb2x1bW5zOiBRdWVyeUxpc3Q8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5ydGwgPSBBWEh0bWxVdGlsLmlzUnRsKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnVzZUNhY2hlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhTW9kZSA9PSAnYXV0bycpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlKDApO1xuICAgIH1cbiAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUpKTtcbiAgICB0aGlzLnRvdGFsUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcy5sZW5ndGg7XG4gICAgdGhpcy5kYXRhU291cmNlLm9uTG9hZGluZ0NoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZGF0YSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25DaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnNldChkYXRhLml0ZW1zKTtcbiAgICAgIHRoaXMudG90YWxSb3dzID0gZGF0YS50b3RhbENvdW50O1xuICAgICAgdGhpcy5oYXNJdGVtcyA9IGRhdGEudG90YWxDb3VudCA+IDA7XG4gICAgfSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgYnVmZmVyKHRoaXMuY2xpY2tTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpKSxcbiAgICAgICAgZmlsdGVyKChjbGlja0FycmF5KSA9PiBjbGlja0FycmF5Lmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbGlja0FycmF5KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlUm93RG91YmxlQ2xpY2soY2xpY2tBcnJheVswXS5ldmVudCwgY2xpY2tBcnJheVswXS5pdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpO1xuICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KHRoaXMuY29sdW1ucy50b0FycmF5KCkpO1xuICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoY29scykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoY29scy50b0FycmF5KCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueSwgYW55LCBhbnk+KSB7XG4gICAgY29uc3QgY2xvbmVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnNMaXN0KCldO1xuICAgIG1vdmVJdGVtSW5BcnJheShjbG9uZWRDb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KGNsb25lZENvbHVtbnMpO1xuXG4gICAgdGhpcy5vbkNvbHVtbnNPcmRlckNoYW5nZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IGV2ZW50IH0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0Lm5leHQoeyBldmVudCwgaXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkUm93ID09IGl0ZW0pIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IGl0ZW07XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogaXRlbSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUGFnZUNoYW5nZWQoZXZlbnQ6IEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlQ2hhbmdlZCA9IGV2ZW50LnBhZ2UgLSAxICE9IHRoaXMucGFnZSgpO1xuICAgICAgY29uc3QgcGFnZVNpemVDaGFuZ2VkID0gZXZlbnQudGFrZSAhPSB0aGlzLnBhZ2VTaXplKCk7XG5cbiAgICAgIGlmIChwYWdlQ2hhbmdlZCB8fCBwYWdlU2l6ZUNoYW5nZWQpIHtcbiAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlLnNldChldmVudC5wYWdlIC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFnZVNpemVDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlU2l6ZS5zZXQoZXZlbnQudGFrZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgZGlzcGxheWVkIHJvd3MgYW5kIGRhdGEgc291cmNlXG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQobmV3IEFycmF5KHRoaXMucGFnZVNpemUoKSkpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSh0aGlzLnBhZ2UoKSk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlU2l6ZSh0aGlzLnBhZ2VTaXplKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dEb3VibGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gaXRlbTtcbiAgICAvL1xuICAgIHRoaXMub25Sb3dEYkNsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogaXRlbSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ29sdW1uQ2xpY2soZTogTW91c2VFdmVudCwgY29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgaWYgKCFzb3J0KSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZGF0YUZpZWxkLFxuICAgICAgICAgIGRpcjogJ2FzYycsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNvcnQuZGlyID09ICdhc2MnKSB7XG4gICAgICAgICAgc29ydC5kaXIgPSAnZGVzYyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maWx0ZXIoKGMpID0+IGMgIT0gc29ydCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTb3J0KGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgcmV0dXJuIHNvcnQgPyAoc29ydC5kaXIgPT0gJ2FzYycgPyAnYXgtaWNvbi1hcnJvdy1sb25nLWRvd24nIDogJ2F4LWljb24tYXJyb3ctbG9uZy11cCcpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLnJlZnJlc2goKTtcbiAgICBpZiAodGhpcy5kYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuZGF0YVBhZ2VyLmdvRmlyc3RQYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVJvd0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLnBhZ2VTaXplICogdGhpcy5wYWdlKCkgKyBpbmRleDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblJlc2l6ZUNvbHVtblN0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFggPSBldmVudC5wYWdlWDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCA9IHBhcnNlSW50KHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc3R5bGUud2lkdGgpO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4O1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZUNvbHVtbk1vdmUpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVDb2x1bW5FbmQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvblJlc2l6ZUNvbHVtbk1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICBjb25zdCBkaWZmWCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0WDtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMucnRsID8gdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0V2lkdGggLSBkaWZmWCA6IHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoICsgZGlmZlg7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke01hdGgubWF4KDEwMCwgbmV3V2lkdGgpfXB4YDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnNldEF0dHJpYnV0ZSgnbmV3LXdpZHRoJywgYCR7bmV3V2lkdGh9YCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvblJlc2l6ZUNvbHVtbkVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplQ29sdW1uTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVDb2x1bW5FbmQpO1xuXG4gICAgY29uc3QgbmV3V2lkdGggPSBwYXJzZUludCh0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCduZXctd2lkdGgnKS52YWx1ZSk7XG4gICAgdGhpcy5jb2x1bW5zLmdldCh0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXgpLndpZHRoID0gYCR7TWF0aC5tYXgoMTAwLCBuZXdXaWR0aCl9cHhgO1xuICAgIHRoaXMucmVzZXRSZXNpemluZ1Byb2Nlc3MoKTtcbiAgfTtcblxuICBwcml2YXRlIHJlc2V0UmVzaXppbmdQcm9jZXNzKCkge1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZXctd2lkdGgnKTtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AgPSB7XG4gICAgICBzdGFydFg6IDAsXG4gICAgICBzdGFydFdpZHRoOiAwLFxuICAgICAgY29sdW1uSW5kZXg6IDAsXG4gICAgICBuZXdDb2x1bW5XaWR0aDogMCxcbiAgICAgIHRoRWxlbWVudDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVTdGlja3lDb2x1bW5zUG9zaXRpb25zKCkge1xuICAgIGxldCB0b3RhbFdpZHRoID0gMDtcbiAgICBsZXQgYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCA9IDA7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIHRvdGFsV2lkdGggKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGxhc3RTdGFydENvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCB3aWR0aCA9IHBhcnNlSW50KGNvbHVtbi53aWR0aCBhcyBzdHJpbmcpO1xuXG4gICAgICBpZiAoY29sdW1uLmZpeGVkID09PSAnc3RhcnQnICYmICFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgY29sdW1uWydzdGlja3lTdGFydCddID0gYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCArICdweCc7XG4gICAgICAgIGxhc3RTdGFydENvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCArPSB3aWR0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAobGFzdFN0YXJ0Q29sdW1uKSBsYXN0U3RhcnRDb2x1bW5bJ2lzTGFzdEZpeGVkQ29sdW1uJ10gPSB0cnVlO1xuXG4gICAgbGV0IGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kID0gMDtcbiAgICBsZXQgZmlyc3RFbmRDb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50O1xuXG4gICAgZm9yIChsZXQgaSA9IHRoaXMuY29sdW1ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldChpKTtcblxuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcblxuICAgICAgaWYgKGNvbHVtbi5maXhlZCA9PT0gJ2VuZCcgJiYgIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICBjb2x1bW5bJ3N0aWNreUVuZCddID0gYWNjdW11bGF0ZWRXaWR0aEZyb21FbmQgKyAncHgnO1xuICAgICAgICBmaXJzdEVuZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgYWNjdW11bGF0ZWRXaWR0aEZyb21FbmQgKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaXJzdEVuZENvbHVtbikgZmlyc3RFbmRDb2x1bW5bJ2lzRmlyc3RGaXhlZENvbHVtbiddID0gdHJ1ZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbkBpZiAoIWRpc3BsYXllZFJvd3MoKS5sZW5ndGgpIHtcbiAgPGRpdiBjbGFzcz1cImF4LWRhdGEtdGFibGUtZW1wdHktZGF0YVwiPlxuICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxzcGFuPk5vIFJlY29yZCBGb3VuZCE8L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cbn1cbjxkaXYgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXdyYXBwZXJcIj5cbiAgPHRhYmxlPlxuICAgIEBpZiAoc2hvd0hlYWRlcikge1xuICAgICAgPHRoZWFkIFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlcic6IGZpeGVkSGVhZGVyIH1cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWFsbG93UmVvcmRlcmluZ1wiXG4gICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGwgc3RpY2t5LXN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXNMYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoYy5hbGxvd1Jlc2l6aW5nICYmICFjLmZpeGVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGwgc3RpY2t5LWVuZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzRmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImMucmVuZGVySGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICB9XG4gICAgPHRib2R5IFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtcm93LWFsdGVybmF0aXZlJzogYWx0ZXJuYXRpdmUgfVwiPlxuICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZFJvd3MoKTsgbGV0IHJvd0luZGV4ID0gJGluZGV4OyB0cmFjayByb3dJbmRleCkge1xuICAgICAgICBAaWYgKHJvd1RlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9IH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx0clxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWZvY3VzZWRdPVwiZm9jdXNlZFJvdyAmJiByb3cgPT09IGZvY3VzZWRSb3dcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1pbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKHJvdylcIlxuICAgICAgICAgICAgc3R5bGUuaGVpZ2h0PVwie3sgaXRlbUhlaWdodCB9fXB4XCJcbiAgICAgICAgICAgIHN0eWxlLm1heC1oZWlnaHQ9XCJ7eyBpdGVtSGVpZ2h0IH19cHhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudCwgcm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXNMYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogcm93LCByb3dJbmRleDogY2FsY3VsYXRlUm93SW5kZXgocm93SW5kZXgpIH0gfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGFiZWxdPVwiYy5jYXB0aW9uXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAocm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImMucmVuZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiByb3csIHJvd0luZGV4OiBjYWxjdWxhdGVSb3dJbmRleChyb3dJbmRleCkgfSB9XCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cImxvYWRpbmcuYW5pbWF0aW9uXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pc0ZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogcm93LCByb3dJbmRleDogY2FsY3VsYXRlUm93SW5kZXgocm93SW5kZXgpIH0gfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj48L3RyPlxuICAgIDwvdGJvZHk+XG4gICAgQGlmIChzaG93Rm9vdGVyKSB7XG4gICAgICA8dGZvb3QgW25nQ2xhc3NdPVwieyAnYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyJzogZml4ZWRGb290ZXIgfVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbCBzdGlja3ktc3RhcnRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXNMYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImMucmVuZGVyRm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjLmFsbG93UmVzaXppbmcgJiYgIWMuZml4ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmVzaXplLWhhbmRsZVwiIChtb3VzZWRvd24pPVwib25SZXNpemVDb2x1bW5TdGFydCgkZXZlbnQsIHRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCkubGVuZ3RoICsgJGluZGV4KVwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbCBzdGlja3ktZW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXNGaXJzdF09XCJjWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rmb290PlxuICAgIH1cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG5AaWYgKHBhZ2luZykge1xuICA8ZGl2IGNsYXNzPVwiYXgtdGFibGUtZm9vdGVyXCIgI2Zvb3RlckNvbnRhaW5lcj5cbiAgICA8YXgtZGF0YS1wYWdlclxuICAgICAgI2RhdGFQYWdlclxuICAgICAgW2Rpc3BsYXlNb2RlXT1cIidjdXN0b20nXCJcbiAgICAgIChvbkNoYW5nZWQpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFt0b3RhbF09XCJkYXRhU291cmNlLnRvdGFsQ291bnRcIlxuICAgICAgW3NpemVdPVwiZGF0YVNvdXJjZS5wYWdlU2l6ZVwiXG4gICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICA+XG4gICAgICA8YXgtcHJlZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1udW1lcmljLXBhZ2luZ1wiPlxuICAgICAgICA8YXgtZGF0YS1wYWdlci1udW1lcmljLXNlbGVjdG9yPiA8L2F4LWRhdGEtcGFnZXItbnVtZXJpYy1zZWxlY3Rvcj5cbiAgICAgICAgPGF4LWRhdGEtcGFnZXItcGFnZS1zaXplcz4gPC9heC1kYXRhLXBhZ2VyLXBhZ2Utc2l6ZXM+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1wcmVmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLWlucHV0LXBhZ2luZ1wiPlxuICAgICAgICA8YXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+XG4gICAgICAgIDxheC1kYXRhLXBhZ2VyLWlucHV0LXNlbGVjdG9yPiA8L2F4LWRhdGEtcGFnZXItaW5wdXQtc2VsZWN0b3I+XG4gICAgICAgIDxheC1kYXRhLXBhZ2VyLW5leHQtYnV0dG9ucz4gPC9heC1kYXRhLXBhZ2VyLW5leHQtYnV0dG9ucz5cbiAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPGF4LXN1ZmZpeCBjbGFzcz1cImF4LWRhdGEtdGFibGUtaW5mb1wiPlxuICAgICAgICA8YXgtZGF0YS1wYWdlci1pbmZvPiA8L2F4LWRhdGEtcGFnZXItaW5mbz5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwicmVmcmVzaCgpXCI+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtZGF0YS1wYWdlcj5cbiAgPC9kaXY+XG59XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj4gPC9uZy1jb250ZW50PlxuIl19
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQTBFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkksT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7OztBQW1CdkYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFqQnpEOztRQWtCVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxVQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBTXJC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V0FBVztzQkFEVixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBWUssVUFBVTtzQkFEcEIsS0FBSztnQkFVTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLHFCQUFxQjtzQkFEcEIsTUFBTTtnQkFNRyxPQUFPO3NCQURoQixlQUFlO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtcGFnZXInO1xuaW1wb3J0IHsgQVhIdG1sVXRpbCwgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgYnVmZmVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlLCBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCwgQVhEYXRhVGFibGVSb3dDbGljaywgQVhEYXRhVGFibGVSb3dEYkNsaWNrIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICBpbnB1dHM6IFsnZGF0YVNvdXJjZSddLFxuICBvdXRwdXRzOiBbJ3NlbGVjdGVkUm93c0NoYW5nZSddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWEJhc2VEYXRhVGFibGUsXG4gICAgICB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEYXRhVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIF91bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgQFZpZXdDaGlsZCgnZGF0YVBhZ2VyJykgZGF0YVBhZ2VyO1xuXG4gIHByb3RlY3RlZCBydGwhOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRSb3dzOiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuICBwcm90ZWN0ZWQgcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHBhZ2VTaXplOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgY29sdW1uc0xpc3Q6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09PSAnZW5kJykpO1xuICBwcm90ZWN0ZWQgc3RhcnRGaXhlZENvbHVtbnNMaXN0OiBTaWduYWw8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ3N0YXJ0JykpO1xuICBwcm90ZWN0ZWQgbm9ybWFsQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkICE9PSAnZW5kJyAmJiBjLmZpeGVkICE9PSAnc3RhcnQnKSk7XG5cbiAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtblByb3AgPSB7XG4gICAgc3RhcnRYOiAwLFxuICAgIHN0YXJ0V2lkdGg6IDAsXG4gICAgY29sdW1uSW5kZXg6IDAsXG4gICAgbmV3Q29sdW1uV2lkdGg6IDAsXG4gICAgdGhFbGVtZW50OiBudWxsLFxuICB9O1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRvdGFsUm93cyA9IDA7XG4gIHByb3RlY3RlZCBjdXJyZW50UGFnZSA9IDA7XG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcbiAgcHJvdGVjdGVkIHN0YXJ0Um93SW5kZXggPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgZW1wdHlUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGFsdGVybmF0aXZlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBmaXhlZEhlYWRlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd0Zvb3RlciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGZpeGVkRm9vdGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICBASW5wdXQoKVxuICBhbGxvd1Jlb3JkZXJpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwYWdpbmcgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGZldGNoRGF0YU1vZGU6ICdhdXRvJyB8ICdtYW51YWwnID0gJ2F1dG8nO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmc6IHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGFuaW1hdGlvbjogYm9vbGVhbjtcbiAgICBsb2FkaW5nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgfSA9IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGZvY3VzZWRSb3coKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRSb3c7XG4gIH1cbiAgcHVibGljIHNldCBmb2N1c2VkUm93KHY6IHVua25vd24pIHtcbiAgICB0aGlzLl9mb2N1c2VkUm93ID0gdjtcbiAgICB0aGlzLmZvY3VzZWRSb3dDaGFuZ2UuZW1pdCh2KTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNvbHVtbnNPcmRlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIHByaXZhdGUgY2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBldmVudDogTW91c2VFdmVudDsgaXRlbTogYW55IH0+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnJ0bCA9IEFYSHRtbFV0aWwuaXNSdGwodGhpcy5nZXRIb3N0RWxlbWVudCgpKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UudXNlQ2FjaGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5mZXRjaERhdGFNb2RlID09ICdhdXRvJykge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2UoMCk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQobmV3IEFycmF5KHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSkpO1xuICAgIHRoaXMudG90YWxSb3dzID0gdGhpcy5kYXRhU291cmNlLml0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLmRhdGFTb3VyY2Uub25Mb2FkaW5nQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChkYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KGRhdGEuaXRlbXMpO1xuICAgICAgdGhpcy50b3RhbFJvd3MgPSBkYXRhLnRvdGFsQ291bnQ7XG4gICAgICB0aGlzLmhhc0l0ZW1zID0gZGF0YS50b3RhbENvdW50ID4gMDtcbiAgICB9KTtcblxuICAgIHRoaXMucGFnZVNpemUuc2V0KHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgYnVmZmVyKHRoaXMuY2xpY2tTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpKSxcbiAgICAgICAgZmlsdGVyKChjbGlja0FycmF5KSA9PiBjbGlja0FycmF5Lmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbGlja0FycmF5KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlUm93RG91YmxlQ2xpY2soY2xpY2tBcnJheVswXS5ldmVudCwgY2xpY2tBcnJheVswXS5pdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpO1xuICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KHRoaXMuY29sdW1ucy50b0FycmF5KCkpO1xuICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoY29scykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoY29scy50b0FycmF5KCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueSwgYW55LCBhbnk+KSB7XG4gICAgY29uc3QgY2xvbmVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnNMaXN0KCldO1xuICAgIG1vdmVJdGVtSW5BcnJheShjbG9uZWRDb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KGNsb25lZENvbHVtbnMpO1xuXG4gICAgdGhpcy5vbkNvbHVtbnNPcmRlckNoYW5nZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IGV2ZW50IH0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0Lm5leHQoeyBldmVudCwgaXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkUm93ID09IGl0ZW0pIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IGl0ZW07XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogaXRlbSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUGFnZUNoYW5nZWQoZXZlbnQ6IEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlQ2hhbmdlZCA9IGV2ZW50LnBhZ2UgLSAxICE9IHRoaXMucGFnZSgpO1xuICAgICAgY29uc3QgcGFnZVNpemVDaGFuZ2VkID0gZXZlbnQudGFrZSAhPSB0aGlzLnBhZ2VTaXplKCk7XG5cbiAgICAgIGlmIChwYWdlQ2hhbmdlZCB8fCBwYWdlU2l6ZUNoYW5nZWQpIHtcbiAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlLnNldChldmVudC5wYWdlIC0gMSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2UodGhpcy5wYWdlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhZ2VTaXplQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMucGFnZVNpemUuc2V0KGV2ZW50LnRha2UpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlU2l6ZSh0aGlzLnBhZ2VTaXplKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXllZCByb3dzIGFuZCBkYXRhIHNvdXJjZVxuICAgICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLnBhZ2VTaXplKCkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUm93RG91YmxlQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZm9jdXNlZFJvdyA9IGl0ZW07XG4gICAgLy9cbiAgICB0aGlzLm9uUm93RGJDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUNvbHVtbkNsaWNrKGU6IE1vdXNlRXZlbnQsIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIGlmICghc29ydCkge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmRhdGFGaWVsZCxcbiAgICAgICAgICBkaXI6ICdhc2MnLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzb3J0LmRpciA9PSAnYXNjJykge1xuICAgICAgICAgIHNvcnQuZGlyID0gJ2Rlc2MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmlsdGVyKChjKSA9PiBjICE9IHNvcnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5yZWZyZXNoKCk7XG4gICAgaWYgKHRoaXMuZGF0YVBhZ2VyKSB7XG4gICAgICB0aGlzLmRhdGFQYWdlci5nb0ZpcnN0UGFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVSb3dJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSAqIHRoaXMucGFnZSgpICsgaW5kZXg7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SZXNpemVDb2x1bW5TdGFydChldmVudDogTW91c2VFdmVudCwgY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRYID0gZXZlbnQucGFnZVg7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0V2lkdGggPSBwYXJzZUludCh0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnN0eWxlLndpZHRoKTtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXggPSBjb2x1bW5JbmRleDtcbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVDb2x1bW5Nb3ZlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplQ29sdW1uRW5kKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZXNpemVDb2x1bW5Nb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgZGlmZlggPSBldmVudC5wYWdlWCAtIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFg7XG4gICAgY29uc3QgbmV3V2lkdGggPSB0aGlzLnJ0bCA/IHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoIC0gZGlmZlggOiB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCArIGRpZmZYO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtNYXRoLm1heCgxMDAsIG5ld1dpZHRoKX1weGA7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25ldy13aWR0aCcsIGAke25ld1dpZHRofWApO1xuICB9O1xuXG4gIHByaXZhdGUgb25SZXNpemVDb2x1bW5FbmQgPSAoKTogdm9pZCA9PiB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZUNvbHVtbk1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplQ29sdW1uRW5kKTtcblxuICAgIGNvbnN0IG5ld1dpZHRoID0gcGFyc2VJbnQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbmV3LXdpZHRoJykudmFsdWUpO1xuICAgIHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KS53aWR0aCA9IGAke01hdGgubWF4KDEwMCwgbmV3V2lkdGgpfXB4YDtcbiAgICB0aGlzLnJlc2V0UmVzaXppbmdQcm9jZXNzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZXNldFJlc2l6aW5nUHJvY2VzcygpIHtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmV3LXdpZHRoJyk7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wID0ge1xuICAgICAgc3RhcnRYOiAwLFxuICAgICAgc3RhcnRXaWR0aDogMCxcbiAgICAgIGNvbHVtbkluZGV4OiAwLFxuICAgICAgbmV3Q29sdW1uV2lkdGg6IDAsXG4gICAgICB0aEVsZW1lbnQ6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpIHtcbiAgICBsZXQgdG90YWxXaWR0aCA9IDA7XG4gICAgbGV0IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgPSAwO1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLndpZHRoIGFzIHN0cmluZyk7XG4gICAgICBpZiAoIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICB0b3RhbFdpZHRoICs9IHdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBsYXN0U3RhcnRDb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50O1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcblxuICAgICAgaWYgKGNvbHVtbi5maXhlZCA9PT0gJ3N0YXJ0JyAmJiAhaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGNvbHVtblsnc3RpY2t5U3RhcnQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKyAncHgnO1xuICAgICAgICBsYXN0U3RhcnRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGxhc3RTdGFydENvbHVtbikgbGFzdFN0YXJ0Q29sdW1uWydpc0xhc3RGaXhlZENvbHVtbiddID0gdHJ1ZTtcblxuICAgIGxldCBhY2N1bXVsYXRlZFdpZHRoRnJvbUVuZCA9IDA7XG4gICAgbGV0IGZpcnN0RW5kQ29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudDtcblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQoaSk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLndpZHRoIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmIChjb2x1bW4uZml4ZWQgPT09ICdlbmQnICYmICFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgY29sdW1uWydzdGlja3lFbmQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICsgJ3B4JztcbiAgICAgICAgZmlyc3RFbmRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICs9IHdpZHRoO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlyc3RFbmRDb2x1bW4pIGZpcnN0RW5kQ29sdW1uWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXSA9IHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPiA8L25nLWNvbnRlbnQ+XG5AaWYgKCFkaXNwbGF5ZWRSb3dzKCkubGVuZ3RoKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWVtcHR5LWRhdGFcIj5cbiAgICBAaWYgKGVtcHR5VGVtcGxhdGUpIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8c3Bhbj5ObyBSZWNvcmQgRm91bmQhPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG59XG48ZGl2IGNsYXNzPVwiYXgtZGF0YS10YWJsZS13cmFwcGVyXCI+XG4gIDx0YWJsZT5cbiAgICBAaWYgKHNob3dIZWFkZXIpIHtcbiAgICAgIDx0aGVhZCBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXInOiBmaXhlZEhlYWRlciB9XCI+XG4gICAgICAgIDx0clxuICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd1Jlb3JkZXJpbmdcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsIHN0aWNreS1zdGFydFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzTGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGMuYWxsb3dSZXNpemluZyAmJiAhYy5maXhlZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCIgKG1vdXNlZG93bik9XCJvblJlc2l6ZUNvbHVtblN0YXJ0KCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsIHN0aWNreS1lbmRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pc0ZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgfVxuICAgIDx0Ym9keSBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXJvdy1hbHRlcm5hdGl2ZSc6IGFsdGVybmF0aXZlIH1cIj5cbiAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWRSb3dzKCk7IGxldCByb3dJbmRleCA9ICRpbmRleDsgdHJhY2sgcm93SW5kZXgpIHtcbiAgICAgICAgQGlmIChyb3dUZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogcm93LCByb3dJbmRleDogcm93SW5kZXggfSB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgcm93ID09PSBmb2N1c2VkUm93XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtaW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLXNlbGVjdGVkXT1cInNlbGVjdGVkUm93cy5pbmNsdWRlcyhyb3cpXCJcbiAgICAgICAgICAgIHN0eWxlLmhlaWdodD1cInt7IGl0ZW1IZWlnaHQgfX1weFwiXG4gICAgICAgICAgICBzdHlsZS5tYXgtaGVpZ2h0PVwie3sgaXRlbUhlaWdodCB9fXB4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktc3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzTGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImMuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChyb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IHJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KHJvd0luZGV4KSB9IH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgQGlmIChjLmxvYWRpbmdFbmFibGVkICYmIGxvYWRpbmcuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRpbmcubG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmcubG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogcm93LCByb3dJbmRleDogY2FsY3VsYXRlUm93SW5kZXgocm93SW5kZXgpIH0gfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc3RpY2t5LWVuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXNGaXJzdF09XCJjWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImMuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChyb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IHJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KHJvd0luZGV4KSB9IH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgQGlmIChjLmxvYWRpbmdFbmFibGVkICYmIGxvYWRpbmcuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRpbmcubG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmcubG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgPHRyIGNsYXNzPVwiZW1wdHktcm93XCI+PC90cj5cbiAgICA8L3Rib2R5PlxuICAgIEBpZiAoc2hvd0Zvb3Rlcikge1xuICAgICAgPHRmb290IFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlcic6IGZpeGVkRm9vdGVyIH1cIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGwgc3RpY2t5LXN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzTGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoYy5hbGxvd1Jlc2l6aW5nICYmICFjLmZpeGVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGwgc3RpY2t5LWVuZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzRmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImMucmVuZGVyRm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90Zm9vdD5cbiAgICB9XG4gIDwvdGFibGU+XG48L2Rpdj5cblxuQGlmIChwYWdpbmcpIHtcbiAgPGRpdiBjbGFzcz1cImF4LXRhYmxlLWZvb3RlclwiICNmb290ZXJDb250YWluZXI+XG4gICAgPGF4LWRhdGEtcGFnZXJcbiAgICAgICNkYXRhUGFnZXJcbiAgICAgIFtkaXNwbGF5TW9kZV09XCInY3VzdG9tJ1wiXG4gICAgICAob25DaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBbdG90YWxdPVwiZGF0YVNvdXJjZS50b3RhbENvdW50XCJcbiAgICAgIFtzaXplXT1cImRhdGFTb3VyY2UucGFnZVNpemVcIlxuICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgPlxuICAgICAgPGF4LXByZWZpeCBjbGFzcz1cImF4LWRhdGEtdGFibGUtbnVtZXJpYy1wYWdpbmdcIj5cbiAgICAgICAgPGF4LWRhdGEtcGFnZXItbnVtZXJpYy1zZWxlY3Rvcj4gPC9heC1kYXRhLXBhZ2VyLW51bWVyaWMtc2VsZWN0b3I+XG4gICAgICAgIDxheC1kYXRhLXBhZ2VyLXBhZ2Utc2l6ZXM+IDwvYXgtZGF0YS1wYWdlci1wYWdlLXNpemVzPlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8YXgtcHJlZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1pbnB1dC1wYWdpbmdcIj5cbiAgICAgICAgPGF4LWRhdGEtcGFnZXItcHJldi1idXR0b25zPiA8L2F4LWRhdGEtcGFnZXItcHJldi1idXR0b25zPlxuICAgICAgICA8YXgtZGF0YS1wYWdlci1pbnB1dC1zZWxlY3Rvcj4gPC9heC1kYXRhLXBhZ2VyLWlucHV0LXNlbGVjdG9yPlxuICAgICAgICA8YXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLWluZm9cIj5cbiAgICAgICAgPGF4LWRhdGEtcGFnZXItaW5mbz4gPC9heC1kYXRhLXBhZ2VyLWluZm8+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tcmVmcmVzaFwiPjwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWRhdGEtcGFnZXI+XG4gIDwvZGl2PlxufVxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiJdfQ==
|
@@ -793,6 +793,7 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
793
793
|
this.totalRows = data.totalCount;
|
794
794
|
this.hasItems = data.totalCount > 0;
|
795
795
|
});
|
796
|
+
this.pageSize.set(this.dataSource.pageSize);
|
796
797
|
//
|
797
798
|
this.clickSubject
|
798
799
|
.pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))
|
@@ -842,14 +843,14 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
842
843
|
if (pageChanged || pageSizeChanged) {
|
843
844
|
if (pageChanged) {
|
844
845
|
this.page.set(event.page - 1);
|
846
|
+
this.dataSource.setPage(this.page());
|
845
847
|
}
|
846
848
|
if (pageSizeChanged) {
|
847
849
|
this.pageSize.set(event.take);
|
850
|
+
this.dataSource.setPageSize(this.pageSize());
|
848
851
|
}
|
849
852
|
// Update displayed rows and data source
|
850
853
|
this.displayedRows.set(new Array(this.pageSize()));
|
851
|
-
this.dataSource.setPage(this.page());
|
852
|
-
this.dataSource.setPageSize(this.pageSize());
|
853
854
|
}
|
854
855
|
}
|
855
856
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../libs/components/data-table/src/lib/base-data-table.class.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column-resizable.directive.ts","../../../../libs/components/data-table/src/lib/columns/data-text-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-command-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-index-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-select-column.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.html","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.ts","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.html","../../../../libs/components/data-table/src/lib/data-table.module.ts","../../../../libs/components/data-table/src/acorex-components-data-table.ts"],"sourcesContent":["import { AXDataSource, AXEvent, MXBaseComponent, convertArrayToDataSource } from '@acorex/components/common';\nimport { EventEmitter, Injectable, Input, Output, WritableSignal, signal } from '@angular/core';\nimport _ from 'lodash';\n\nexport interface AXDataTableScrollIndexChanged extends AXEvent {\n index: number;\n}\n\nexport interface AXDataTableRowClick extends AXEvent {\n data?: any;\n}\n\nexport interface AXColumnsOrderChangedEvent extends AXEvent {\n data?: any;\n}\n\nexport interface AXDataTableRowDbClick extends AXDataTableRowClick {}\n\n@Injectable()\nexport abstract class AXBaseDataTable extends MXBaseComponent {\n @Input() dataSource: AXDataSource<unknown> = convertArrayToDataSource([]);\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\n\n private _selectedRows: WritableSignal<unknown[]> = signal([]);\n @Input()\n public get selectedRows(): unknown[] {\n return this._selectedRows();\n }\n public set selectedRows(v: unknown[]) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n\n public selectRows(...rows: unknown[]) {\n this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n\n public unSelectRows(...rows: unknown[]) {\n this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n}\n","import { AXSortOrder } from '@acorex/components/common';\nimport { Injectable, Input, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport abstract class AXDataTableColumnComponent {\n @Input()\n caption: string;\n\n @Input()\n width: string | number = 'auto';\n\n @Input()\n fixed: 'start' | 'end' | undefined;\n\n @Input()\n allowSorting = false;\n\n @Input()\n allowResizing = false;\n\n @Input()\n sortIndex: number | undefined = undefined;\n\n @Input()\n sortOrder: AXSortOrder | undefined = undefined;\n\n abstract get renderCellTemplate(): TemplateRef<unknown>;\n abstract get renderHeaderTemplate(): TemplateRef<unknown>;\n abstract get renderFooterTemplate(): TemplateRef<unknown>;\n\n abstract get loadingEnabled(): boolean;\n\n abstract get name(): string;\n\n get cssClass(): string | undefined {\n return null;\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, NgZone, Renderer2 } from '@angular/core';\nimport { Subject, debounceTime } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Directive({\n selector: '[ax-table-column-resizble]',\n})\nexport class AXDataTableColumnResizableDirective {\n @Input('ax-table-column-resizble')\n public column: AXDataTableColumnComponent;\n private resize$ = new Subject<MouseEvent>();\n private startX: number;\n private startWidth: number;\n private onMouseMoveRawBound: (event: MouseEvent) => void;\n private onMouseUpBound: () => void;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n if (isBrowser()) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n document.addEventListener('mousemove', this.onMouseMoveRawBound);\n document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n\n onMouseMoveRaw(event: MouseEvent) {\n this.resize$.next(event);\n }\n\n onMouseMove(event: MouseEvent) {\n if (isBrowser()) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n }\n\n onMouseUp() {\n document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n}\n","import { AXFormatOptions, AXFormatService } from '@acorex/core/format';\nimport { Memorize } from '@acorex/core/memorize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n {{ getDisplayText(row.data, this.dataField) }}\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n})\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n @Input()\n dataField: string;\n\n @Input()\n wrapText = false;\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `cl-${this.dataField}`;\n }\n\n private formatService = inject(AXFormatService);\n\n @Memorize()\n protected getDisplayText(rowData: unknown, dataField: string): string {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format as any, this.formatOptions);\n }\n\n @Input()\n format: string;\n\n @Input()\n formatOptions: AXFormatOptions;\n}\n","import { AXButtonItemComponent, AXButtonItemListItem } from '@acorex/components/button';\nimport { AXButtonClickEvent, AXItemClickEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\nexport type AXRowCommandItem = AXButtonItemListItem;\n\nexport type AXRowCommandItemClickEvent = AXButtonClickEvent;\n\nexport abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n protected grid = inject(AXBaseDataTable);\n protected cdr = inject(ChangeDetectorRef);\n\n override allowSorting = false;\n\n get loadingEnabled(): boolean {\n return false;\n }\n\n override get cssClass() {\n return 'ax-command-column';\n }\n\n onItemClick: EventEmitter<AXRowCommandItemClickEvent> = new EventEmitter<AXRowCommandItemClickEvent>();\n}\n\n@Component({\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\" (onOpened)=\"handleOnOpened(row.data)\" (onClosed)=\"handleOnClosed()\">\n @if (_items.length) {\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event, row.data)\" [items]=\"_items\"> </ax-button-item-list>\n } @else {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n})\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-dd-cmd';\n }\n\n protected _items: AXRowCommandItem[] = [];\n\n @Input()\n items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[] | Promise<AXRowCommandItem[]>) = [];\n\n protected async handleOnOpened(rowData) {\n if (Array.isArray(this.items)) {\n this._items = this.items;\n } else typeof this.items == 'function';\n {\n const result = (this['items'] as any)(rowData);\n if (Array.isArray(result)) {\n this._items = result;\n } else if (result instanceof Promise) {\n this._items = await result;\n }\n }\n this.cdr.detectChanges();\n }\n\n protected handleOnClosed() {\n this._items = [];\n }\n\n protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: e.name,\n };\n this.onItemClick.emit(args);\n }\n}\n\n@Component({\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (item of getItems(row.data); track $index) {\n <button\n [style.color]=\"'rgba(var(--ax-color-' + (item.color ?? 'primary)')\"\n [disabled]=\"item.disabled\"\n [class.ax-state-disabled]=\"item.disabled\"\n [axRipple]=\"!item.disabled\"\n (click)=\"handleOnItemClick($event, item, row.data)\"\n >\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n})\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-in-cmd';\n }\n\n @Input()\n items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[]) = [];\n\n protected getItems(rowData: unknown): AXRowCommandItem[] {\n if (Array.isArray(this.items)) {\n return this.items;\n } else typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n\n protected handleOnItemClick(e: MouseEvent, item: AXRowCommandItem, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: item.name,\n };\n this.onItemClick.emit(args);\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-index-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {\n private grid = inject(AXBaseDataTable);\n private unsubscriber = inject(AXUnsubscriber);\n\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-inx';\n }\n\n @Input()\n padZero = false;\n\n protected formatCount = 1;\n\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n\n override allowSorting = false;\n\n get loadingEnabled(): boolean {\n return false;\n }\n\n override get cssClass(): string | undefined {\n return 'ax-index-column';\n }\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n />\n </ng-template>\n <ng-template #cell let-row>\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [disabled]=\"!row.data\"\n (change)=\"handleChange(row.data)\"\n [checked]=\"isSelected(row.data)\"\n />\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n private grid = inject(AXBaseDataTable);\n\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-select';\n }\n\n private getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n\n protected isSelected(item: unknown) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n\n protected checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return rows[0] && rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n }\n\n protected checkAnySelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return (\n rows[0] &&\n !this.checkAllSelected(rows) &&\n rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element))\n );\n }\n\n protected handleChange(item: unknown) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n } else {\n this.grid.selectRows(item);\n }\n }\n\n protected handleSelectAll(rows: any) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n } else {\n this.grid.selectRows(...rows);\n }\n }\n\n get loadingEnabled(): boolean {\n return false;\n }\n}\n","import { AXDataPagerChangedEvent } from '@acorex/components/data-pager';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n Signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXColumnsOrderChangedEvent, AXDataTableRowClick, AXDataTableRowDbClick } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\n\n@Component({\n selector: 'ax-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource'],\n outputs: ['selectedRowsChange'],\n providers: [\n {\n provide: AXBaseDataTable,\n useExisting: AXDataTableComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {\n private _unsubscriber = inject(AXUnsubscriber);\n private _zone = inject(NgZone);\n\n @ViewChild('dataPager') dataPager;\n\n protected rtl!: boolean;\n\n protected displayedRows: WritableSignal<any[]> = signal([]);\n protected page: WritableSignal<number> = signal(0);\n protected pageSize: WritableSignal<number> = signal(0);\n protected isLoading: WritableSignal<boolean> = signal(true);\n\n protected columnsList: WritableSignal<any[]> = signal([]);\n\n protected endFixedColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed === 'end'));\n protected startFixedColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed === 'start'));\n protected normalColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'));\n\n protected resizeColumnProp = {\n startX: 0,\n startWidth: 0,\n columnIndex: 0,\n newColumnWidth: 0,\n thElement: null,\n };\n protected hasItems = false;\n protected totalRows = 0;\n protected currentPage = 0;\n protected totalPages = 0;\n protected startRowIndex = 0;\n\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n @Input()\n alternative = true;\n\n @Input()\n showHeader = true;\n\n @Input()\n fixedHeader = true;\n\n @Input()\n showFooter = false;\n\n @Input()\n fixedFooter = true;\n\n @Input()\n itemHeight: number | 'auto' = 40;\n\n @Input()\n allowReordering = false;\n\n @Input()\n paging = true;\n\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n private _focusedRow: unknown;\n @Input()\n public get focusedRow(): unknown {\n return this._focusedRow;\n }\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n @Output()\n onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent> = new EventEmitter<AXColumnsOrderChangedEvent>();\n\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n override ngOnInit() {\n super.ngOnInit();\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items);\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n });\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n\n ngAfterViewInit(): void {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n });\n }\n\n protected drop(event: CdkDragDrop<any, any, any>) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n\n this.onColumnsOrderChanged.emit({\n component: this,\n data: { event },\n isUserInteraction: true,\n });\n }\n\n protected handleRowClick(event: MouseEvent, item: unknown) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n\n private handleRowSingleClick(event: Event, item: any): void {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n } else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n protected onPageChanged(event: AXDataPagerChangedEvent) {\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n }\n\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n }\n\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n this.dataSource.setPage(this.page());\n this.dataSource.setPageSize(this.pageSize());\n }\n }\n }\n\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n } else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n } else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n\n protected getSort(column: AXDataTableColumnComponent): string | undefined {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n\n public refresh() {\n this.dataSource.refresh();\n if (this.dataPager) {\n this.dataPager.goFirstPage();\n }\n }\n\n protected calculateRowIndex(index: number) {\n return this.dataSource.pageSize * this.page() + index;\n }\n\n protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = (event.target as HTMLElement).parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n this._zone.runOutsideAngular(() => {\n document.addEventListener('mousemove', this.onResizeColumnMove);\n document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n\n private onResizeColumnMove = (event: MouseEvent): void => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n\n private onResizeColumnEnd = (): void => {\n document.removeEventListener('mousemove', this.onResizeColumnMove);\n document.removeEventListener('mouseup', this.onResizeColumnEnd);\n\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width').value);\n this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\n this.resetResizingProcess();\n };\n\n private resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = {\n startX: 0,\n startWidth: 0,\n columnIndex: 0,\n newColumnWidth: 0,\n thElement: null,\n };\n }\n\n private calculateStickyColumnsPositions() {\n let totalWidth = 0;\n let accumulatedWidthFromStart = 0;\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n if (!isNaN(width)) {\n totalWidth += width;\n }\n });\n let lastStartColumn: AXDataTableColumnComponent;\n\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn) lastStartColumn['isLastFixedColumn'] = true;\n\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn: AXDataTableColumnComponent;\n\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n\n const width = parseInt(column.width as string);\n\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn) firstEndColumn['isFirstFixedColumn'] = true;\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n@if (!displayedRows().length) {\n <div class=\"ax-data-table-empty-data\">\n @if (emptyTemplate) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n } @else {\n <span>No Record Found!</span>\n }\n </div>\n}\n<div class=\"ax-data-table-wrapper\">\n <table>\n @if (showHeader) {\n <thead [ngClass]=\"{ 'ax-data-table-sticky-header': fixedHeader }\">\n <tr\n [cdkDropListDisabled]=\"!allowReordering\"\n cdkDropList\n cdkScrollable\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (c of startFixedColumnsList(); track $index) {\n <th\n cdkDrag\n [cdkDragDisabled]=\"true\"\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell sticky-start\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </th>\n }\n @for (c of normalColumnsList(); track $index) {\n <th\n cdkDrag\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n @if (c.allowResizing && !c.fixed) {\n <div class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></div>\n }\n </th>\n }\n <th></th>\n @for (c of endFixedColumnsList(); track $index) {\n <th\n cdkDrag\n [cdkDragDisabled]=\"true\"\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell sticky-end\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody [ngClass]=\"{ 'ax-data-table-row-alternative': alternative }\">\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\n @if (rowTemplate) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: row, rowIndex: rowIndex } }\"> </ng-container>\n } @else {\n <tr\n [class.ax-state-focused]=\"focusedRow && row === focusedRow\"\n [attr.data-index]=\"rowIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(row)\"\n style.height=\"{{ itemHeight }}px\"\n style.max-height=\"{{ itemHeight }}px\"\n (click)=\"handleRowClick($event, row)\"\n >\n @for (c of startFixedColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [class.sticky-start]=\"true\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n @for (c of normalColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n <td></td>\n @for (c of endFixedColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [class.sticky-end]=\"true\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n </tr>\n }\n }\n\n <tr class=\"empty-row\"></tr>\n </tbody>\n @if (showFooter) {\n <tfoot [ngClass]=\"{ 'ax-data-table-sticky-footer': fixedFooter }\">\n <tr>\n @for (c of startFixedColumnsList(); track $index) {\n <td\n class=\"ax-data-table-sticky-footer-cell sticky-start\"\n [class.ax-data-table-sticky-footer-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </td>\n }\n @for (c of normalColumnsList(); track $index) {\n <td\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n @if (c.allowResizing && !c.fixed) {\n <div class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></div>\n }\n </td>\n }\n <td></td>\n @for (c of endFixedColumnsList(); track $index) {\n <td\n class=\"ax-data-table-sticky-footer-cell sticky-end\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </td>\n }\n </tr>\n </tfoot>\n }\n </table>\n</div>\n\n@if (paging) {\n <div class=\"ax-table-footer\" #footerContainer>\n <ax-data-pager\n #dataPager\n [displayMode]=\"'custom'\"\n (onChanged)=\"onPageChanged($event)\"\n [total]=\"dataSource.totalCount\"\n [size]=\"dataSource.pageSize\"\n [isLoading]=\"isLoading()\"\n >\n <ax-prefix class=\"ax-data-table-numeric-paging\">\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\n </ax-prefix>\n <ax-prefix class=\"ax-data-table-input-paging\">\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\n </ax-prefix>\n <ax-suffix class=\"ax-data-table-info\">\n <ax-data-pager-info> </ax-data-pager-info>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-data-pager>\n </div>\n}\n<ng-content select=\"ax-footer\"> </ng-content>\n","import { AXListDataSource, AXPagedComponent, AXValueChangedEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\n\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXDataTableRowClick, AXDataTableRowDbClick, AXDataTableScrollIndexChanged } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\n\n@Component({\n selector: 'ax-infinite-scroll-data-table',\n templateUrl: './infinite-scroll-data-table.component.html',\n styleUrls: ['./infinite-scroll-data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n ],\n\n outputs: ['selectedRowsChange'],\n inputs: ['dataSource'],\n})\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable implements OnInit, DoCheck {\n private ngZone = inject(NgZone);\n\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n protected startFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n\n protected endFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n\n protected notFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n\n protected notFixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n\n protected fixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n\n @Output()\n onPageChanged: EventEmitter<AXValueChangedEvent<number>> = new EventEmitter<AXValueChangedEvent<number>>();\n\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n @Input()\n showHeader = true;\n\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n protected listDataSource: AXListDataSource<unknown>;\n protected isLoading: WritableSignal<boolean> = signal(true);\n protected hasItems = false;\n protected totalRows = 0;\n protected currentPage = 0;\n protected totalPages = 0;\n protected startRowIndex = 0;\n private lastIndex = 0;\n\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n private _focusedRow: unknown;\n @Input()\n public get focusedRow(): unknown {\n return this._focusedRow;\n }\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n @Input()\n itemHeight: number | 'auto' = 40;\n\n protected width = '100%';\n protected height = '100%';\n\n @ViewChild(CdkVirtualScrollViewport, { static: true })\n private viewport: CdkVirtualScrollViewport;\n\n @Output()\n onScrolledIndexChanged: EventEmitter<AXDataTableScrollIndexChanged> = new EventEmitter<AXDataTableScrollIndexChanged>();\n\n trackByIdx(i) {\n return i;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource<unknown>({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n @ViewChild('headerContainer') headerContainer: ElementRef<HTMLDivElement>;\n @ViewChild('footerContainer') footerContainer: ElementRef;\n @ViewChild('scrolling', { static: true })\n scrollableContainer: ElementRef<HTMLDivElement>;\n\n protected _handleOnscrolledIndexChange(e: number) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n\n private updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1) this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows) this.startRowIndex = this.totalRows;\n }\n\n private updateHeight() {\n this.height = `calc(100% - ${\n (this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)\n }px)`;\n }\n\n private updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n\n private updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n\n // Function to copy fixed columns\n private copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector<HTMLTableElement>('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n\n public render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n\n public refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n\n protected handleRowClick(event: MouseEvent, item: unknown) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n\n private handleRowSingleClick(event: Event, item: any): void {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n } else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n } else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n } else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n\n protected getSort(column: AXDataTableColumnComponent): string | undefined {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n\n protected _handleOnScroll() {\n this.updateHScroll();\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n<!------------------- Header contents ------------------->\n@if (showHeader) {\n <div class=\"ax-header-content\">\n <div class=\"ax-header-columns\">\n <table tabindex=\"0\" [style.width]=\"width\" #headerContainer>\n <thead>\n <tr>\n @for (c of notFixedColumn(); track c.name) {\n <th\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container *ngTemplateOutlet=\"c.renderHeaderTemplate\"></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n <!-- @if(c.allowResizing)\n {\n <div class=\"ax-resize-handle\" [ax-table-column-resizble]=\"c\"></div>\n } -->\n </th>\n }\n <th></th>\n </tr>\n </thead>\n </table>\n </div>\n </div>\n}\n\n<!------------------- Body contents ------------------->\n<div [style.height]=\"height\" class=\"ax-body-content\">\n <div class=\"ax-body-columns\">\n <div cdkVirtualScrollingElement #scrolling [style.height]=\"'100%'\" (scroll)=\"_handleOnScroll()\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight\"\n [style.--item-height]=\"itemHeight + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <table tabindex=\"0\" class=\"ax-table-body ax-relative\" [style.width]=\"width\">\n <colgroup>\n @for (c of notFixedColumn(); track c.name) {\n <col [style.width]=\"c.width\" />\n }\n <col />\n </colgroup>\n <tbody>\n <ng-container\n *cdkVirtualFor=\"let item of listDataSource; templateCacheSize: 100; let i = index; trackBy: trackByIdx; let rIndex = index\"\n >\n <!------------------- custom row template------------------->\n @if (rowTemplate != null) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"> </ng-container>\n } @else {\n <!------------------- normal row template------------------->\n <tr\n [class.ax-state-focused]=\"focusedRow && item === focusedRow\"\n [attr.data-index]=\"rIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(item)\"\n (click)=\"handleRowClick($event, item)\"\n >\n <!------------------- start fixed column ------------------->\n\n <!------------------- Not fixed column ------------------->\n @for (c of notFixedColumn(); track c.name) {\n <td [attr.data-label]=\"c.caption\" tabindex=\"0\" [class]=\"c.cssClass\">\n @if (item && !isLoading()) {\n <!------------------- render cell ------------------->\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"\n ></ng-container>\n } @else {\n <!------------------- render loading ------------------->\n @if (c.loadingEnabled && loading) {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n </td>\n }\n <td></td>\n </tr>\n }\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n<div class=\"ax-table-footer\" #footerContainer>\n <div class=\"ax-table-info\">\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </div>\n <ng-content select=\"ax-footer\"> </ng-content>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule, AXRippleDirective } from '@acorex/components/common';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent } from './columns/row-command-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\n\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDataTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i5","i1","i4"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../../../../libs/components/data-table/src/lib/base-data-table.class.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column.ts","../../../../libs/components/data-table/src/lib/columns/data-table-column-resizable.directive.ts","../../../../libs/components/data-table/src/lib/columns/data-text-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-command-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-index-column.component.ts","../../../../libs/components/data-table/src/lib/columns/row-select-column.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.ts","../../../../libs/components/data-table/src/lib/data-table/data-table.component.html","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.ts","../../../../libs/components/data-table/src/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.html","../../../../libs/components/data-table/src/lib/data-table.module.ts","../../../../libs/components/data-table/src/acorex-components-data-table.ts"],"sourcesContent":["import { AXDataSource, AXEvent, MXBaseComponent, convertArrayToDataSource } from '@acorex/components/common';\nimport { EventEmitter, Injectable, Input, Output, WritableSignal, signal } from '@angular/core';\nimport _ from 'lodash';\n\nexport interface AXDataTableScrollIndexChanged extends AXEvent {\n index: number;\n}\n\nexport interface AXDataTableRowClick extends AXEvent {\n data?: any;\n}\n\nexport interface AXColumnsOrderChangedEvent extends AXEvent {\n data?: any;\n}\n\nexport interface AXDataTableRowDbClick extends AXDataTableRowClick {}\n\n@Injectable()\nexport abstract class AXBaseDataTable extends MXBaseComponent {\n @Input() dataSource: AXDataSource<unknown> = convertArrayToDataSource([]);\n\n @Output()\n selectedRowsChange: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\n\n private _selectedRows: WritableSignal<unknown[]> = signal([]);\n @Input()\n public get selectedRows(): unknown[] {\n return this._selectedRows();\n }\n public set selectedRows(v: unknown[]) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n\n public selectRows(...rows: unknown[]) {\n this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n\n public unSelectRows(...rows: unknown[]) {\n this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n}\n","import { AXSortOrder } from '@acorex/components/common';\nimport { Injectable, Input, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport abstract class AXDataTableColumnComponent {\n @Input()\n caption: string;\n\n @Input()\n width: string | number = 'auto';\n\n @Input()\n fixed: 'start' | 'end' | undefined;\n\n @Input()\n allowSorting = false;\n\n @Input()\n allowResizing = false;\n\n @Input()\n sortIndex: number | undefined = undefined;\n\n @Input()\n sortOrder: AXSortOrder | undefined = undefined;\n\n abstract get renderCellTemplate(): TemplateRef<unknown>;\n abstract get renderHeaderTemplate(): TemplateRef<unknown>;\n abstract get renderFooterTemplate(): TemplateRef<unknown>;\n\n abstract get loadingEnabled(): boolean;\n\n abstract get name(): string;\n\n get cssClass(): string | undefined {\n return null;\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, NgZone, Renderer2 } from '@angular/core';\nimport { Subject, debounceTime } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Directive({\n selector: '[ax-table-column-resizble]',\n})\nexport class AXDataTableColumnResizableDirective {\n @Input('ax-table-column-resizble')\n public column: AXDataTableColumnComponent;\n private resize$ = new Subject<MouseEvent>();\n private startX: number;\n private startWidth: number;\n private onMouseMoveRawBound: (event: MouseEvent) => void;\n private onMouseUpBound: () => void;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n ) {\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n if (isBrowser()) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n document.addEventListener('mousemove', this.onMouseMoveRawBound);\n document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n\n onMouseMoveRaw(event: MouseEvent) {\n this.resize$.next(event);\n }\n\n onMouseMove(event: MouseEvent) {\n if (isBrowser()) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n }\n\n onMouseUp() {\n document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n}\n","import { AXFormatOptions, AXFormatService } from '@acorex/core/format';\nimport { Memorize } from '@acorex/core/memorize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n {{ getDisplayText(row.data, this.dataField) }}\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n})\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n @Input()\n dataField: string;\n\n @Input()\n wrapText = false;\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `cl-${this.dataField}`;\n }\n\n private formatService = inject(AXFormatService);\n\n @Memorize()\n protected getDisplayText(rowData: unknown, dataField: string): string {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format as any, this.formatOptions);\n }\n\n @Input()\n format: string;\n\n @Input()\n formatOptions: AXFormatOptions;\n}\n","import { AXButtonItemComponent, AXButtonItemListItem } from '@acorex/components/button';\nimport { AXButtonClickEvent, AXItemClickEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\nexport type AXRowCommandItem = AXButtonItemListItem;\n\nexport type AXRowCommandItemClickEvent = AXButtonClickEvent;\n\nexport abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n protected grid = inject(AXBaseDataTable);\n protected cdr = inject(ChangeDetectorRef);\n\n override allowSorting = false;\n\n get loadingEnabled(): boolean {\n return false;\n }\n\n override get cssClass() {\n return 'ax-command-column';\n }\n\n onItemClick: EventEmitter<AXRowCommandItemClickEvent> = new EventEmitter<AXRowCommandItemClickEvent>();\n}\n\n@Component({\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\" (onOpened)=\"handleOnOpened(row.data)\" (onClosed)=\"handleOnClosed()\">\n @if (_items.length) {\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event, row.data)\" [items]=\"_items\"> </ax-button-item-list>\n } @else {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n})\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-dd-cmd';\n }\n\n protected _items: AXRowCommandItem[] = [];\n\n @Input()\n items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[] | Promise<AXRowCommandItem[]>) = [];\n\n protected async handleOnOpened(rowData) {\n if (Array.isArray(this.items)) {\n this._items = this.items;\n } else typeof this.items == 'function';\n {\n const result = (this['items'] as any)(rowData);\n if (Array.isArray(result)) {\n this._items = result;\n } else if (result instanceof Promise) {\n this._items = await result;\n }\n }\n this.cdr.detectChanges();\n }\n\n protected handleOnClosed() {\n this._items = [];\n }\n\n protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: e.name,\n };\n this.onItemClick.emit(args);\n }\n}\n\n@Component({\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (item of getItems(row.data); track $index) {\n <button\n [style.color]=\"'rgba(var(--ax-color-' + (item.color ?? 'primary)')\"\n [disabled]=\"item.disabled\"\n [class.ax-state-disabled]=\"item.disabled\"\n [axRipple]=\"!item.disabled\"\n (click)=\"handleOnItemClick($event, item, row.data)\"\n >\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n})\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-in-cmd';\n }\n\n @Input()\n items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[]) = [];\n\n protected getItems(rowData: unknown): AXRowCommandItem[] {\n if (Array.isArray(this.items)) {\n return this.items;\n } else typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n\n protected handleOnItemClick(e: MouseEvent, item: AXRowCommandItem, data: unknown) {\n const args: AXRowCommandItemClickEvent = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: item.name,\n };\n this.onItemClick.emit(args);\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-index-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {\n private grid = inject(AXBaseDataTable);\n private unsubscriber = inject(AXUnsubscriber);\n\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-inx';\n }\n\n @Input()\n padZero = false;\n\n protected formatCount = 1;\n\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n\n override allowSorting = false;\n\n get loadingEnabled(): boolean {\n return false;\n }\n\n override get cssClass(): string | undefined {\n return 'ax-index-column';\n }\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\n\n@Component({\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n />\n </ng-template>\n <ng-template #cell let-row>\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [disabled]=\"!row.data\"\n (change)=\"handleChange(row.data)\"\n [checked]=\"isSelected(row.data)\"\n />\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n})\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n private grid = inject(AXBaseDataTable);\n\n @ViewChild('cell')\n private _cellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this._cellTemplate;\n }\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n override get renderHeaderTemplate(): TemplateRef<unknown> {\n return this._contentHeaderTemplate;\n }\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this._contentFooterTemplate;\n }\n\n get name(): string {\n return 'cl-select';\n }\n\n private getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n\n protected isSelected(item: unknown) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n\n protected checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return rows[0] && rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n }\n\n protected checkAnySelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return (\n rows[0] &&\n !this.checkAllSelected(rows) &&\n rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element))\n );\n }\n\n protected handleChange(item: unknown) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n } else {\n this.grid.selectRows(item);\n }\n }\n\n protected handleSelectAll(rows: any) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n } else {\n this.grid.selectRows(...rows);\n }\n }\n\n get loadingEnabled(): boolean {\n return false;\n }\n}\n","import { AXDataPagerChangedEvent } from '@acorex/components/data-pager';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n Signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXColumnsOrderChangedEvent, AXDataTableRowClick, AXDataTableRowDbClick } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\n\n@Component({\n selector: 'ax-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n inputs: ['dataSource'],\n outputs: ['selectedRowsChange'],\n providers: [\n {\n provide: AXBaseDataTable,\n useExisting: AXDataTableComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {\n private _unsubscriber = inject(AXUnsubscriber);\n private _zone = inject(NgZone);\n\n @ViewChild('dataPager') dataPager;\n\n protected rtl!: boolean;\n\n protected displayedRows: WritableSignal<any[]> = signal([]);\n protected page: WritableSignal<number> = signal(0);\n protected pageSize: WritableSignal<number> = signal(0);\n protected isLoading: WritableSignal<boolean> = signal(true);\n\n protected columnsList: WritableSignal<any[]> = signal([]);\n\n protected endFixedColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed === 'end'));\n protected startFixedColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed === 'start'));\n protected normalColumnsList: Signal<any[]> = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'));\n\n protected resizeColumnProp = {\n startX: 0,\n startWidth: 0,\n columnIndex: 0,\n newColumnWidth: 0,\n thElement: null,\n };\n protected hasItems = false;\n protected totalRows = 0;\n protected currentPage = 0;\n protected totalPages = 0;\n protected startRowIndex = 0;\n\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n @Input()\n alternative = true;\n\n @Input()\n showHeader = true;\n\n @Input()\n fixedHeader = true;\n\n @Input()\n showFooter = false;\n\n @Input()\n fixedFooter = true;\n\n @Input()\n itemHeight: number | 'auto' = 40;\n\n @Input()\n allowReordering = false;\n\n @Input()\n paging = true;\n\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n private _focusedRow: unknown;\n @Input()\n public get focusedRow(): unknown {\n return this._focusedRow;\n }\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n @Output()\n onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent> = new EventEmitter<AXColumnsOrderChangedEvent>();\n\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n override ngOnInit() {\n super.ngOnInit();\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items);\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n });\n\n this.pageSize.set(this.dataSource.pageSize);\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n\n ngAfterViewInit(): void {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n });\n }\n\n protected drop(event: CdkDragDrop<any, any, any>) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n\n this.onColumnsOrderChanged.emit({\n component: this,\n data: { event },\n isUserInteraction: true,\n });\n }\n\n protected handleRowClick(event: MouseEvent, item: unknown) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n\n private handleRowSingleClick(event: Event, item: any): void {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n } else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n protected onPageChanged(event: AXDataPagerChangedEvent) {\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n this.dataSource.setPage(this.page());\n }\n\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n this.dataSource.setPageSize(this.pageSize());\n }\n\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n }\n }\n }\n\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n } else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n } else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n\n protected getSort(column: AXDataTableColumnComponent): string | undefined {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n\n public refresh() {\n this.dataSource.refresh();\n if (this.dataPager) {\n this.dataPager.goFirstPage();\n }\n }\n\n protected calculateRowIndex(index: number) {\n return this.dataSource.pageSize * this.page() + index;\n }\n\n protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = (event.target as HTMLElement).parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n this._zone.runOutsideAngular(() => {\n document.addEventListener('mousemove', this.onResizeColumnMove);\n document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n\n private onResizeColumnMove = (event: MouseEvent): void => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n\n private onResizeColumnEnd = (): void => {\n document.removeEventListener('mousemove', this.onResizeColumnMove);\n document.removeEventListener('mouseup', this.onResizeColumnEnd);\n\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width').value);\n this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\n this.resetResizingProcess();\n };\n\n private resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = {\n startX: 0,\n startWidth: 0,\n columnIndex: 0,\n newColumnWidth: 0,\n thElement: null,\n };\n }\n\n private calculateStickyColumnsPositions() {\n let totalWidth = 0;\n let accumulatedWidthFromStart = 0;\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n if (!isNaN(width)) {\n totalWidth += width;\n }\n });\n let lastStartColumn: AXDataTableColumnComponent;\n\n this.columns.forEach((column) => {\n const width = parseInt(column.width as string);\n\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn) lastStartColumn['isLastFixedColumn'] = true;\n\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn: AXDataTableColumnComponent;\n\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n\n const width = parseInt(column.width as string);\n\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn) firstEndColumn['isFirstFixedColumn'] = true;\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n@if (!displayedRows().length) {\n <div class=\"ax-data-table-empty-data\">\n @if (emptyTemplate) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n } @else {\n <span>No Record Found!</span>\n }\n </div>\n}\n<div class=\"ax-data-table-wrapper\">\n <table>\n @if (showHeader) {\n <thead [ngClass]=\"{ 'ax-data-table-sticky-header': fixedHeader }\">\n <tr\n [cdkDropListDisabled]=\"!allowReordering\"\n cdkDropList\n cdkScrollable\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (c of startFixedColumnsList(); track $index) {\n <th\n cdkDrag\n [cdkDragDisabled]=\"true\"\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell sticky-start\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </th>\n }\n @for (c of normalColumnsList(); track $index) {\n <th\n cdkDrag\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n @if (c.allowResizing && !c.fixed) {\n <div class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></div>\n }\n </th>\n }\n <th></th>\n @for (c of endFixedColumnsList(); track $index) {\n <th\n cdkDrag\n [cdkDragDisabled]=\"true\"\n cdkDragLockAxis=\"x\"\n class=\"ax-data-table-head-cell sticky-end\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderHeaderTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody [ngClass]=\"{ 'ax-data-table-row-alternative': alternative }\">\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\n @if (rowTemplate) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: row, rowIndex: rowIndex } }\"> </ng-container>\n } @else {\n <tr\n [class.ax-state-focused]=\"focusedRow && row === focusedRow\"\n [attr.data-index]=\"rowIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(row)\"\n style.height=\"{{ itemHeight }}px\"\n style.max-height=\"{{ itemHeight }}px\"\n (click)=\"handleRowClick($event, row)\"\n >\n @for (c of startFixedColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [class.sticky-start]=\"true\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n @for (c of normalColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n <td></td>\n @for (c of endFixedColumnsList(); track $index) {\n <td\n [style.width]=\"c.width\"\n [class.ax-data-table-sticky-body-cell]=\"c.fixed && c.width\"\n [class.sticky-end]=\"true\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n [attr.data-label]=\"c.caption\"\n tabindex=\"0\"\n [class]=\"c.cssClass\"\n >\n @if (row && !isLoading()) {\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: row, rowIndex: calculateRowIndex(rowIndex) } }\"\n ></ng-container>\n } @else {\n @if (c.loadingEnabled && loading.enabled) {\n @if (loading.loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loading.loadingTemplate\"></ng-container>\n } @else {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n }\n </td>\n }\n </tr>\n }\n }\n\n <tr class=\"empty-row\"></tr>\n </tbody>\n @if (showFooter) {\n <tfoot [ngClass]=\"{ 'ax-data-table-sticky-footer': fixedFooter }\">\n <tr>\n @for (c of startFixedColumnsList(); track $index) {\n <td\n class=\"ax-data-table-sticky-footer-cell sticky-start\"\n [class.ax-data-table-sticky-footer-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isLast]=\"c['isLastFixedColumn']\"\n [style.--sticky-start]=\"c['stickyStart']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </td>\n }\n @for (c of normalColumnsList(); track $index) {\n <td\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n @if (c.allowResizing && !c.fixed) {\n <div class=\"ax-resize-handle\" (mousedown)=\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\"></div>\n }\n </td>\n }\n <td></td>\n @for (c of endFixedColumnsList(); track $index) {\n <td\n class=\"ax-data-table-sticky-footer-cell sticky-end\"\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [class.ax-data-table-sticky-header-cell]=\"c.fixed && c.width\"\n [style.width]=\"c.width\"\n [class.isFirst]=\"c['isFirstFixedColumn']\"\n [style.--sticky-end]=\"c['stickyEnd']\"\n >\n <div class=\"ax-caption\">\n <ng-container\n *ngTemplateOutlet=\"c.renderFooterTemplate; context: { $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\"\n ></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n </td>\n }\n </tr>\n </tfoot>\n }\n </table>\n</div>\n\n@if (paging) {\n <div class=\"ax-table-footer\" #footerContainer>\n <ax-data-pager\n #dataPager\n [displayMode]=\"'custom'\"\n (onChanged)=\"onPageChanged($event)\"\n [total]=\"dataSource.totalCount\"\n [size]=\"dataSource.pageSize\"\n [isLoading]=\"isLoading()\"\n >\n <ax-prefix class=\"ax-data-table-numeric-paging\">\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\n </ax-prefix>\n <ax-prefix class=\"ax-data-table-input-paging\">\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\n </ax-prefix>\n <ax-suffix class=\"ax-data-table-info\">\n <ax-data-pager-info> </ax-data-pager-info>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-data-pager>\n </div>\n}\n<ng-content select=\"ax-footer\"> </ng-content>\n","import { AXListDataSource, AXPagedComponent, AXValueChangedEvent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\n\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, AXDataTableRowClick, AXDataTableRowDbClick, AXDataTableScrollIndexChanged } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\n\n@Component({\n selector: 'ax-infinite-scroll-data-table',\n templateUrl: './infinite-scroll-data-table.component.html',\n styleUrls: ['./infinite-scroll-data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n ],\n\n outputs: ['selectedRowsChange'],\n inputs: ['dataSource'],\n})\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable implements OnInit, DoCheck {\n private ngZone = inject(NgZone);\n\n @ContentChildren(AXDataTableColumnComponent)\n protected columns: QueryList<AXDataTableColumnComponent>;\n\n protected startFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n\n protected endFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n\n protected notFixedColumn(): AXDataTableColumnComponent[] {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n\n protected notFixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n\n protected fixedColumnCount(): number {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n\n @Output()\n onPageChanged: EventEmitter<AXValueChangedEvent<number>> = new EventEmitter<AXValueChangedEvent<number>>();\n\n private clickSubject = new Subject<{ event: MouseEvent; item: any }>();\n\n @Output()\n onRowClick: EventEmitter<AXDataTableRowClick> = new EventEmitter<AXDataTableRowClick>();\n\n @Output()\n onRowDbClick: EventEmitter<AXDataTableRowDbClick> = new EventEmitter<AXDataTableRowDbClick>();\n\n @Input()\n rowTemplate?: TemplateRef<unknown>;\n\n @Input()\n emptyTemplate?: TemplateRef<unknown>;\n\n @Input()\n showHeader = true;\n\n @Input()\n fetchDataMode: 'auto' | 'manual' = 'auto';\n\n @Input()\n loading: {\n enabled: boolean;\n animation: boolean;\n loadingTemplate?: TemplateRef<unknown>;\n } = {\n enabled: true,\n animation: true,\n };\n\n protected listDataSource: AXListDataSource<unknown>;\n protected isLoading: WritableSignal<boolean> = signal(true);\n protected hasItems = false;\n protected totalRows = 0;\n protected currentPage = 0;\n protected totalPages = 0;\n protected startRowIndex = 0;\n private lastIndex = 0;\n\n @Output()\n focusedRowChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n private _focusedRow: unknown;\n @Input()\n public get focusedRow(): unknown {\n return this._focusedRow;\n }\n public set focusedRow(v: unknown) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n\n @Input()\n itemHeight: number | 'auto' = 40;\n\n protected width = '100%';\n protected height = '100%';\n\n @ViewChild(CdkVirtualScrollViewport, { static: true })\n private viewport: CdkVirtualScrollViewport;\n\n @Output()\n onScrolledIndexChanged: EventEmitter<AXDataTableScrollIndexChanged> = new EventEmitter<AXDataTableScrollIndexChanged>();\n\n trackByIdx(i) {\n return i;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource<unknown>({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n\n //\n this.clickSubject\n .pipe(\n buffer(this.clickSubject.pipe(debounceTime(250))),\n filter((clickArray) => clickArray.length === 2),\n )\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n @ViewChild('headerContainer') headerContainer: ElementRef<HTMLDivElement>;\n @ViewChild('footerContainer') footerContainer: ElementRef;\n @ViewChild('scrolling', { static: true })\n scrollableContainer: ElementRef<HTMLDivElement>;\n\n protected _handleOnscrolledIndexChange(e: number) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n\n private updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1) this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows) this.startRowIndex = this.totalRows;\n }\n\n private updateHeight() {\n this.height = `calc(100% - ${\n (this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)\n }px)`;\n }\n\n private updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n\n private updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n\n // Function to copy fixed columns\n private copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector<HTMLTableElement>('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n\n public render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n\n public refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n\n protected handleRowClick(event: MouseEvent, item: unknown) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n\n private handleRowSingleClick(event: Event, item: any): void {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n } else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n protected handleRowDoubleClick(e: MouseEvent, item: unknown) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n\n handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n } else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n } else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n\n protected getSort(column: AXDataTableColumnComponent): string | undefined {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n\n protected _handleOnScroll() {\n this.updateHScroll();\n }\n}\n","<ng-content select=\"ax-header\"> </ng-content>\n<!------------------- Header contents ------------------->\n@if (showHeader) {\n <div class=\"ax-header-content\">\n <div class=\"ax-header-columns\">\n <table tabindex=\"0\" [style.width]=\"width\" #headerContainer>\n <thead>\n <tr>\n @for (c of notFixedColumn(); track c.name) {\n <th\n [class.ax-interactive]=\"c.allowSorting\"\n (click)=\"c.allowSorting ? handleColumnClick($event, c) : null\"\n [style.width]=\"c.width\"\n >\n <div class=\"ax-caption\">\n <ng-container *ngTemplateOutlet=\"c.renderHeaderTemplate\"></ng-container>\n @if (getSort(c)) {\n <ax-icon icon=\"ax-icon {{ getSort(c) }}\"></ax-icon>\n }\n </div>\n <!-- @if(c.allowResizing)\n {\n <div class=\"ax-resize-handle\" [ax-table-column-resizble]=\"c\"></div>\n } -->\n </th>\n }\n <th></th>\n </tr>\n </thead>\n </table>\n </div>\n </div>\n}\n\n<!------------------- Body contents ------------------->\n<div [style.height]=\"height\" class=\"ax-body-content\">\n <div class=\"ax-body-columns\">\n <div cdkVirtualScrollingElement #scrolling [style.height]=\"'100%'\" (scroll)=\"_handleOnScroll()\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight\"\n [style.--item-height]=\"itemHeight + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <table tabindex=\"0\" class=\"ax-table-body ax-relative\" [style.width]=\"width\">\n <colgroup>\n @for (c of notFixedColumn(); track c.name) {\n <col [style.width]=\"c.width\" />\n }\n <col />\n </colgroup>\n <tbody>\n <ng-container\n *cdkVirtualFor=\"let item of listDataSource; templateCacheSize: 100; let i = index; trackBy: trackByIdx; let rIndex = index\"\n >\n <!------------------- custom row template------------------->\n @if (rowTemplate != null) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"> </ng-container>\n } @else {\n <!------------------- normal row template------------------->\n <tr\n [class.ax-state-focused]=\"focusedRow && item === focusedRow\"\n [attr.data-index]=\"rIndex\"\n [class.ax-state-selected]=\"selectedRows.includes(item)\"\n (click)=\"handleRowClick($event, item)\"\n >\n <!------------------- start fixed column ------------------->\n\n <!------------------- Not fixed column ------------------->\n @for (c of notFixedColumn(); track c.name) {\n <td [attr.data-label]=\"c.caption\" tabindex=\"0\" [class]=\"c.cssClass\">\n @if (item && !isLoading()) {\n <!------------------- render cell ------------------->\n <ng-container\n *ngTemplateOutlet=\"c.renderCellTemplate; context: { $implicit: { data: item, rowIndex: rIndex } }\"\n ></ng-container>\n } @else {\n <!------------------- render loading ------------------->\n @if (c.loadingEnabled && loading) {\n <ax-skeleton [animated]=\"loading.animation\"></ax-skeleton>\n }\n }\n </td>\n }\n <td></td>\n </tr>\n }\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n<div class=\"ax-table-footer\" #footerContainer>\n <div class=\"ax-table-info\">\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"refresh()\">\n <ax-icon icon=\"ax-icon ax-icon-refresh\"></ax-icon>\n </ax-button>\n </div>\n <ng-content select=\"ax-footer\"> </ng-content>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule, AXRippleDirective } from '@acorex/components/common';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent } from './columns/row-command-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\n\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDataTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i5","i1","i4"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@acorex/components",
|
3
|
-
"version": "18.5.
|
3
|
+
"version": "18.5.8",
|
4
4
|
"peerDependencies": {
|
5
5
|
"@angular/common": ">=18.0.0",
|
6
6
|
"@angular/core": ">=18.0.0",
|
@@ -43,11 +43,11 @@
|
|
43
43
|
"esm": "./esm2022/avatar/acorex-components-avatar.mjs",
|
44
44
|
"default": "./fesm2022/acorex-components-avatar.mjs"
|
45
45
|
},
|
46
|
-
"./
|
47
|
-
"types": "./
|
48
|
-
"esm2022": "./esm2022/
|
49
|
-
"esm": "./esm2022/
|
50
|
-
"default": "./fesm2022/acorex-components-
|
46
|
+
"./audio-wave": {
|
47
|
+
"types": "./audio-wave/index.d.ts",
|
48
|
+
"esm2022": "./esm2022/audio-wave/acorex-components-audio-wave.mjs",
|
49
|
+
"esm": "./esm2022/audio-wave/acorex-components-audio-wave.mjs",
|
50
|
+
"default": "./fesm2022/acorex-components-audio-wave.mjs"
|
51
51
|
},
|
52
52
|
"./bottom-navigation": {
|
53
53
|
"types": "./bottom-navigation/index.d.ts",
|
@@ -55,11 +55,11 @@
|
|
55
55
|
"esm": "./esm2022/bottom-navigation/acorex-components-bottom-navigation.mjs",
|
56
56
|
"default": "./fesm2022/acorex-components-bottom-navigation.mjs"
|
57
57
|
},
|
58
|
-
"./
|
59
|
-
"types": "./
|
60
|
-
"esm2022": "./esm2022/
|
61
|
-
"esm": "./esm2022/
|
62
|
-
"default": "./fesm2022/acorex-components-
|
58
|
+
"./badge": {
|
59
|
+
"types": "./badge/index.d.ts",
|
60
|
+
"esm2022": "./esm2022/badge/acorex-components-badge.mjs",
|
61
|
+
"esm": "./esm2022/badge/acorex-components-badge.mjs",
|
62
|
+
"default": "./fesm2022/acorex-components-badge.mjs"
|
63
63
|
},
|
64
64
|
"./breadcrumbs": {
|
65
65
|
"types": "./breadcrumbs/index.d.ts",
|
@@ -193,18 +193,18 @@
|
|
193
193
|
"esm": "./esm2022/dropdown/acorex-components-dropdown.mjs",
|
194
194
|
"default": "./fesm2022/acorex-components-dropdown.mjs"
|
195
195
|
},
|
196
|
-
"./dropdown-button": {
|
197
|
-
"types": "./dropdown-button/index.d.ts",
|
198
|
-
"esm2022": "./esm2022/dropdown-button/acorex-components-dropdown-button.mjs",
|
199
|
-
"esm": "./esm2022/dropdown-button/acorex-components-dropdown-button.mjs",
|
200
|
-
"default": "./fesm2022/acorex-components-dropdown-button.mjs"
|
201
|
-
},
|
202
196
|
"./form": {
|
203
197
|
"types": "./form/index.d.ts",
|
204
198
|
"esm2022": "./esm2022/form/acorex-components-form.mjs",
|
205
199
|
"esm": "./esm2022/form/acorex-components-form.mjs",
|
206
200
|
"default": "./fesm2022/acorex-components-form.mjs"
|
207
201
|
},
|
202
|
+
"./dropdown-button": {
|
203
|
+
"types": "./dropdown-button/index.d.ts",
|
204
|
+
"esm2022": "./esm2022/dropdown-button/acorex-components-dropdown-button.mjs",
|
205
|
+
"esm": "./esm2022/dropdown-button/acorex-components-dropdown-button.mjs",
|
206
|
+
"default": "./fesm2022/acorex-components-dropdown-button.mjs"
|
207
|
+
},
|
208
208
|
"./image": {
|
209
209
|
"types": "./image/index.d.ts",
|
210
210
|
"esm2022": "./esm2022/image/acorex-components-image.mjs",
|
@@ -241,18 +241,18 @@
|
|
241
241
|
"esm": "./esm2022/menu/acorex-components-menu.mjs",
|
242
242
|
"default": "./fesm2022/acorex-components-menu.mjs"
|
243
243
|
},
|
244
|
-
"./nav": {
|
245
|
-
"types": "./nav/index.d.ts",
|
246
|
-
"esm2022": "./esm2022/nav/acorex-components-nav.mjs",
|
247
|
-
"esm": "./esm2022/nav/acorex-components-nav.mjs",
|
248
|
-
"default": "./fesm2022/acorex-components-nav.mjs"
|
249
|
-
},
|
250
244
|
"./navbar": {
|
251
245
|
"types": "./navbar/index.d.ts",
|
252
246
|
"esm2022": "./esm2022/navbar/acorex-components-navbar.mjs",
|
253
247
|
"esm": "./esm2022/navbar/acorex-components-navbar.mjs",
|
254
248
|
"default": "./fesm2022/acorex-components-navbar.mjs"
|
255
249
|
},
|
250
|
+
"./nav": {
|
251
|
+
"types": "./nav/index.d.ts",
|
252
|
+
"esm2022": "./esm2022/nav/acorex-components-nav.mjs",
|
253
|
+
"esm": "./esm2022/nav/acorex-components-nav.mjs",
|
254
|
+
"default": "./fesm2022/acorex-components-nav.mjs"
|
255
|
+
},
|
256
256
|
"./notification": {
|
257
257
|
"types": "./notification/index.d.ts",
|
258
258
|
"esm2022": "./esm2022/notification/acorex-components-notification.mjs",
|
@@ -397,18 +397,18 @@
|
|
397
397
|
"esm": "./esm2022/switch/acorex-components-switch.mjs",
|
398
398
|
"default": "./fesm2022/acorex-components-switch.mjs"
|
399
399
|
},
|
400
|
-
"./tabs": {
|
401
|
-
"types": "./tabs/index.d.ts",
|
402
|
-
"esm2022": "./esm2022/tabs/acorex-components-tabs.mjs",
|
403
|
-
"esm": "./esm2022/tabs/acorex-components-tabs.mjs",
|
404
|
-
"default": "./fesm2022/acorex-components-tabs.mjs"
|
405
|
-
},
|
406
400
|
"./tag": {
|
407
401
|
"types": "./tag/index.d.ts",
|
408
402
|
"esm2022": "./esm2022/tag/acorex-components-tag.mjs",
|
409
403
|
"esm": "./esm2022/tag/acorex-components-tag.mjs",
|
410
404
|
"default": "./fesm2022/acorex-components-tag.mjs"
|
411
405
|
},
|
406
|
+
"./tabs": {
|
407
|
+
"types": "./tabs/index.d.ts",
|
408
|
+
"esm2022": "./esm2022/tabs/acorex-components-tabs.mjs",
|
409
|
+
"esm": "./esm2022/tabs/acorex-components-tabs.mjs",
|
410
|
+
"default": "./fesm2022/acorex-components-tabs.mjs"
|
411
|
+
},
|
412
412
|
"./text-area": {
|
413
413
|
"types": "./text-area/index.d.ts",
|
414
414
|
"esm2022": "./esm2022/text-area/acorex-components-text-area.mjs",
|