@firestitch/list 18.0.25 → 18.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/classes/columns-controller.d.ts +3 -3
- package/app/classes/external-params-controller.d.ts +2 -3
- package/app/classes/list-controller.d.ts +2 -3
- package/app/classes/persistance-controller.d.ts +20 -5
- package/app/components/customize-cols/customize-cols.component.d.ts +5 -3
- package/app/components/list/list.component.d.ts +8 -11
- package/app/interfaces/listconfig.interface.d.ts +10 -2
- package/esm2022/app/classes/columns-controller.mjs +14 -14
- package/esm2022/app/classes/external-params-controller.mjs +13 -13
- package/esm2022/app/classes/list-controller.mjs +14 -11
- package/esm2022/app/classes/persistance-controller.mjs +80 -14
- package/esm2022/app/components/customize-cols/customize-cols.component.mjs +21 -18
- package/esm2022/app/components/list/list.component.mjs +32 -43
- package/esm2022/app/interfaces/listconfig.interface.mjs +1 -1
- package/fesm2022/firestitch-list.mjs +160 -97
- package/fesm2022/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
2
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
3
|
import { Observable, Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { PersistanceController } from '../../classes/persistance-controller';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/
|
|
7
|
-
import * as i2 from "@angular/
|
|
8
|
-
import * as i3 from "@angular/material/
|
|
9
|
-
import * as i4 from "@angular/material/
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/material/button";
|
|
9
|
+
import * as i3 from "@angular/material/checkbox";
|
|
10
|
+
import * as i4 from "@angular/material/dialog";
|
|
10
11
|
export class CustomizeColsDialogComponent {
|
|
11
|
-
_dialog;
|
|
12
12
|
columns = [];
|
|
13
13
|
saveDisabled = false;
|
|
14
|
+
columnsEnabled = false;
|
|
14
15
|
_changeFn;
|
|
15
16
|
_destroy$ = new Subject();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
_persistance = inject(PersistanceController);
|
|
18
|
+
_dialog = inject(MatDialogRef);
|
|
19
|
+
_data = inject(MAT_DIALOG_DATA);
|
|
20
|
+
constructor() {
|
|
21
|
+
this.columns = this._data.columns;
|
|
22
|
+
this._changeFn = this._data.changeFn;
|
|
20
23
|
}
|
|
21
24
|
ngOnDestroy() {
|
|
22
25
|
this._destroy$.next(null);
|
|
@@ -34,6 +37,9 @@ export class CustomizeColsDialogComponent {
|
|
|
34
37
|
show: column.show,
|
|
35
38
|
};
|
|
36
39
|
});
|
|
40
|
+
if (this._persistance.columnsEnabled) {
|
|
41
|
+
this._persistance.setColumns(data);
|
|
42
|
+
}
|
|
37
43
|
this.saveDisabled = true;
|
|
38
44
|
const changed = this._changeFn ? this._changeFn(data) : null;
|
|
39
45
|
if (changed instanceof Observable) {
|
|
@@ -55,14 +61,11 @@ export class CustomizeColsDialogComponent {
|
|
|
55
61
|
cancel() {
|
|
56
62
|
this._dialog.close();
|
|
57
63
|
}
|
|
58
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, deps: [
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CustomizeColsDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>\
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CustomizeColsDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n <div *ngFor=\"let column of columns\">\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n <button\n type=\"button\"\n mat-button\n (click)=\"cancel()\">\n Cancel\n </button>\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}.columns{margin-bottom:1.25em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
60
66
|
}
|
|
61
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
|
|
62
68
|
type: Component,
|
|
63
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle>\
|
|
64
|
-
}], ctorParameters: () => [
|
|
65
|
-
|
|
66
|
-
args: [MAT_DIALOG_DATA]
|
|
67
|
-
}] }, { type: i1.MatDialogRef }] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplLWNvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2N1c3RvbWl6ZS1jb2xzL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw0QkFBNEI7SUFTN0I7SUFQSCxPQUFPLEdBQW9CLEVBQUUsQ0FBQztJQUM5QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFNBQVMsQ0FBQztJQUNWLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxDLFlBQzJCLElBQUksRUFDckIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFFbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUNuQyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVNLElBQUk7UUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTzthQUN0QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2QsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTthQUNsQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0QsSUFBSSxPQUFPLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbEMsT0FBTztpQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0IsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxHQUFHLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7dUdBdkRVLDRCQUE0QixrQkFRN0IsZUFBZTsyRkFSZCw0QkFBNEIsb0RDZnpDLG8xQkFnQ3FCOzsyRkRqQlIsNEJBQTRCO2tCQUx4QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU07OzBCQVU1QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uc0NvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgY29sdW1uczogQ29sdW1uc0NvbHVtbltdID0gW107XG4gIHB1YmxpYyBzYXZlRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2hhbmdlRm47XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YSxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1JlZjxhbnk+LFxuICApIHtcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgdGhpcy5fY2hhbmdlRm4gPSBkYXRhLmNoYW5nZUZuO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB2aXNpYmlsaXR5Q2hhbmdlKGV2ZW50LCBjb2x1bW4pIHtcbiAgICBjb2x1bW4uc2hvdyA9IGV2ZW50LmNoZWNrZWQ7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICEhY29sdW1uLm5hbWUpXG4gICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICBzaG93OiBjb2x1bW4uc2hvdyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zYXZlRGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2VGbiA/IHRoaXMuX2NoYW5nZUZuKGRhdGEpIDogbnVsbDtcblxuICAgIGlmIChjaGFuZ2VkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgY2hhbmdlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2cuY2xvc2UodGhpcy5jb2x1bW5zKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaWFsb2cuY2xvc2UodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCkge1xuICAgIHRoaXMuX2RpYWxvZy5jbG9zZSgpO1xuICB9XG59XG4iLCI8aDEgbWF0RGlhbG9nVGl0bGU+XHJcbiAgQ3VzdG9taXplIGNvbHVtbnNcclxuPC9oMT5cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiPlxyXG4gICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgIFtjaGVja2VkXT1cImNvbHVtbi5zaG93XCJcclxuICAgICAgICAoY2hhbmdlKT1cInZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCI+XHJcbiAgICAgIEBpZiAoY29sdW1uLnRpdGxlKSB7XHJcbiAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1jaGVja2JveD5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbjxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cInNhdmVEaXNhYmxlZFwiPlxyXG4gICAgU2F2ZVxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIG1hdC1idXR0b25cclxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICBDYW5jZWxcclxuICA8L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
|
|
69
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n <div *ngFor=\"let column of columns\">\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n <button\n type=\"button\"\n mat-button\n (click)=\"cancel()\">\n Cancel\n </button>\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}.columns{margin-bottom:1.25em}\n"] }]
|
|
70
|
+
}], ctorParameters: () => [] });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplLWNvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2N1c3RvbWl6ZS1jb2xzL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7O0FBUzdFLE1BQU0sT0FBTyw0QkFBNEI7SUFFaEMsT0FBTyxHQUFvQixFQUFFLENBQUM7SUFDOUIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFNBQVMsQ0FBQztJQUNWLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFlBQVksR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFeEM7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDbkMsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFTSxJQUFJO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDdEIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0QsSUFBSSxPQUFPLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbEMsT0FBTztpQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0IsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxHQUFHLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7dUdBN0RVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLG9EQ2hCekMsaTFCQWtDcUI7OzJGRGxCUiw0QkFBNEI7a0JBTHhDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQ29sdW1uc0NvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgY29sdW1uczogQ29sdW1uc0NvbHVtbltdID0gW107XG4gIHB1YmxpYyBzYXZlRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIGNvbHVtbnNFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlRm47XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfcGVyc2lzdGFuY2UgPSBpbmplY3QoUGVyc2lzdGFuY2VDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZ1JlZik7XG4gIHByaXZhdGUgX2RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLl9kYXRhLmNvbHVtbnM7XG4gICAgdGhpcy5fY2hhbmdlRm4gPSB0aGlzLl9kYXRhLmNoYW5nZUZuO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB2aXNpYmlsaXR5Q2hhbmdlKGV2ZW50LCBjb2x1bW4pIHtcbiAgICBjb2x1bW4uc2hvdyA9IGV2ZW50LmNoZWNrZWQ7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICEhY29sdW1uLm5hbWUpXG4gICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICBzaG93OiBjb2x1bW4uc2hvdyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgaWYodGhpcy5fcGVyc2lzdGFuY2UuY29sdW1uc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNldENvbHVtbnMoZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlRGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2VGbiA/IHRoaXMuX2NoYW5nZUZuKGRhdGEpIDogbnVsbDtcblxuICAgIGlmIChjaGFuZ2VkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgY2hhbmdlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2cuY2xvc2UodGhpcy5jb2x1bW5zKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaWFsb2cuY2xvc2UodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCkge1xuICAgIHRoaXMuX2RpYWxvZy5jbG9zZSgpO1xuICB9XG59XG4iLCI8aDEgbWF0RGlhbG9nVGl0bGU+XG4gIEN1c3RvbWl6ZSBjb2x1bW5zXG48L2gxPlxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnNcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiPlxuICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgIFtjaGVja2VkXT1cImNvbHVtbi5zaG93XCJcbiAgICAgICAgICAoY2hhbmdlKT1cInZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCI+XG4gICAgICAgIEBpZiAoY29sdW1uLnRpdGxlKSB7XG4gICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cInNhdmVEaXNhYmxlZFwiPlxuICAgIFNhdmVcbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgQ2FuY2VsXG4gIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, inject, Inject, Injector, Input, Optional, Output, QueryList, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute } from '@angular/router';
|
|
4
3
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
-
import { getNormalizedPath } from '@firestitch/common';
|
|
6
4
|
import { DrawerRef } from '@firestitch/drawer';
|
|
7
5
|
import { FilterComponent } from '@firestitch/filter';
|
|
8
6
|
import { SelectionDialog } from '@firestitch/selection';
|
|
@@ -22,37 +20,32 @@ import { FsBodyComponent } from '../body/body.component';
|
|
|
22
20
|
import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
|
|
23
21
|
import * as i0 from "@angular/core";
|
|
24
22
|
import * as i1 from "../../classes/reorder-controller";
|
|
25
|
-
import * as i2 from "@
|
|
26
|
-
import * as i3 from "@
|
|
27
|
-
import * as i4 from "
|
|
28
|
-
import * as i5 from "
|
|
29
|
-
import * as i6 from "
|
|
30
|
-
import * as i7 from "
|
|
31
|
-
import * as i8 from "@
|
|
32
|
-
import * as i9 from "
|
|
33
|
-
import * as i10 from "../
|
|
34
|
-
import * as i11 from "../
|
|
35
|
-
import * as i12 from "../
|
|
36
|
-
import * as i13 from "../
|
|
37
|
-
import * as i14 from "../
|
|
38
|
-
import * as i15 from "
|
|
39
|
-
import * as i16 from "../../directives/
|
|
40
|
-
import * as i17 from "../../directives/
|
|
41
|
-
import * as i18 from "../../directives/content-init/content-init.directive";
|
|
23
|
+
import * as i2 from "@firestitch/selection";
|
|
24
|
+
import * as i3 from "@angular/material/dialog";
|
|
25
|
+
import * as i4 from "../../services/group-expand-notifier.service";
|
|
26
|
+
import * as i5 from "@angular/router";
|
|
27
|
+
import * as i6 from "../../classes/persistance-controller";
|
|
28
|
+
import * as i7 from "@angular/common";
|
|
29
|
+
import * as i8 from "@firestitch/filter";
|
|
30
|
+
import * as i9 from "../status/status.component";
|
|
31
|
+
import * as i10 from "../loader/loader.component";
|
|
32
|
+
import * as i11 from "../head/head.component";
|
|
33
|
+
import * as i12 from "../body/body.component";
|
|
34
|
+
import * as i13 from "../footer/footer.component";
|
|
35
|
+
import * as i14 from "../pagination/pagination.component";
|
|
36
|
+
import * as i15 from "../../directives/footer/footer.directive";
|
|
37
|
+
import * as i16 from "../../directives/draggable-list/draggable-list.directive";
|
|
38
|
+
import * as i17 from "../../directives/content-init/content-init.directive";
|
|
42
39
|
export class FsListComponent {
|
|
43
40
|
reorderController;
|
|
44
41
|
_config;
|
|
45
|
-
_dialogRef;
|
|
46
|
-
_drawerRef;
|
|
47
42
|
_el;
|
|
48
43
|
_selectionDialog;
|
|
49
44
|
_dialog;
|
|
50
45
|
_cdRef;
|
|
51
46
|
_groupExpandNotifier;
|
|
52
|
-
_router;
|
|
53
47
|
_route;
|
|
54
48
|
_persistance;
|
|
55
|
-
_location;
|
|
56
49
|
classFsList = true;
|
|
57
50
|
rowHoverHighlight;
|
|
58
51
|
set config(config) {
|
|
@@ -72,8 +65,8 @@ export class FsListComponent {
|
|
|
72
65
|
_listColumnDirectives;
|
|
73
66
|
_filterRef;
|
|
74
67
|
_filterParamsReady = false;
|
|
75
|
-
_inDialog;
|
|
76
68
|
_destroy = new Subject();
|
|
69
|
+
_injector = inject(Injector);
|
|
77
70
|
set filterReference(component) {
|
|
78
71
|
this._filterRef = component;
|
|
79
72
|
this.list.actions.setFilterRef(component);
|
|
@@ -94,21 +87,18 @@ export class FsListComponent {
|
|
|
94
87
|
this.list.emptyStateTemplate = template;
|
|
95
88
|
}
|
|
96
89
|
}
|
|
97
|
-
|
|
90
|
+
_dialogRef = inject(MatDialogRef, { optional: true });
|
|
91
|
+
_drawerRef = inject(DrawerRef, { optional: true });
|
|
92
|
+
constructor(reorderController, _config, _el, _selectionDialog, _dialog, _cdRef, _groupExpandNotifier, _route, _persistance) {
|
|
98
93
|
this.reorderController = reorderController;
|
|
99
94
|
this._config = _config;
|
|
100
|
-
this._dialogRef = _dialogRef;
|
|
101
|
-
this._drawerRef = _drawerRef;
|
|
102
95
|
this._el = _el;
|
|
103
96
|
this._selectionDialog = _selectionDialog;
|
|
104
97
|
this._dialog = _dialog;
|
|
105
98
|
this._cdRef = _cdRef;
|
|
106
99
|
this._groupExpandNotifier = _groupExpandNotifier;
|
|
107
|
-
this._router = _router;
|
|
108
100
|
this._route = _route;
|
|
109
101
|
this._persistance = _persistance;
|
|
110
|
-
this._location = _location;
|
|
111
|
-
this._inDialog = !!this._dialogRef || !!this._drawerRef;
|
|
112
102
|
}
|
|
113
103
|
/**
|
|
114
104
|
* Return reference for filter
|
|
@@ -245,6 +235,9 @@ export class FsListComponent {
|
|
|
245
235
|
this._cdRef.markForCheck();
|
|
246
236
|
}
|
|
247
237
|
}
|
|
238
|
+
get inDialog() {
|
|
239
|
+
return !!this._dialogRef || !!this._drawerRef;
|
|
240
|
+
}
|
|
248
241
|
/**
|
|
249
242
|
* Initialize config for list
|
|
250
243
|
*
|
|
@@ -271,7 +264,7 @@ export class FsListComponent {
|
|
|
271
264
|
this._restorePersistance(listConfig.persist);
|
|
272
265
|
}
|
|
273
266
|
this._updateCustomizeAction(listConfig.actions);
|
|
274
|
-
this.list = new List(this._el, listConfig, this._selectionDialog, this.
|
|
267
|
+
this.list = new List(this._el, listConfig, this._selectionDialog, this._route, this._persistance, this.inDialog);
|
|
275
268
|
this.rowHoverHighlight = this.list.rowHoverHighlight;
|
|
276
269
|
this._waitFirstLoad();
|
|
277
270
|
this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
|
|
@@ -294,6 +287,7 @@ export class FsListComponent {
|
|
|
294
287
|
actionClickFn(null);
|
|
295
288
|
}
|
|
296
289
|
this._dialog.open(CustomizeColsDialogComponent, {
|
|
290
|
+
injector: this._injector,
|
|
297
291
|
data: {
|
|
298
292
|
columns: this.list.columns.columnsForDialog,
|
|
299
293
|
changeFn: this.list.columns.changeFn,
|
|
@@ -353,15 +347,14 @@ export class FsListComponent {
|
|
|
353
347
|
}
|
|
354
348
|
}
|
|
355
349
|
_restorePersistance(persistConfig) {
|
|
356
|
-
|
|
357
|
-
this._persistance.setConfig(persistConfig, namespace, this._inDialog);
|
|
350
|
+
this._persistance.init(persistConfig, this.inDialog);
|
|
358
351
|
}
|
|
359
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_CONFIG, optional: true }, { token:
|
|
352
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_CONFIG, optional: true }, { token: i0.ElementRef }, { token: i2.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i4.GroupExpandNotifierService }, { token: i5.ActivatedRoute }, { token: i6.PersistanceController }], target: i0.ɵɵFactoryTarget.Component });
|
|
360
353
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList", "class.fs-list-row-highlight": "this.rowHoverHighlight" } }, providers: [
|
|
361
354
|
GroupExpandNotifierService,
|
|
362
355
|
PersistanceController,
|
|
363
356
|
ReorderController,
|
|
364
|
-
], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n<ng-template #heading>\n <div\n class=\"heading-container\"\n *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2\n class=\"heading\"\n *ngIf=\"list.heading || headingTemplate\">\n {{ list.heading }}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div\n class=\"small subheading\"\n *ngIf=\"list.subheading || subheadingTemplate\">\n {{ list.subheading }}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: i9.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "component", type: i10.FsStatusComponent, selector: "fs-list-status", inputs: ["list", "rows", "firstLoad"] }, { kind: "component", type: i11.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "component", type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: i15.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "directive", type: i16.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i17.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "directive", type: i18.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
357
|
+
], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n<ng-template #heading>\n <div\n class=\"heading-container\"\n *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2\n class=\"heading\"\n *ngIf=\"list.heading || headingTemplate\">\n {{ list.heading }}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div\n class=\"small subheading\"\n *ngIf=\"list.subheading || subheadingTemplate\">\n {{ list.subheading }}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: i8.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "component", type: i9.FsStatusComponent, selector: "fs-list-status", inputs: ["list", "rows", "firstLoad"] }, { kind: "component", type: i10.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: i11.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: i12.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "component", type: i13.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: i14.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "directive", type: i15.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i16.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "directive", type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
365
358
|
}
|
|
366
359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, decorators: [{
|
|
367
360
|
type: Component,
|
|
@@ -375,11 +368,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
375
368
|
}, {
|
|
376
369
|
type: Inject,
|
|
377
370
|
args: [FS_LIST_CONFIG]
|
|
378
|
-
}] }, { type: i2.
|
|
379
|
-
type: Optional
|
|
380
|
-
}] }, { type: i3.DrawerRef, decorators: [{
|
|
381
|
-
type: Optional
|
|
382
|
-
}] }, { type: i0.ElementRef }, { type: i4.SelectionDialog }, { type: i2.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i5.GroupExpandNotifierService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: i7.PersistanceController }, { type: i8.Location }], propDecorators: { classFsList: [{
|
|
371
|
+
}] }, { type: i0.ElementRef }, { type: i2.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i4.GroupExpandNotifierService }, { type: i5.ActivatedRoute }, { type: i6.PersistanceController }], propDecorators: { classFsList: [{
|
|
383
372
|
type: HostBinding,
|
|
384
373
|
args: ['class.fs-list']
|
|
385
374
|
}], rowHoverHighlight: [{
|
|
@@ -414,4 +403,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
414
403
|
type: ContentChild,
|
|
415
404
|
args: [FsListEmptyStateDirective, { read: TemplateRef }]
|
|
416
405
|
}] } });
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxPQUFPLEVBQUUs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MEJBMkVFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs7MEJBQ2pDLFFBQVE7OzBCQUNSLFFBQVE7OFNBekUwQixXQUFXO3NCQUEvQyxXQUFXO3VCQUFDLGVBQWU7Z0JBR3JCLGlCQUFpQjtzQkFEdkIsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBSS9CLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsUUFBUTtnQkFNUixXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXBELHdCQUF3QjtzQkFEOUIsWUFBWTt1QkFBQywrQkFBK0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSTdELGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXZELElBQUk7c0JBRFYsU0FBUzt1QkFBQyxlQUFlO2dCQWtCZixlQUFlO3NCQUR6QixTQUFTO3VCQUFDLGVBQWU7Z0JBYWYsZUFBZTtzQkFEekIsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBUzFCLG1CQUFtQjtzQkFEOUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgZ2V0Tm9ybWFsaXplZFBhdGggfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd2VyUmVmIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZHJhd2VyJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2cgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNraXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9saXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9wZXJzaXN0YW5jZS1jb250cm9sbGVyJztcbmltcG9ydCB7IFJlb3JkZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtcbiAgRnNMaXN0SGVhZGluZ0NvbnRhaW5lckRpcmVjdGl2ZSwgRnNMaXN0SGVhZGluZ0RpcmVjdGl2ZSwgRnNMaXN0U3ViaGVhZGluZ0RpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGc0xpc3RDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbHVtbi9jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9lbnVtcy9wYWdpbmF0aW9uLXN0cmF0ZWd5LmVudW0nO1xuaW1wb3J0IHsgRlNfTElTVF9DT05GSUcgfSBmcm9tICcuLi8uLi9mcy1saXN0LnByb3ZpZGVycyc7XG5pbXBvcnQge1xuICBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgRnNMaXN0QWN0aW9uLFxuICBGc0xpc3RDb25maWcsIEZzTGlzdFBlcnNpdGFuY2UsIEZzTGlzdFNlbGVjdGlvbkNvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeUZuLFxuICBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSVBhZ2luYXRpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFnaW5hdGlvbi1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cC1leHBhbmQtbm90aWZpZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0JvZHlDb21wb25lbnQgfSBmcm9tICcuLi9ib2R5L2JvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlLFxuICAgIFBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgICBSZW9yZGVyQ29udHJvbGxlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdCcpIHB1YmxpYyBjbGFzc0ZzTGlzdCA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1saXN0LXJvdy1oaWdobGlnaHQnKVxuICBwdWJsaWMgcm93SG92ZXJIaWdobGlnaHQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBwdWJsaWMgc2V0IGNvbmZpZyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIHRoaXMuX2luaXRXaXRoQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGVyTGluZXMgPSAzO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsdGVyc1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0SGVhZGluZ0RpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgaGVhZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0SGVhZGluZ0NvbnRhaW5lckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgaGVhZGluZ0NvbnRhaW5lclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0U3ViaGVhZGluZ0RpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgc3ViaGVhZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoRnNCb2R5Q29tcG9uZW50KVxuICBwdWJsaWMgYm9keTogRnNCb2R5Q29tcG9uZW50O1xuXG4gIHB1YmxpYyBsaXN0OiBMaXN0O1xuICBwdWJsaWMga2V5d29yZFZpc2libGUgPSB0cnVlO1xuXG4gIC8vIEV2ZW50IHdpbGwgZmlyZWQgaWYgYWN0aW9uIHJlbW92ZTogdHJ1ZSB3aWxsIGNsaWNrZWRcbiAgcHVibGljIHJvd1JlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBmaXJzdExvYWQgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2xpc3RDb2x1bW5EaXJlY3RpdmVzOiBRdWVyeUxpc3Q8RnNMaXN0Q29sdW1uRGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBfZmlsdGVyUmVmOiBGaWx0ZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgX2ZpbHRlclBhcmFtc1JlYWR5ID0gZmFsc2U7XG4gIHByaXZhdGUgX2luRGlhbG9nO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoRmlsdGVyQ29tcG9uZW50KVxuICBwdWJsaWMgc2V0IGZpbHRlclJlZmVyZW5jZShjb21wb25lbnQpIHtcbiAgICB0aGlzLl9maWx0ZXJSZWYgPSBjb21wb25lbnQ7XG4gICAgdGhpcy5saXN0LmFjdGlvbnMuc2V0RmlsdGVyUmVmKGNvbXBvbmVudCk7XG5cbiAgICB0aGlzLl9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY29sdW1ucyB0byBjb25maWdcbiAgICogQ3JlYXRlIENvbHVtbiBNb2RlbCBpbnN0YW5jZXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNMaXN0Q29sdW1uRGlyZWN0aXZlKVxuICBwdWJsaWMgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLl9saXN0Q29sdW1uRGlyZWN0aXZlcyA9IGxpc3RDb2x1bW5EaXJlY3RpdmVzO1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC50cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyhsaXN0Q29sdW1uRGlyZWN0aXZlcyk7XG4gICAgfVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZChGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2V0IF9lbXB0eVN0YXRlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZW1wdHlTdGF0ZVRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0xJU1RfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzTGlzdENvbmZpZyxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RyYXdlclJlZjogRHJhd2VyUmVmPGFueT4sXG4gICAgcHJpdmF0ZSBfZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2csXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2dyb3VwRXhwYW5kTm90aWZpZXI6IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZTogUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvbixcbiAgKSB7IFxuICAgIHRoaXMuX2luRGlhbG9nID0gISF0aGlzLl9kaWFsb2dSZWYgfHwgISF0aGlzLl9kcmF3ZXJSZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHJlZmVyZW5jZSBmb3IgZmlsdGVyXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlclJlZigpOiBGaWx0ZXJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJSZWY7XG4gIH1cblxuICBwdWJsaWMgc2V0IGdyb3VwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGlzdC5ncm91cEVuYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0ZpbHRlcktleXdvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJJbnB1dCAmJiB0aGlzLmtleXdvcmRWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5zdGF0dXMgJiZcbiAgICAgICh0aGlzLmxpc3Quc29ydGluZy5pc0RlZmluZWQgfHwgdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkKSAmJlxuICAgICAgKFxuICAgICAgICAhdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkIHx8XG4gICAgICAgICh0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgJiYgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5zdGF0dXMpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5lbXB0eVN0YXRlRW5hYmxlZFxuICAgICAgJiYgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzQ291bnQgPiAwXG4gICAgICAmJiB0aGlzLmxpc3QucGFnaW5nLnBhZ2VzID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1F1ZXJ5KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcnNRdWVyeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnaW5nU3RhdGUoKTogSVBhZ2luYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5wYWdpbmcuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLmxpc3QuYWZ0ZXJJbml0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1JlbW92ZVJvdygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvR3JvdXBFeHBhbmRTdGF0dXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudXBkYXRlRGF0YShyb3dzLCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlUm93KFxuICAgIHJvdzogRnNMaXN0QWJzdHJhY3RSb3csXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbixcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZXBsYWNlRGF0YShyb3csIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbkNvbmZpZyhjb25maWc6IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24udXBkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWxlY3Rpb25BY3Rpb25zKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24uZW5hYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmRpc2FibGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWFkaW5nKGhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5oZWFkaW5nID0gaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJoZWFkaW5nKHN1YmhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5zdWJoZWFkaW5nID0gc3ViaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyU3RhcnQoKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlckZpbmlzaCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9ucyhhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5jbGVhckFjdGlvbnMoKTtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLnNldEFjdGlvbnMoYWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlclJlYWR5KCkge1xuICAgIHRoaXMubGlzdC5maWx0ZXJzUmVhZHkoKTtcbiAgICB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSA9IHRydWU7XG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIHNwZWNpZmljIGNvbHVtblxuICAgKi9cbiAgcHVibGljIGNvbHVtblZpc2liaWxpdHkobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eShbeyBuYW1lLCBzaG93IH1dKTtcbiAgICB0aGlzLmZpbHRlclJlZi51cGRhdGVTb3J0aW5ncyh0aGlzLmxpc3Quc29ydGluZy5tYWtlU29ydGluZ0xpc3QoKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIGxpc3Qgb2Ygc3BlY2lmaWMgY29sdW1uc1xuICAgKi9cbiAgcHVibGljIGNvbHVtbnNWaXNpYmlsaXR5KGNvbHVtbnM6IHsgbmFtZTogc3RyaW5nOyBzaG93OiBib29sZWFuIH1bXSkge1xuICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZmlsdGVyUmVmICYmIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5KSB7XG4gICAgICB0aGlzLmZpbHRlcnNSZWFkeS5lbWl0KCk7XG5cbiAgICAgIHRoaXMua2V5d29yZFZpc2libGUgPSB0aGlzLmZpbHRlclJlZi5oYXNLZXl3b3JkO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgY29uZmlnIGZvciBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXRXaXRoQ29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBGc0xpc3RDb25maWcgPSB7XG4gICAgICBxdWVyeVBhcmFtOiB0cnVlLFxuICAgICAgY2hpcHM6IHRydWUsXG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgc3RyYXRlZ3k6IFBhZ2luYXRpb25TdHJhdGVneS5PZmZzZXQsXG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgIH0sXG4gICAgICBub1Jlc3VsdHM6IHtcbiAgICAgICAgbWVzc2FnZTogJ05vIFJlc3VsdHMgRm91bmQnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIFxuICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGNsb25lRGVlcCh0aGlzLl9jb25maWcgfHwge30pO1xuICAgIGNvbnN0IGxpc3RDb25maWcgPSBtZXJnZVdpdGgoZGVmYXVsdENvbmZpZywgZ2xvYmFsQ29uZmlnLCBjb25maWcsIHRoaXMuX2NvbmZpZ01lcmdlQ3VzdG9taXplcik7XG5cbiAgICBpZiAobGlzdENvbmZpZy5wZXJzaXN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcmVzdG9yZVBlcnNpc3RhbmNlKGxpc3RDb25maWcucGVyc2lzdCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VzdG9taXplQWN0aW9uKGxpc3RDb25maWcuYWN0aW9ucyk7XG5cbiAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdChcbiAgICAgIHRoaXMuX2VsLFxuICAgICAgbGlzdENvbmZpZyxcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZyxcbiAgICAgIHRoaXMuX3JvdXRlcixcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLl9pbkRpYWxvZyxcbiAgICApO1xuXG4gICAgdGhpcy5yb3dIb3ZlckhpZ2hsaWdodCA9IHRoaXMubGlzdC5yb3dIb3ZlckhpZ2hsaWdodDtcblxuICAgIHRoaXMuX3dhaXRGaXJzdExvYWQoKTtcblxuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuaW5pdFdpdGhDb25maWcoXG4gICAgICBjb25maWcucmVvcmRlcixcbiAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlcixcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLFxuICAgICAgdGhpcy5saXN0LnNlbGVjdGlvbixcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuX2xpc3RDb2x1bW5EaXJlY3RpdmVzKSB7XG4gICAgICB0aGlzLmxpc3QudHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnModGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgICB0aGlzLl9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhY3Rpb24gd2l0aCBjdXN0b21pemUgZmxhZyBhbmQgcmUtZGVjbGFyZSBjbGljayBmdW5jdGlvbiBmb3IgQ3VzdG9taXplQ29sc0RpYWxvZ1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ3VzdG9taXplQWN0aW9uKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgY29uc3QgY3VzdG9taXplQWN0aW9uID0gYWN0aW9ucz8uZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uY3VzdG9taXplKTtcblxuICAgIGlmIChjdXN0b21pemVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBjdXN0b21pemVBY3Rpb24uY2xpY2s7XG5cbiAgICAgIGN1c3RvbWl6ZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbkNsaWNrRm4pIHtcbiAgICAgICAgICBhY3Rpb25DbGlja0ZuKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oQ3VzdG9taXplQ29sc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMubGlzdC5jb2x1bW5zLmNvbHVtbnNGb3JEaWFsb2csXG4gICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5saXN0LmNvbHVtbnMuY2hhbmdlRm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5kZXN0cm95JCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGRhdGEpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNvcnRpbmcgaW4gZmlsdGVyXG4gICAqL1xuICBwcml2YXRlIF9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCkge1xuICAgIHRoaXMubGlzdC5zb3J0aW5nXG4gICAgICAuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNvcnQpID0+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZVNvcnQoc29ydCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUmVtb3ZlUm93KCkge1xuICAgIHRoaXMucm93UmVtb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKHJvdyk7XG4gICAgICAgIHRoaXMuYm9keS5yb3dzXG4gICAgICAgICAgLmZvckVhY2goKGJvZHlSb3cpID0+IGJvZHlSb3cuYWN0aW9uc1VwZGF0ZSgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmhhc0dyb3Vwcykge1xuICAgICAgdGhpcy5fZ3JvdXBFeHBhbmROb3RpZmllci5leHBhbmRTdGF0dXNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudG9nZ2xlUm93R3JvdXAocm93KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdEZpcnN0TG9hZCgpIHtcbiAgICB0aGlzLmxpc3QubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiAhdmFsdWUpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0LmRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdNZXJnZUN1c3RvbWl6ZXIob2JqVmFsdWU6IGFueSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQZXJzaXN0YW5jZShwZXJzaXN0Q29uZmlnOiBGc0xpc3RQZXJzaXRhbmNlKSB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gZ2V0Tm9ybWFsaXplZFBhdGgodGhpcy5fbG9jYXRpb24pO1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNldENvbmZpZyhwZXJzaXN0Q29uZmlnLCBuYW1lc3BhY2UsIHRoaXMuX2luRGlhbG9nKTtcbiAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZnMtbGlzdC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdoYXMtZmlsdGVyLWtleXdvcmQnOiBoYXNGaWx0ZXJLZXl3b3JkLFxuICAgICAgJ2hhcy1maWx0ZXJzJzogbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCxcbiAgICAgICdoYXMtaGVhZGluZyc6IGxpc3QuaGVhZGluZyB8fCBoZWFkaW5nVGVtcGxhdGUsXG4gICAgICAnaGFzLXN0YXR1cyc6IGhhc1N0YXR1cyxcbiAgICAgICdoYXMtY2hpcHMnOiBsaXN0LmNoaXBzLFxuICAgICAgJ2hhcy1hY3Rpb25zJzogbGlzdC5hY3Rpb25zLmhhc0FjdGlvbnMsXG4gICAgICAnaGFzLXJvdy1hY3Rpb25zLWhvdmVyJzogbGlzdC5yb3dBY3Rpb25zSG92ZXIsXG4gICAgICAnZmlyc3QtbG9hZCc6IGZpcnN0TG9hZCxcbiAgICAgICdsb2FkaW5nJzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jXG4gICAgfVwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdENvbnRhaW5lckNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2xpc3RDb250YWluZXJDb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93cyQgfCBhc3luYyBhcyBsaXN0RGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1saXN0LWhlYWRlci1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICduby13cmFwJzogcmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCB8fCAhbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCB9XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIEBpZiAobGlzdC5maWx0ZXJDb25maWcpIHtcbiAgICAgICAgICA8ZnMtZmlsdGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1maWx0ZXJcIlxuICAgICAgICAgICAgICBbZmlsdGVyXT1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICAgICAgW3Nob3dTb3J0QnldPVwiIWxpc3Quc3RhdHVzXCJcbiAgICAgICAgICAgICAgW3Nob3dGaWx0ZXJJbnB1dF09XCJsaXN0LmZpbHRlcklucHV0XCJcbiAgICAgICAgICAgICAgKHJlYWR5KT1cImZpbHRlclJlYWR5KClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlclN0YXR1c0Jhcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGlzdC1zdGF0dXNcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLW1vYmlsZSc6ICFsaXN0LnN0YXR1cyB9XCJcbiAgICAgICAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgICAgICAgIFtsaXN0XT1cImxpc3RcIlxuICAgICAgICAgICAgICAgICAgW2ZpcnN0TG9hZF09XCJmaXJzdExvYWRcIj5cbiAgICAgICAgICAgICAgICA8L2ZzLWxpc3Qtc3RhdHVzPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9mcy1maWx0ZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmcy1saXN0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZCAmJiBsaXN0RGF0YS5sZW5ndGggPiAwICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkXCI+XG4gICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXRhYmxlXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgIFtmc0xpc3RDb250ZW50SW5pdF09XCJsaXN0LmFmdGVyQ29udGVudEluaXRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc3R5bGUtY2FyZCc6IGxpc3Quc3R5bGUgPT09ICdjYXJkJyxcbiAgICAgICAgICAgICAgJ3N0eWxlLWJhc2ljJzogbGlzdC5zdHlsZSA9PT0gJ2Jhc2ljJyxcbiAgICAgICAgICAgICAgJ3N0eWxlLWxpbmUnOiAobGlzdC5zdHlsZSB8fCAnbGluZScpID09PSAnbGluZSdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8dGhlYWRcbiAgICAgICAgICAgIGZzLWxpc3QtaGVhZFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0hlYWRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJsaXN0LmNvbHVtbnMudGhlYWRDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHlcbiAgICAgICAgICAgIGZzLWxpc3QtYm9keVxuICAgICAgICAgICAgZnNMaXN0RHJhZ2dhYmxlTGlzdFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWJvZHlcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhIShyZW9yZGVyQ29udHJvbGxlci5yZW9yZGVyRGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgIFtyb3dBY3Rpb25zUmF3XT1cImxpc3Qucm93QWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbZ3JvdXBBY3Rpb25zUmF3XT1cImxpc3QuZ3JvdXBBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbcm93RXZlbnRzXT1cImxpc3Qucm93RXZlbnRzXCJcbiAgICAgICAgICAgIFtyb3dDbGFzc109XCJsaXN0LnJvd0NsYXNzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVzdG9yZU1vZGVdPVwibGlzdC5yZXN0b3JlTW9kZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJNdWx0aXBsZV09XCJyZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZVwiPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPHRmb290XG4gICAgICAgICAgICBmcy1saXN0LWZvb3RlclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZvb3RlclwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuY29sdW1ucy5oYXNGb290ZXJcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGZzLWxpc3QtbG9hZGVyXG4gICAgICAgICpuZ0lmPVwiZmlyc3RMb2FkXCJcbiAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLmNvbHVtbnNcIlxuICAgICAgICBbbG9hZGVyTGluZXNdPVwibG9hZGVyTGluZXNcIj5cbiAgICAgIDwvZnMtbGlzdC1sb2FkZXI+XG4gICAgPC9kaXY+XG4gICAgPGZzLWxpc3QtcGFnaW5hdGlvblxuICAgICAgY2xhc3M9XCJmcy1saXN0LXBhZ2luYXRpb25cIlxuICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgW3BhZ2luYXRpb25dPVwibGlzdC5wYWdpbmdcIj5cbiAgICA8L2ZzLWxpc3QtcGFnaW5hdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibGlzdERhdGEubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSAmJiAhbGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgIHt7IGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0LmVtcHR5U3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZz5cbiAgPGRpdlxuICAgICAgY2xhc3M9XCJoZWFkaW5nLWNvbnRhaW5lclwiXG4gICAgICAqbmdJZj1cImhlYWRpbmdDb250YWluZXJUZW1wbGF0ZSB8fCBsaXN0LmhlYWRpbmcgfHwgbGlzdC5zdWJoZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGU7IGVsc2UgaGVhZGluZ0NvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0ZW1wbGF0ZTogaGVhZGluZ0NvbnRhaW5lciB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRpbmdDb250YWluZXI+XG4gICAgICA8aDJcbiAgICAgICAgICBjbGFzcz1cImhlYWRpbmdcIlxuICAgICAgICAgICpuZ0lmPVwibGlzdC5oZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICB7eyBsaXN0LmhlYWRpbmcgfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBzdWJoZWFkaW5nXCJcbiAgICAgICAgICAqbmdJZj1cImxpc3Quc3ViaGVhZGluZyB8fCBzdWJoZWFkaW5nVGVtcGxhdGVcIj5cbiAgICAgICAge3sgbGlzdC5zdWJoZWFkaW5nIH19XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViaGVhZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0Us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LEtBQUs7dUJBQUMsUUFBUTtnQkFNUixXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXBELHdCQUF3QjtzQkFEOUIsWUFBWTt1QkFBQywrQkFBK0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSTdELGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXZELElBQUk7c0JBRFYsU0FBUzt1QkFBQyxlQUFlO2dCQWlCZixlQUFlO3NCQUR6QixTQUFTO3VCQUFDLGVBQWU7Z0JBYWYsZUFBZTtzQkFEekIsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBUzFCLG1CQUFtQjtzQkFEOUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uRGlhbG9nIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBza2lwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgTGlzdCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvbGlzdC1jb250cm9sbGVyJztcbmltcG9ydCB7IFBlcnNpc3RhbmNlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGVyc2lzdGFuY2UtY29udHJvbGxlcic7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEZzTGlzdEhlYWRpbmdDb250YWluZXJEaXJlY3RpdmUsIEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIEZzTGlzdFN1YmhlYWRpbmdEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRnNMaXN0Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb2x1bW4vY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZW51bXMvcGFnaW5hdGlvbi1zdHJhdGVneS5lbnVtJztcbmltcG9ydCB7IEZTX0xJU1RfQ09ORklHIH0gZnJvbSAnLi4vLi4vZnMtbGlzdC5wcm92aWRlcnMnO1xuaW1wb3J0IHtcbiAgRnNMaXN0QWJzdHJhY3RSb3csXG4gIEZzTGlzdEFjdGlvbixcbiAgRnNMaXN0Q29uZmlnLCBGc0xpc3RQZXJzaXRhbmNlLCBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gIEZzTGlzdFRyYWNrQnlGbixcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IElQYWdpbmF0aW9uU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhZ2luYXRpb24tc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXAtZXhwYW5kLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnNCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vYm9keS9ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9taXplLWNvbHMvY3VzdG9taXplLWNvbHMuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSxcbiAgICBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWxpc3QnKSBwdWJsaWMgY2xhc3NGc0xpc3QgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdC1yb3ctaGlnaGxpZ2h0JylcbiAgcHVibGljIHJvd0hvdmVySGlnaGxpZ2h0OiBib29sZWFuO1xuXG4gIEBJbnB1dCgnY29uZmlnJylcbiAgcHVibGljIHNldCBjb25maWcoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICB0aGlzLl9pbml0V2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlckxpbmVzID0gMztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlcnNSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdDb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdFN1YmhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHN1YmhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKEZzQm9keUNvbXBvbmVudClcbiAgcHVibGljIGJvZHk6IEZzQm9keUNvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdDogTGlzdDtcbiAgcHVibGljIGtleXdvcmRWaXNpYmxlID0gdHJ1ZTtcblxuICAvLyBFdmVudCB3aWxsIGZpcmVkIGlmIGFjdGlvbiByZW1vdmU6IHRydWUgd2lsbCBjbGlja2VkXG4gIHB1YmxpYyByb3dSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgZmlyc3RMb2FkID0gdHJ1ZTtcblxuICBwcml2YXRlIF9saXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG4gIHByaXZhdGUgX2ZpbHRlclJlZjogRmlsdGVyQ29tcG9uZW50O1xuICBwcml2YXRlIF9maWx0ZXJQYXJhbXNSZWFkeSA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBcbiAgQFZpZXdDaGlsZChGaWx0ZXJDb21wb25lbnQpXG4gIHB1YmxpYyBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcblxuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb2x1bW5zIHRvIGNvbmZpZ1xuICAgKiBDcmVhdGUgQ29sdW1uIE1vZGVsIGluc3RhbmNlc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihGc0xpc3RDb2x1bW5EaXJlY3RpdmUpXG4gIHB1YmxpYyBzZXQgY29sdW1uVGVtcGxhdGVzKGxpc3RDb2x1bW5EaXJlY3RpdmVzOiBRdWVyeUxpc3Q8RnNMaXN0Q29sdW1uRGlyZWN0aXZlPikge1xuICAgIHRoaXMuX2xpc3RDb2x1bW5EaXJlY3RpdmVzID0gbGlzdENvbHVtbkRpcmVjdGl2ZXM7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKGxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzZXQgX2VtcHR5U3RhdGVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5lbXB0eVN0YXRlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2RyYXdlclJlZiA9IGluamVjdChEcmF3ZXJSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7ICBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfTElTVF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNMaXN0Q29uZmlnLFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3NlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9ncm91cEV4cGFuZE5vdGlmaWVyOiBHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2U6IFBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgKSB7IFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJSZWYoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVmO1xuICB9XG5cbiAgcHVibGljIHNldCBncm91cEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxpc3QuZ3JvdXBFbmFibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JvdXBFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuZ3JvdXBFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGaWx0ZXJLZXl3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZmlsdGVySW5wdXQgJiYgdGhpcy5rZXl3b3JkVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3Quc3RhdHVzICYmXG4gICAgICAodGhpcy5saXN0LnNvcnRpbmcuaXNEZWZpbmVkIHx8IHRoaXMubGlzdC5wYWdpbmcuZW5hYmxlZCkgJiZcbiAgICAgIChcbiAgICAgICAgIXRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCB8fFxuICAgICAgICAodGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkICYmIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuc3RhdHVzKVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnaW5hdG9yVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkXG4gICAgICAmJiAhdGhpcy5maXJzdExvYWRcbiAgICAgICYmICF0aGlzLmxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcbiAgICAgICYmIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93c0NvdW50ID4gMFxuICAgICAgJiYgdGhpcy5saXN0LnBhZ2luZy5wYWdlcyA+IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlcnNRdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJzUXVlcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2luZ1N0YXRlKCk6IElQYWdpbmF0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saXN0LmFmdGVySW5pdCkge1xuICAgICAgdGhpcy5saXN0LmFmdGVySW5pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9SZW1vdmVSb3coKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXN0cm95Lm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5leHRQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29OZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb1ByZXYoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaXJzdFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb0ZpcnN0KCk7XG4gIH1cblxuICBwdWJsaWMgbGFzdFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb0xhc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnJlbG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGdldERhdGEodHJhY2tCeT86IEZzTGlzdFRyYWNrQnlGbikge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZ2V0RGF0YSh0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNEYXRhKHRyYWNrQnk6IEZzTGlzdFRyYWNrQnlGbikge1xuICAgIHJldHVybiB0aGlzLmxpc3QuaGFzRGF0YSh0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEYXRhKFxuICAgIHJvd3M6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnVwZGF0ZURhdGEocm93cywgdHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgcmVwbGFjZVJvdyhcbiAgICByb3c6IEZzTGlzdEFic3RyYWN0Um93LFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVwbGFjZURhdGEocm93LCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25Db25maWcoY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnVwZGF0ZUNvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VsZWN0aW9uQWN0aW9ucygpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnJlc2V0QWN0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmVuYWJsZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5saXN0LnNlbGVjdGlvbi5kaXNhYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRGF0YShkYXRhOiBGc0xpc3RBYnN0cmFjdFJvdyB8IEZzTGlzdEFic3RyYWN0Um93W10gfCBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnJlbW92ZURhdGEoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGluZyhoZWFkaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxpc3QuaGVhZGluZyA9IGhlYWRpbmc7XG4gIH1cblxuICBwdWJsaWMgc2V0U3ViaGVhZGluZyhzdWJoZWFkaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxpc3Quc3ViaGVhZGluZyA9IHN1YmhlYWRpbmc7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlclN0YXJ0KCkge1xuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlUmVvcmRlcigpO1xuICB9XG5cbiAgcHVibGljIHJlb3JkZXJGaW5pc2goKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5kaXNhYmxlUmVvcmRlcigpO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbnMoYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgdGhpcy5saXN0LmFjdGlvbnMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRBY3Rpb25zKGFjdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJSZWFkeSgpIHtcbiAgICB0aGlzLmxpc3QuZmlsdGVyc1JlYWR5KCk7XG4gICAgdGhpcy5fZmlsdGVyUGFyYW1zUmVhZHkgPSB0cnVlO1xuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmlsaXR5IGZvciBzcGVjaWZpYyBjb2x1bW5cbiAgICovXG4gIHB1YmxpYyBjb2x1bW5WaXNpYmlsaXR5KG5hbWU6IHN0cmluZywgc2hvdzogYm9vbGVhbikge1xuICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkoW3sgbmFtZSwgc2hvdyB9XSk7XG4gICAgdGhpcy5maWx0ZXJSZWYudXBkYXRlU29ydGluZ3ModGhpcy5saXN0LnNvcnRpbmcubWFrZVNvcnRpbmdMaXN0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmlsaXR5IGZvciBsaXN0IG9mIHNwZWNpZmljIGNvbHVtbnNcbiAgICovXG4gIHB1YmxpYyBjb2x1bW5zVmlzaWJpbGl0eShjb2x1bW5zOiB7IG5hbWU6IHN0cmluZzsgc2hvdzogYm9vbGVhbiB9W10pIHtcbiAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhjb2x1bW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLmZpbHRlclJlZiAmJiB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSkge1xuICAgICAgdGhpcy5maWx0ZXJzUmVhZHkuZW1pdCgpO1xuXG4gICAgICB0aGlzLmtleXdvcmRWaXNpYmxlID0gdGhpcy5maWx0ZXJSZWYuaGFzS2V5d29yZDtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5EaWFsb2coKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGlhbG9nUmVmIHx8ICEhdGhpcy5fZHJhd2VyUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgY29uZmlnIGZvciBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXRXaXRoQ29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBGc0xpc3RDb25maWcgPSB7XG4gICAgICBxdWVyeVBhcmFtOiB0cnVlLFxuICAgICAgY2hpcHM6IHRydWUsXG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgc3RyYXRlZ3k6IFBhZ2luYXRpb25TdHJhdGVneS5PZmZzZXQsXG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgIH0sXG4gICAgICBub1Jlc3VsdHM6IHtcbiAgICAgICAgbWVzc2FnZTogJ05vIFJlc3VsdHMgRm91bmQnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIFxuICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGNsb25lRGVlcCh0aGlzLl9jb25maWcgfHwge30pO1xuICAgIGNvbnN0IGxpc3RDb25maWcgPSBtZXJnZVdpdGgoZGVmYXVsdENvbmZpZywgZ2xvYmFsQ29uZmlnLCBjb25maWcsIHRoaXMuX2NvbmZpZ01lcmdlQ3VzdG9taXplcik7XG5cbiAgICBpZiAobGlzdENvbmZpZy5wZXJzaXN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcmVzdG9yZVBlcnNpc3RhbmNlKGxpc3RDb25maWcucGVyc2lzdCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VzdG9taXplQWN0aW9uKGxpc3RDb25maWcuYWN0aW9ucyk7XG5cbiAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdChcbiAgICAgIHRoaXMuX2VsLFxuICAgICAgbGlzdENvbmZpZyxcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZyxcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLmluRGlhbG9nLFxuICAgICk7XG5cbiAgICB0aGlzLnJvd0hvdmVySGlnaGxpZ2h0ID0gdGhpcy5saXN0LnJvd0hvdmVySGlnaGxpZ2h0O1xuXG4gICAgdGhpcy5fd2FpdEZpcnN0TG9hZCgpO1xuXG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5pbml0V2l0aENvbmZpZyhcbiAgICAgIGNvbmZpZy5yZW9yZGVyLFxuICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLFxuICAgICAgdGhpcy5saXN0LmFjdGlvbnMsXG4gICAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMpIHtcbiAgICAgIHRoaXMubGlzdC50cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyh0aGlzLl9saXN0Q29sdW1uRGlyZWN0aXZlcyk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3RlblNvcnRpbmdDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFjdGlvbiB3aXRoIGN1c3RvbWl6ZSBmbGFnIGFuZCByZS1kZWNsYXJlIGNsaWNrIGZ1bmN0aW9uIGZvciBDdXN0b21pemVDb2xzRGlhbG9nXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVDdXN0b21pemVBY3Rpb24oYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICBjb25zdCBjdXN0b21pemVBY3Rpb24gPSBhY3Rpb25zPy5maW5kKChhY3Rpb24pID0+IGFjdGlvbi5jdXN0b21pemUpO1xuXG4gICAgaWYgKGN1c3RvbWl6ZUFjdGlvbikge1xuICAgICAgY29uc3QgYWN0aW9uQ2xpY2tGbiA9IGN1c3RvbWl6ZUFjdGlvbi5jbGljaztcblxuICAgICAgY3VzdG9taXplQWN0aW9uLmNsaWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uQ2xpY2tGbikge1xuICAgICAgICAgIGFjdGlvbkNsaWNrRm4obnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kaWFsb2cub3BlbihDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMubGlzdC5jb2x1bW5zLmNvbHVtbnNGb3JEaWFsb2csXG4gICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5saXN0LmNvbHVtbnMuY2hhbmdlRm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5kZXN0cm95JCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGRhdGEpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNvcnRpbmcgaW4gZmlsdGVyXG4gICAqL1xuICBwcml2YXRlIF9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCkge1xuICAgIHRoaXMubGlzdC5zb3J0aW5nXG4gICAgICAuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNvcnQpID0+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZVNvcnQoc29ydCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUmVtb3ZlUm93KCkge1xuICAgIHRoaXMucm93UmVtb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKHJvdyk7XG4gICAgICAgIHRoaXMuYm9keS5yb3dzXG4gICAgICAgICAgLmZvckVhY2goKGJvZHlSb3cpID0+IGJvZHlSb3cuYWN0aW9uc1VwZGF0ZSgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmhhc0dyb3Vwcykge1xuICAgICAgdGhpcy5fZ3JvdXBFeHBhbmROb3RpZmllci5leHBhbmRTdGF0dXNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudG9nZ2xlUm93R3JvdXAocm93KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdEZpcnN0TG9hZCgpIHtcbiAgICB0aGlzLmxpc3QubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiAhdmFsdWUpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0LmRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdNZXJnZUN1c3RvbWl6ZXIob2JqVmFsdWU6IGFueSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQZXJzaXN0YW5jZShwZXJzaXN0Q29uZmlnOiBGc0xpc3RQZXJzaXRhbmNlKSB7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2UuaW5pdChwZXJzaXN0Q29uZmlnLCB0aGlzLmluRGlhbG9nKTtcbiAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZnMtbGlzdC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdoYXMtZmlsdGVyLWtleXdvcmQnOiBoYXNGaWx0ZXJLZXl3b3JkLFxuICAgICAgJ2hhcy1maWx0ZXJzJzogbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCxcbiAgICAgICdoYXMtaGVhZGluZyc6IGxpc3QuaGVhZGluZyB8fCBoZWFkaW5nVGVtcGxhdGUsXG4gICAgICAnaGFzLXN0YXR1cyc6IGhhc1N0YXR1cyxcbiAgICAgICdoYXMtY2hpcHMnOiBsaXN0LmNoaXBzLFxuICAgICAgJ2hhcy1hY3Rpb25zJzogbGlzdC5hY3Rpb25zLmhhc0FjdGlvbnMsXG4gICAgICAnaGFzLXJvdy1hY3Rpb25zLWhvdmVyJzogbGlzdC5yb3dBY3Rpb25zSG92ZXIsXG4gICAgICAnZmlyc3QtbG9hZCc6IGZpcnN0TG9hZCxcbiAgICAgICdsb2FkaW5nJzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jXG4gICAgfVwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdENvbnRhaW5lckNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2xpc3RDb250YWluZXJDb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93cyQgfCBhc3luYyBhcyBsaXN0RGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1saXN0LWhlYWRlci1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICduby13cmFwJzogcmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCB8fCAhbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCB9XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIEBpZiAobGlzdC5maWx0ZXJDb25maWcpIHtcbiAgICAgICAgICA8ZnMtZmlsdGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1maWx0ZXJcIlxuICAgICAgICAgICAgICBbZmlsdGVyXT1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICAgICAgW3Nob3dTb3J0QnldPVwiIWxpc3Quc3RhdHVzXCJcbiAgICAgICAgICAgICAgW3Nob3dGaWx0ZXJJbnB1dF09XCJsaXN0LmZpbHRlcklucHV0XCJcbiAgICAgICAgICAgICAgKHJlYWR5KT1cImZpbHRlclJlYWR5KClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlclN0YXR1c0Jhcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbGlzdC1zdGF0dXNcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLW1vYmlsZSc6ICFsaXN0LnN0YXR1cyB9XCJcbiAgICAgICAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgICAgICAgIFtsaXN0XT1cImxpc3RcIlxuICAgICAgICAgICAgICAgICAgW2ZpcnN0TG9hZF09XCJmaXJzdExvYWRcIj5cbiAgICAgICAgICAgICAgICA8L2ZzLWxpc3Qtc3RhdHVzPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9mcy1maWx0ZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmcy1saXN0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZCAmJiBsaXN0RGF0YS5sZW5ndGggPiAwICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkXCI+XG4gICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXRhYmxlXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgIFtmc0xpc3RDb250ZW50SW5pdF09XCJsaXN0LmFmdGVyQ29udGVudEluaXRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc3R5bGUtY2FyZCc6IGxpc3Quc3R5bGUgPT09ICdjYXJkJyxcbiAgICAgICAgICAgICAgJ3N0eWxlLWJhc2ljJzogbGlzdC5zdHlsZSA9PT0gJ2Jhc2ljJyxcbiAgICAgICAgICAgICAgJ3N0eWxlLWxpbmUnOiAobGlzdC5zdHlsZSB8fCAnbGluZScpID09PSAnbGluZSdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8dGhlYWRcbiAgICAgICAgICAgIGZzLWxpc3QtaGVhZFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0hlYWRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJsaXN0LmNvbHVtbnMudGhlYWRDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHlcbiAgICAgICAgICAgIGZzLWxpc3QtYm9keVxuICAgICAgICAgICAgZnNMaXN0RHJhZ2dhYmxlTGlzdFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWJvZHlcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhIShyZW9yZGVyQ29udHJvbGxlci5yZW9yZGVyRGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgIFtyb3dBY3Rpb25zUmF3XT1cImxpc3Qucm93QWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbZ3JvdXBBY3Rpb25zUmF3XT1cImxpc3QuZ3JvdXBBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbcm93RXZlbnRzXT1cImxpc3Qucm93RXZlbnRzXCJcbiAgICAgICAgICAgIFtyb3dDbGFzc109XCJsaXN0LnJvd0NsYXNzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVzdG9yZU1vZGVdPVwibGlzdC5yZXN0b3JlTW9kZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJNdWx0aXBsZV09XCJyZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZVwiPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPHRmb290XG4gICAgICAgICAgICBmcy1saXN0LWZvb3RlclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZvb3RlclwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuY29sdW1ucy5oYXNGb290ZXJcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGZzLWxpc3QtbG9hZGVyXG4gICAgICAgICpuZ0lmPVwiZmlyc3RMb2FkXCJcbiAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLmNvbHVtbnNcIlxuICAgICAgICBbbG9hZGVyTGluZXNdPVwibG9hZGVyTGluZXNcIj5cbiAgICAgIDwvZnMtbGlzdC1sb2FkZXI+XG4gICAgPC9kaXY+XG4gICAgPGZzLWxpc3QtcGFnaW5hdGlvblxuICAgICAgY2xhc3M9XCJmcy1saXN0LXBhZ2luYXRpb25cIlxuICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgW3BhZ2luYXRpb25dPVwibGlzdC5wYWdpbmdcIj5cbiAgICA8L2ZzLWxpc3QtcGFnaW5hdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibGlzdERhdGEubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSAmJiAhbGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgIHt7IGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0LmVtcHR5U3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZz5cbiAgPGRpdlxuICAgICAgY2xhc3M9XCJoZWFkaW5nLWNvbnRhaW5lclwiXG4gICAgICAqbmdJZj1cImhlYWRpbmdDb250YWluZXJUZW1wbGF0ZSB8fCBsaXN0LmhlYWRpbmcgfHwgbGlzdC5zdWJoZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGU7IGVsc2UgaGVhZGluZ0NvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0ZW1wbGF0ZTogaGVhZGluZ0NvbnRhaW5lciB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRpbmdDb250YWluZXI+XG4gICAgICA8aDJcbiAgICAgICAgICBjbGFzcz1cImhlYWRpbmdcIlxuICAgICAgICAgICpuZ0lmPVwibGlzdC5oZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICB7eyBsaXN0LmhlYWRpbmcgfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBzdWJoZWFkaW5nXCJcbiAgICAgICAgICAqbmdJZj1cImxpc3Quc3ViaGVhZGluZyB8fCBzdWJoZWFkaW5nVGVtcGxhdGVcIj5cbiAgICAgICAge3sgbGlzdC5zdWJoZWFkaW5nIH19XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViaGVhZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|