@rangertechnologies/ngnxt 2.1.143 → 2.1.145
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/esm2022/environments/version.mjs +2 -2
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +3 -3
- package/esm2022/lib/components/datatable/datatable.component.mjs +46 -13
- package/esm2022/lib/components/list-view-filter/list-view-filter.component.mjs +2 -2
- package/esm2022/lib/components/search-box/search-box.component.mjs +11 -3
- package/esm2022/lib/pages/builder/element/element.component.mjs +12 -24
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +3 -3
- package/fesm2022/rangertechnologies-ngnxt.mjs +693 -662
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/custom-input/custom-input.component.d.ts +1 -2
- package/lib/components/datatable/datatable.component.d.ts +5 -1
- package/lib/components/search-box/search-box.component.d.ts +1 -0
- package/lib/pages/builder/element/element.component.d.ts +0 -2
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.145.tgz +0 -0
- package/src/lib/style.css +4 -4
- package/rangertechnologies-ngnxt-2.1.143.tgz +0 -0
|
@@ -10,7 +10,7 @@ export class ListViewFilterComponent {
|
|
|
10
10
|
tableFilterArray = [];
|
|
11
11
|
selectedView = '';
|
|
12
12
|
displayedColumns = [];
|
|
13
|
-
availableOperators = ['=', '!=', '>', '<', '>=', '<='
|
|
13
|
+
availableOperators = ['=', '!=', '>', '<', '>=', '<=']; // 'contains', 'not contains', 'starts with', 'ends with'
|
|
14
14
|
listViewEmit = new EventEmitter();
|
|
15
15
|
isDropdownOpen = false;
|
|
16
16
|
isModalOpen = false;
|
|
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
327
327
|
type: HostListener,
|
|
328
328
|
args: ['document:click', ['$event']]
|
|
329
329
|
}] } });
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9saXN0LXZpZXctZmlsdGVyL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC12aWV3LWZpbHRlci9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE4QmpILE1BQU0sT0FBTyx1QkFBdUI7SUF3QmQ7SUF2QlgsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0Isa0JBQWtCLEdBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUV4SCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVqRCxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBQ25DLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsWUFBWSxHQUFvQixJQUFJLENBQUM7SUFFckMsV0FBVyxDQUFZO0lBRXZCLGVBQWUsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELFdBQVcsR0FBYSxFQUFFLENBQUM7SUFDM0Isb0JBQW9CLEdBQWMsRUFBRSxDQUFDO0lBQ3JDLHNCQUFzQixHQUFjLEVBQUUsQ0FBQztJQUN2QyxtQkFBbUIsR0FBYyxFQUFFLENBQUM7SUFDcEMsd0JBQXdCLEdBQWMsRUFBRSxDQUFDO0lBRXpDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDL0IsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDckMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDbkQsQ0FBQztRQUdELDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxFQUFpQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNuRCxDQUFDO1FBRUQsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDM0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQWlDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFjLENBQUM7SUFDekQsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsU0FBUztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsU0FBUyxDQUFDLElBQWMsRUFBRSxLQUFhO1FBQ3JDLElBQUksS0FBSztZQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUMxQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDLENBQUM7UUFFSCxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDakMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUMxQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzthQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDdkMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUMvQixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO1lBQzdCLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFhO2dCQUN6QixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7Z0JBQ2hDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztnQkFDdEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7Z0JBQ2hDLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTzthQUMzQixDQUFDO1lBRUYsNEJBQTRCO1lBQzVCLHFDQUFxQztZQUNyQywyREFBMkQ7WUFDM0QsUUFBUTtZQUNSLElBQUk7WUFFSixtRkFBbUY7WUFDbkYsNEJBQTRCO1lBQzVCLHFEQUFxRDtZQUNyRCxXQUFXO1lBQ1gsbUNBQW1DO1lBQ25DLElBQUk7WUFFSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsYUFBYSxDQUFDLElBQWMsRUFBRSxLQUFhO1FBQ3pDLElBQUksS0FBSztZQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNsRyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixtQ0FBbUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFDeEUsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxrQkFBa0IsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUMxQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLE9BQU8sQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNqQyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELE1BQU0sQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNoQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUM3QyxDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFSCw0RUFBNEU7SUFDMUUsWUFBWSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUNyRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0MsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM3QyxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxpRkFBaUY7SUFFakYsZUFBZSxDQUFDLEtBQVU7UUFDeEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQzt3R0F0VVUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsOFlDaENwQyxtaW9CQThQTSxrNUxEbE9NLFlBQVksK1BBQUUsV0FBVywyc0NBQUUsbUJBQW1COzs0RkFJN0MsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDO2dGQUtoRCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkF5VFAsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW50ZXJmYWNlIExpc3RWaWV3IHtcbiAgZmlsdGVyTmFtZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xuICBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIGNvbmRpdGlvbnM6IExpc3RWaWV3RmlsdGVyW107XG4gIGNvbHVtbnM6IExpc3RWaWV3Q29sdW1uW107XG4gIHNob3dBY3Rpb25zPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExpc3RWaWV3RmlsdGVyIHtcbiAgZmllbGQ6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIExpc3RWaWV3Q29sdW1uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3J0YWJsZTogYm9vbGVhbjtcbiAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpc3Qtdmlldy1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdFZpZXdGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsaXN0Vmlld3M6IExpc3RWaWV3W10gPSBbXTtcbiAgQElucHV0KCkgdGFibGVGaWx0ZXJBcnJheTogYW55ID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGVkVmlldzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBhdmFpbGFibGVPcGVyYXRvcnM6IHN0cmluZ1tdID0gWyc9JywgJyE9JywgJz4nLCAnPCcsICc+PScsICc8PScsICdjb250YWlucycsICdub3QgY29udGFpbnMnLCAnc3RhcnRzIHdpdGgnLCAnZW5kcyB3aXRoJ107XG5cbiAgQE91dHB1dCgpIGxpc3RWaWV3RW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRGVsZXRlTW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQWRkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHZpZXdUb0RlbGV0ZTogTGlzdFZpZXcgfCBudWxsID0gbnVsbDtcblxuICBlZGl0aW5nVmlldzogRm9ybUdyb3VwO1xuXG4gIGNvbHVtblZhbHVlc01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gIGNvbHVtbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc0NvbHVtbkRyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG4gIGlzT3BlcmF0b3JEcm9wZG93bk9wZW46IGJvb2xlYW5bXSA9IFtdO1xuICBpc1ZhbHVlRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcbiAgaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZWRpdGluZ1ZpZXcgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZpbHRlck5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvcmRlcjogWzAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKV1dLFxuICAgICAgaXNEZWZhdWx0OiBbZmFsc2VdLFxuICAgICAgY29uZGl0aW9uczogdGhpcy5mYi5hcnJheShbXSksXG4gICAgICBjb2x1bW5zOiB0aGlzLmZiLmFycmF5KFtdKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZTtcbiAgICB9XG5cblxuICAgIC8vIFNLUzNNQVkyNSBDb21wdXRlIGNvbHVtblZhbHVlc01hcCBhbmQgY29sdW1uTmFtZXMgZnJvbSB0YWJsZUZpbHRlckFycmF5XG4gICAgdGhpcy5jb2x1bW5WYWx1ZXNNYXAgPSBBcnJheS5pc0FycmF5KHRoaXMudGFibGVGaWx0ZXJBcnJheSlcbiAgICA/IHRoaXMudGFibGVGaWx0ZXJBcnJheS5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhjdXJyKVswXTtcbiAgICAgICAgYWNjW2tleV0gPSBjdXJyW2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0pXG4gICAgOiB7fTsgIFxuICAgIHRoaXMuY29sdW1uTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbHVtblZhbHVlc01hcCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZTtcbiAgICB9XG5cbiAgICAvLyBTS1MzTUFZMjUgQ29tcHV0ZSBjb2x1bW5WYWx1ZXNNYXAgYW5kIGNvbHVtbk5hbWVzIGZyb20gdGFibGVGaWx0ZXJBcnJheVxuICAgIHRoaXMuY29sdW1uVmFsdWVzTWFwID0gQXJyYXkuaXNBcnJheSh0aGlzLnRhYmxlRmlsdGVyQXJyYXkpXG4gICAgPyB0aGlzLnRhYmxlRmlsdGVyQXJyYXkucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoY3VycilbMF07XG4gICAgICAgIGFjY1trZXldID0gY3VycltrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9KVxuICAgIDoge307ICBcbiAgICB0aGlzLmNvbHVtbk5hbWVzID0gT2JqZWN0LmtleXModGhpcy5jb2x1bW5WYWx1ZXNNYXApO1xuICB9XG5cbiAgZ2V0IGNvbmRpdGlvbnMoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nVmlldy5nZXQoJ2NvbmRpdGlvbnMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyB0aGUgRm9ybUFycmF5IG9mIGNvbHVtbnMgZnJvbSB0aGUgZWRpdGluZyBmb3JtXG4gIGdldCBjb2x1bW5zKCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1ZpZXcuZ2V0KCdjb2x1bW5zJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IEFkZHMgYSBuZXcgZmlsdGVyIGNvbmRpdGlvbiB0byB0aGUgZm9ybVxuICBhZGRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jb25kaXRpb25zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICBmaWVsZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG9wZXJhdG9yOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdmFsdWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KSk7XG4gICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW4ucHVzaChmYWxzZSk7XG4gICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuLnB1c2goZmFsc2UpO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFJlbW92ZXMgYSBmaWx0ZXIgY29uZGl0aW9uIGJ5IGluZGV4XG4gIHJlbW92ZUZpbHRlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jb25kaXRpb25zLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBhZGRDb2x1bW4oKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgc29ydGFibGU6IFtmYWxzZV0sXG4gICAgICBmaWx0ZXJhYmxlOiBbZmFsc2VdXG4gICAgfSkpO1xuICAgIHRoaXMuaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuLnB1c2goZmFsc2UpO1xuICB9XG5cbiAgcmVtb3ZlQ29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHtcImFjdGlvblwiOiAnZmlsdGVyR2V0J30pO1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBIYW5kbGVzIHNlbGVjdGluZyBhIGxpc3QgdmlldyBmcm9tIHRoZSBkcm9wZG93blxuICBzZWxlY3RMaXN0Vmlldyh2aWV3OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHZpZXcuZmlsdGVyTmFtZTtcbiAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzonc2VsZWN0JywgJ2RhdGEnOnZpZXd9KTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgbW9kYWwgdG8gZWRpdCBhbiBleGlzdGluZyBsaXN0IHZpZXdcbiAgc3RhcnRFZGl0KHZpZXc6IExpc3RWaWV3LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuaXNBZGRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucmVzZXQoKTtcbiAgICB3aGlsZSAodGhpcy5jb25kaXRpb25zLmxlbmd0aCkgdGhpcy5jb25kaXRpb25zLnJlbW92ZUF0KDApO1xuICAgIHdoaWxlICh0aGlzLmNvbHVtbnMubGVuZ3RoKSB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoMCk7XG5cbiAgICB0aGlzLmVkaXRpbmdWaWV3LnBhdGNoVmFsdWUoe1xuICAgICAgZmlsdGVyTmFtZTogdmlldy5maWx0ZXJOYW1lLFxuICAgICAgb3JkZXI6IHZpZXcub3JkZXIsXG4gICAgICBpc0RlZmF1bHQ6IHZpZXcuaXNEZWZhdWx0XG4gICAgfSk7XG5cbiAgICB2aWV3Py5jb25kaXRpb25zPy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgZmllbGQ6IFtmaWx0ZXIuZmllbGQsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBvcGVyYXRvcjogW2ZpbHRlci5vcGVyYXRvciwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIHZhbHVlOiBbZmlsdGVyLnZhbHVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgdmlldz8uY29sdW1ucz8uZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgbmFtZTogW2ZpZWxkLm5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBzb3J0YWJsZTogW2ZpZWxkLnNvcnRhYmxlXSxcbiAgICAgICAgZmlsdGVyYWJsZTogW2ZpZWxkLmZpbHRlcmFibGVdXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25kaXRpb25zLmxlbmd0aCA9PT0gMCkgdGhpcy5hZGRGaWx0ZXIoKTtcbiAgICBpZiAodGhpcy5jb2x1bW5zLmxlbmd0aCA9PT0gMCkgdGhpcy5hZGRDb2x1bW4oKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBtb2RhbCB0byBjcmVhdGUgYSBuZXcgbGlzdCB2aWV3XG4gIHN0YXJ0QWRkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBZGRpbmcgPSB0cnVlO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuXG4gICAgdGhpcy5lZGl0aW5nVmlldy5yZXNldCgpO1xuICAgIHdoaWxlICh0aGlzLmNvbmRpdGlvbnMubGVuZ3RoKSB0aGlzLmNvbmRpdGlvbnMucmVtb3ZlQXQoMCk7XG4gICAgd2hpbGUgKHRoaXMuY29sdW1ucy5sZW5ndGgpIHRoaXMuY29sdW1ucy5yZW1vdmVBdCgwKTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucGF0Y2hWYWx1ZSh7XG4gICAgICBvcmRlcjogdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2VcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRmlsdGVyKCk7XG4gICAgdGhpcy5hZGRDb2x1bW4oKTtcblxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBTYXZlcyB0aGUgY3VycmVudGx5IGVkaXRlZCBvciBhZGRlZCBsaXN0IHZpZXdcbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nVmlldy52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5lZGl0aW5nVmlldy52YWx1ZTtcbiAgICAgIGNvbnN0IGxpc3RWaWV3OiBMaXN0VmlldyA9IHtcbiAgICAgICAgZmlsdGVyTmFtZTogZm9ybVZhbHVlLmZpbHRlck5hbWUsXG4gICAgICAgIG9yZGVyOiBmb3JtVmFsdWUub3JkZXIsXG4gICAgICAgIGlzRGVmYXVsdDogZm9ybVZhbHVlLmlzRGVmYXVsdCxcbiAgICAgICAgY29uZGl0aW9uczogZm9ybVZhbHVlLmNvbmRpdGlvbnMsXG4gICAgICAgIGNvbHVtbnM6IGZvcm1WYWx1ZS5jb2x1bW5zXG4gICAgICB9O1xuXG4gICAgICAvLyBpZiAobGlzdFZpZXcuaXNEZWZhdWx0KSB7XG4gICAgICAvLyAgIHRoaXMubGlzdFZpZXdzLmZvckVhY2godmlldyA9PiB7XG4gICAgICAvLyAgICAgaWYgKHZpZXcuaWQgIT09IGxpc3RWaWV3LmlkKSB2aWV3LmlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgLy8gICB9KTtcbiAgICAgIC8vIH1cblxuICAgICAgLy8gY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMubGlzdFZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IGxpc3RWaWV3LmlkKTtcbiAgICAgIC8vIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgIC8vICAgdGhpcy5saXN0Vmlld3NbZXhpc3RpbmdJbmRleF0gPSB7IC4uLmxpc3RWaWV3IH07XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgLy8gICB0aGlzLmxpc3RWaWV3cy5wdXNoKGxpc3RWaWV3KTtcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5saXN0Vmlld3Muc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBsaXN0Vmlldy5maWx0ZXJOYW1lO1xuICAgICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6J3NhdmUnLCBcImRhdGFcIjogbGlzdFZpZXd9KTtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFNob3dzIGFjdGlvbiBidXR0b25zIGZvciBhIGxpc3QgdmlldyBvbiBob3ZlclxuICBzaG93QWN0aW9ucyh2aWV3OiBMaXN0Vmlldyk6IHZvaWQge1xuICAgIHZpZXcuc2hvd0FjdGlvbnMgPSB0cnVlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IEhpZGVzIGFjdGlvbiBidXR0b25zIGZvciBhbGwgbGlzdCB2aWV3c1xuICBoaWRlQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RWaWV3cy5mb3JFYWNoKHZpZXcgPT4gdmlldy5zaG93QWN0aW9ucyA9IGZhbHNlKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBjb25maXJtYXRpb24gbW9kYWwgdG8gZGVsZXRlIGEgbGlzdCB2aWV3XG4gIGNvbmZpcm1EZWxldGUodmlldzogTGlzdFZpZXcsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudmlld1RvRGVsZXRlID0gdmlldztcbiAgICB0aGlzLmlzRGVsZXRlTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgQ2xvc2VzIHRoZSBkZWxldGUgY29uZmlybWF0aW9uIG1vZGFsXG4gIGNsb3NlRGVsZXRlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0RlbGV0ZU1vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMudmlld1RvRGVsZXRlID0gbnVsbDtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBEZWxldGVzIHRoZSBzZWxlY3RlZCBsaXN0IHZpZXcgYWZ0ZXIgY29uZmlybWF0aW9uXG4gIGRlbGV0ZUNvbmZpcm1lZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3VG9EZWxldGUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0Vmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5maWx0ZXJOYW1lID09PSB0aGlzLnZpZXdUb0RlbGV0ZT8uZmlsdGVyTmFtZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAvLyB0aGlzLmxpc3RWaWV3cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZpZXcgPT09IHRoaXMudmlld1RvRGVsZXRlLmZpbHRlck5hbWUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwID8gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZSA6ICcnO1xuICAgICAgICAgIHRoaXMubGlzdFZpZXdFbWl0LmVtaXQoeydhY3Rpb24nOidzZWxlY3QnLCAnZGF0YSc6dGhpcy5zZWxlY3RlZFZpZXd9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzogJ2RlbGV0ZScsIFwiZGF0YVwiOiB0aGlzLnZpZXdUb0RlbGV0ZX0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jbG9zZURlbGV0ZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTM01BWTI1IFJldHVybnMgZmlsdGVyZWQgbGlzdCBvZiBjb2x1bW5zIGJhc2VkIG9uIGlucHV0IHNlYXJjaCB0ZXJtXG4gIGdldEZpbHRlcmVkQ29sdW1ucyh0ZXJtOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0ZXJtKSByZXR1cm4gdGhpcy5jb2x1bW5OYW1lcztcbiAgICB0ZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk5hbWVzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZXR1cm5zIGZpbHRlcmVkIGxpc3Qgb2Ygb3BlcmF0b3JzIGJhc2VkIG9uIGlucHV0IHNlYXJjaCB0ZXJtXG4gIGdldEZpbHRlcmVkT3BlcmF0b3JzKHRlcm06IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRlcm0pIHJldHVybiB0aGlzLmF2YWlsYWJsZU9wZXJhdG9ycztcbiAgICB0ZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZU9wZXJhdG9ycy5maWx0ZXIob3BlcmF0b3IgPT4gb3BlcmF0b3IudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEgc2VsZWN0ZWQgZmllbGQvY29sdW1uXG4gIGdldFBvc3NpYmxlVmFsdWVzKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVmFsdWVzTWFwW2ZpZWxkXSB8fCBbXTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBhIGRyb3Bkb3duIG9uIGZvY3VzIGZvciB0aGUgZ2l2ZW4gaW5wdXQgdHlwZSBhbmQgaW5kZXhcbiAgb25Gb2N1cyh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodHlwZSA9PT0gJ2ZpZWxkJykge1xuICAgICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29wZXJhdG9yJykge1xuICAgICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuW2luZGV4XSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWUnKSB7XG4gICAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW5baW5kZXhdID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2x1bW5OYW1lJykge1xuICAgICAgdGhpcy5pc0NvbHVtbk5hbWVEcm9wZG93bk9wZW5baW5kZXhdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgRGVsYXlzIGNsb3NpbmcgZHJvcGRvd24gdG8gYWxsb3cgc2VsZWN0aW9uIG9uIGJsdXJcbiAgb25CbHVyKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdmaWVsZCcpIHtcbiAgICAgICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29wZXJhdG9yJykge1xuICAgICAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sdW1uTmFtZScpIHtcbiAgICAgICAgdGhpcy5pc0NvbHVtbk5hbWVEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4vLyBTS1MzTUFZMjUgU2V0cyBzZWxlY3RlZCB2YWx1ZSBpbiB0aGUgZm9ybSBjb250cm9sIGFuZCBjbG9zZXMgdGhlIGRyb3Bkb3duXG4gIHNlbGVjdE9wdGlvbih0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZSA9PT0gJ2ZpZWxkJykge1xuICAgICAgdGhpcy5jb25kaXRpb25zLmF0KGluZGV4KS5nZXQoJ2ZpZWxkJyk/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3BlcmF0b3InKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMuYXQoaW5kZXgpLmdldCgnb3BlcmF0b3InKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgdGhpcy5jb25kaXRpb25zLmF0KGluZGV4KS5nZXQoJ3ZhbHVlJyk/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2x1bW5OYW1lJykge1xuICAgICAgdGhpcy5jb2x1bW5zLmF0KGluZGV4KS5nZXQoJ25hbWUnKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc0NvbHVtbk5hbWVEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTM01BWTI1IExpc3RlbnMgdG8gZG9jdW1lbnQgY2xpY2sgYW5kIGNsb3NlcyB0aGUgZHJvcGRvd24gaWYgY2xpY2tlZCBvdXRzaWRlXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmxpc3Qtdmlldy1maWx0ZXInKSkge1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJsaXN0LXZpZXctZmlsdGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWxhYmVsXCI+RGF0YSBSZWxhdGVkIHRvPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbHRlci1pY29uXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHJ4PVwiNVwiIGZpbGw9XCIjRjFGMUYxXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNTEyODggNC41SDEyLjE4NzlDMTIuNzQyOSA0LjUgMTMuMjAwNCA0Ljk1NzUgMTMuMjAwNCA1LjUxMjVWNi42MjI0OUMxMy4yMDA0IDcuMDI3NDkgMTIuOTQ1NCA3LjUzIDEyLjY5NzkgNy43ODVMMTAuNTIyOSA5LjcwNUMxMC4yMjI5IDkuOTYgMTAuMDIwNCAxMC40NjI1IDEwLjAyMDQgMTAuODY3NVYxMy4wNDI1QzEwLjAyMDQgMTMuMzQyNSA5LjgxNzkgMTMuNzQ3NSA5LjU2MjkgMTMuOTA1TDguODU3ODkgMTQuMzYyNUM4LjE5Nzg5IDE0Ljc2NzUgNy4yOTAzNyAxNC4zMSA3LjI5MDM3IDEzLjVWMTAuODIyNUM3LjI5MDM3IDEwLjQ3IDcuMDg3ODkgMTAuMDEyNSA2Ljg4NTM5IDkuNzU3NTFMNC45NjUzOSA3LjczMjVDNC43MTAzOSA3LjQ3NzUgNC41MDc5IDcuMDI3NDkgNC41MDc5IDYuNzE5OTlWNS41NTc1QzQuNTAwNCA0Ljk1NzUgNC45NTc4OCA0LjUgNS41MTI4OCA0LjVaXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1taXRlcmxpbWl0PVwiMTBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC41IDExLjk5OTlWMTQuMjQ5OUM0LjUgMTcuOTk5OSA2IDE5LjQ5OTkgOS43NSAxOS40OTk5SDE0LjI1QzE4IDE5LjQ5OTkgMTkuNSAxNy45OTk5IDE5LjUgMTQuMjQ5OVY5Ljc0OTk0QzE5LjUgNy40MDk5NCAxOC45MTUgNS45Mzk5MyAxNy41NTc1IDUuMTc0OTNDMTcuMTc1IDQuOTU3NDMgMTYuNDEgNC43OTI0MyAxNS43MTI1IDQuNjc5OTNcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjc1IDEyLjc1SDE2LjVcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjI1IDE1Ljc1SDE2LjVcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFZpZXcgfHwgJ1NlbGVjdCBhIHZpZXcnIH19XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGV2cm9uLWljb25cIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5Ljk5OTkgMjUuNjY2N0MyMy42ODE4IDI1LjY2NjcgMjYuNjY2NiAyMi42ODE5IDI2LjY2NjYgMTlDMjYuNjY2NiAxNS4zMTgxIDIzLjY4MTggMTIuMzMzNCAxOS45OTk5IDEyLjMzMzRDMTYuMzE4IDEyLjMzMzQgMTMuMzMzMyAxNS4zMTgxIDEzLjMzMzMgMTlDMTMuMzMzMyAyMi42ODE5IDE2LjMxOCAyNS42NjY3IDE5Ljk5OTkgMjUuNjY2N1pcIiBmaWxsPVwiIzI5MkQzMlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjQ2NyAxOC4xNkwyMC4wMDAxIDIwLjUwNjdMMjIuMzUzNCAxOC4xNlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gU0tTM01BWTI1IGxpc3QgdmlldyBEcm9wIGRvd24tLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCIgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdmlldyBvZiBsaXN0Vmlld3NcIiBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRWaWV3ID09PSB2aWV3LmZpbHRlck5hbWVcIiAobW91c2VlbnRlcik9XCJzaG93QWN0aW9ucyh2aWV3KVwiIChtb3VzZWxlYXZlKT1cImhpZGVBY3Rpb25zKClcIiAoY2xpY2spPVwic2VsZWN0TGlzdFZpZXcodmlldylcIiBjbGFzcz1cImxpc3Qtdmlldy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlldy1uYW1lXCI+e3sgdmlldy5maWx0ZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwidmlldy5zaG93QWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEVkaXQodmlldywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuMzI5MjMgMy45ODcyNkwxMi4wMTI2IDYuNjcwNTlNOS4zMjkyMyAzLjk4NzI2TDIuNTAwMDggMTAuODE2NFYxMy40OTk3SDUuMTgzNDJMMTIuMDEyNiA2LjY3MDU5TTkuMzI5MjMgMy45ODcyNkwxMi4wMTI2IDEuMzAzOTJMMTQuNjk1OSAzLjk4NzI2TDEyLjAxMjYgNi42NzA1OVwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1pY29uXCIgKGNsaWNrKT1cImNvbmZpcm1EZWxldGUodmlldywgJGV2ZW50KVwiICpuZ0lmPVwibGlzdFZpZXdzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAzLjk4NzI2QzExLjc4IDMuNzY3MjYgOS41NDY2NyAzLjY1MzkzIDcuMzIgMy42NTM5M0M2IDMuNjUzOTMgNC42OCAzLjcyMDYgMy4zNiAzLjg1MzkzTDIgMy45ODcyNlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNTY2NyA2LjA5Mzc1TDEyLjEzMzQgMTIuODA3MUMxMi4wNiAxMy44NTM3IDEyIDE0LjY2NzEgMTAuMTQgMTQuNjY3MUg1Ljg2MDAyQzQuMDAwMDIgMTQuNjY3MSAzLjk0MDAyIDEzLjg1MzcgMy44NjY2OCAxMi44MDcxTDMuNDMzMzUgNi4wOTM3NVwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuODg2NDcgMTEuMDAwNEg5LjEwNjQ3XCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXJcIiAoY2xpY2spPVwic3RhcnRBZGQoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAzLjMzMzI1VjEyLjY2NjZcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy4zMzMwMSA4SDEyLjY2NjNcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+TmV3IExpc3QgVmlldzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICAgPCEtLSBTS1MzTUFZMjUgQWRkIE5ldyBMaXN0IFZpZXctLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cIm1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8aDI+e3sgaXNBZGRpbmcgPyAnQWRkIE5ldyBMaXN0IFZpZXcnIDogJ0VkaXQgTGlzdCBWaWV3JyB9fTwvaDI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVkaXRpbmdWaWV3XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TmFtZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpbHRlck5hbWVcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGxpc3QgdmlldyBuYW1lXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGluZ1ZpZXcuZ2V0KCdmaWx0ZXJOYW1lJyk/LmludmFsaWQgJiYgKGVkaXRpbmdWaWV3LmdldCgnZmlsdGVyTmFtZScpPy5kaXJ0eSB8fCBlZGl0aW5nVmlldy5nZXQoJ2ZpbHRlck5hbWUnKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk9yZGVyOjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cIm9yZGVyXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBkaXNwbGF5IG9yZGVyXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGluZ1ZpZXcuZ2V0KCdvcmRlcicpPy5pbnZhbGlkICYmIChlZGl0aW5nVmlldy5nZXQoJ29yZGVyJyk/LmRpcnR5IHx8IGVkaXRpbmdWaWV3LmdldCgnb3JkZXInKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIG51bWJlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5EZWZhdWx0IFZpZXc6PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtd3JhcHBlciBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0RlZmF1bHRcIiBpZD1cImlzRGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc0RlZmF1bHRcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz5GaWx0ZXJzPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWN0aW9uLWRlc2NyaXB0aW9uXCI+RGVmaW5lIGNvbmRpdGlvbnMgZm9yIGZpbHRlcmVkIGxpc3Qgdmlldzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJjb25kaXRpb25zXCIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1jZWxsXCI+Q29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0b3ItY2VsbFwiPk9wZXJhdG9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtY2VsbFwiPlZhbHVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWNlbGxcIj5BY3Rpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZGl0aW9ucy5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjbGFzcz1cImZpbHRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJmaWVsZFwiIChmb2N1cyk9XCJvbkZvY3VzKCdmaWVsZCcsIGkpXCIgKGJsdXIpPVwib25CbHVyKCdmaWVsZCcsIGkpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBvciBzZWxlY3QgY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgKm5nSWY9XCJpc0NvbHVtbkRyb3Bkb3duT3BlbltpXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZ2V0RmlsdGVyZWRDb2x1bW5zKGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCdmaWVsZCcpLnZhbHVlKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZWxlY3RPcHRpb24oJ2ZpZWxkJywgaSwgZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLmdldCgnZmllbGQnKT8uaW52YWxpZCAmJiAoZmlsdGVyLmdldCgnZmllbGQnKT8uZGlydHkgfHwgZmlsdGVyLmdldCgnZmllbGQnKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvci1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCIgKGZvY3VzKT1cIm9uRm9jdXMoJ29wZXJhdG9yJywgaSlcIiAoYmx1cik9XCJvbkJsdXIoJ29wZXJhdG9yJywgaSlcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG9yIHNlbGVjdCBvcGVyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiICpuZ0lmPVwiaXNPcGVyYXRvckRyb3Bkb3duT3BlbltpXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3BlcmF0b3Igb2YgZ2V0RmlsdGVyZWRPcGVyYXRvcnMoY29uZGl0aW9ucy5hdChpKS5nZXQoJ29wZXJhdG9yJykudmFsdWUpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbignb3BlcmF0b3InLCBpLCBvcGVyYXRvcilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcGVyYXRvciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy5pbnZhbGlkICYmIChmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy5kaXJ0eSB8fCBmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIChmb2N1cyk9XCJvbkZvY3VzKCd2YWx1ZScsIGkpXCIgKGJsdXIpPVwib25CbHVyKCd2YWx1ZScsIGkpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBvciBzZWxlY3QgdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzVmFsdWVEcm9wZG93bk9wZW5baV0gJiYgZ2V0UG9zc2libGVWYWx1ZXMoY29uZGl0aW9ucy5hdChpKS5nZXQoJ2ZpZWxkJykudmFsdWUpLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbCBvZiBnZXRQb3NzaWJsZVZhbHVlcyhjb25kaXRpb25zLmF0KGkpLmdldCgnZmllbGQnKS52YWx1ZSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCd2YWx1ZScsIGksIHZhbClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLmdldCgndmFsdWUnKT8uaW52YWxpZCAmJiAoZmlsdGVyLmdldCgndmFsdWUnKT8uZGlydHkgfHwgZmlsdGVyLmdldCgndmFsdWUnKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpY29uLWNvbnRhaW5lclwiIG1hdFRvb2x0aXA9XCJSZW1vdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1pY29uXCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAzLjk4NzI2QzExLjc4IDMuNzY3MjYgOS41NDY2NyAzLjY1MzkzIDcuMzIgMy42NTM5M0M2IDMuNjUzOTMgNC42OCAzLjcyMDYgMy4zNiAzLjg1MzkzTDIgMy45ODcyNlwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS42NjY1IDMuMzEzNjJMNS44MTMxNyAyLjQ0MDI4QzUuOTE5ODQgMS44MDY5NSA1Ljk5OTg0IDEuMzMzNjIgNy4xMjY1IDEuMzMzNjJIOC44NzMxN0M5Ljk5OTg0IDEuMzMzNjIgMTAuMDg2NSAxLjgzMzYyIDEwLjE4NjUgMi40NDY5NUwxMC4zMzMyIDMuMzEzNjJcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjU2NjcgNi4wOTM3NUwxMi4xMzM0IDEyLjgwNzFDMTIuMDYgMTMuODUzNyAxMiAxNC42NjcxIDEwLjE0IDE0LjY2NzFINS44NjAwMkM0LjAwMDAyIDE0LjY2NzEgMy45NDAwMiAxMy44NTM3IDMuODY2NjggMTIuODA3MUwzLjQzMzM1IDYuMDkzNzVcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuODg2NDcgMTEuMDAwNEg5LjEwNjQ3XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjMzMzUgOC4zMzMyNUg5LjY2NjgzXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWRkSWNvbkJvciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJBZGQgRmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMy4zMzMyNVYxMi42NjY2XCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuMzMzMDEgOEgxMi42NjYzXCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BZGQgRmlsdGVyPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+Q29sdW1uczwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbi1kZXNjcmlwdGlvblwiPkNvbmZpZ3VyZSBjb2x1bW5zIHRvIGRpc3BsYXkgaW4gdGhpcyB2aWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cImNvbHVtbnNcIiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1jZWxsXCI+Q29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5Tb3J0YWJsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2wtY2VsbFwiPkZpbHRlcmFibGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPkFjdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbHVtbnMuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgY2xhc3M9XCJjb2x1bW4tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiAoZm9jdXMpPVwib25Gb2N1cygnY29sdW1uTmFtZScsIGkpXCIgKGJsdXIpPVwib25CbHVyKCdjb2x1bW5OYW1lJywgaSlcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG9yIHNlbGVjdCBjb2x1bW4gbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiICpuZ0lmPVwiaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuW2ldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2xOYW1lIG9mIGRpc3BsYXllZENvbHVtbnNcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCdjb2x1bW5OYW1lJywgaSwgY29sTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2xOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpZWxkLmdldCgnbmFtZScpPy5pbnZhbGlkICYmIChmaWVsZC5nZXQoJ25hbWUnKT8uZGlydHkgfHwgZmllbGQuZ2V0KCduYW1lJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbiBuYW1lIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXIgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInc29ydGFibGUtJyArIGlcIiBmb3JtQ29udHJvbE5hbWU9XCJzb3J0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInc29ydGFibGUtJyArIGlcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXIgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInZmlsdGVyYWJsZS0nICsgaVwiIGZvcm1Db250cm9sTmFtZT1cImZpbHRlcmFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbHRlcmFibGUtJyArIGlcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWNvbi1jb250YWluZXJcIiBtYXRUb29sdGlwPVwiUmVtb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJyZW1vdmVDb2x1bW4oaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFkZEljb25Cb3IgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkQ29sdW1uKClcIiBtYXRUb29sdGlwPVwiQWRkIENvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDMuMzMzMjVWMTIuNjY2NlwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjMzMzAxIDhIMTIuNjY2M1wiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWRkIENvbHVtbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWVkaXRpbmdWaWV3LnZhbGlkXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU0tTM01BWTI1IERlbGV0ZSBMaXN0IFZpZXctLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNEZWxldGVNb2RhbE9wZW5cIiBjbGFzcz1cIm1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8aDI+RGVsZXRlIExpc3QgVmlldzwvaDI+XG4gICAgICAgICAgICA8cD5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFwie3sgdmlld1RvRGVsZXRlPy5maWx0ZXJOYW1lIH19XCI/PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZUNvbmZpcm1lZCgpXCI+RGVsZXRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGVsZXRlTW9kYWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9saXN0LXZpZXctZmlsdGVyL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC12aWV3LWZpbHRlci9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE4QmpILE1BQU0sT0FBTyx1QkFBdUI7SUF3QmQ7SUF2QlgsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0Isa0JBQWtCLEdBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMseURBQXlEO0lBRTFILFlBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWpELGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixZQUFZLEdBQW9C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QUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO3dHQXRVVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qiw4WUNoQ3BDLG1pb0JBOFBNLGs1TERsT00sWUFBWSwrUEFBRSxXQUFXLDJzQ0FBRSxtQkFBbUI7OzRGQUk3Qyx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUM7Z0ZBS2hELFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQXlUUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbnRlcmZhY2UgTGlzdFZpZXcge1xuICBmaWx0ZXJOYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGlzRGVmYXVsdDogYm9vbGVhbjtcbiAgY29uZGl0aW9uczogTGlzdFZpZXdGaWx0ZXJbXTtcbiAgY29sdW1uczogTGlzdFZpZXdDb2x1bW5bXTtcbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgTGlzdFZpZXdGaWx0ZXIge1xuICBmaWVsZDogc3RyaW5nO1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTGlzdFZpZXdDb2x1bW4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvcnRhYmxlOiBib29sZWFuO1xuICBmaWx0ZXJhYmxlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGlzdC12aWV3LWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxpc3RWaWV3czogTGlzdFZpZXdbXSA9IFtdO1xuICBASW5wdXQoKSB0YWJsZUZpbHRlckFycmF5OiBhbnkgPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRWaWV3OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogYW55ID0gW107XG4gIEBJbnB1dCgpIGF2YWlsYWJsZU9wZXJhdG9yczogc3RyaW5nW10gPSBbJz0nLCAnIT0nLCAnPicsICc8JywgJz49JywgJzw9J107IC8vICdjb250YWlucycsICdub3QgY29udGFpbnMnLCAnc3RhcnRzIHdpdGgnLCAnZW5kcyB3aXRoJ1xuXG4gIEBPdXRwdXQoKSBsaXN0Vmlld0VtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc01vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0RlbGV0ZU1vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0FkZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICB2aWV3VG9EZWxldGU6IExpc3RWaWV3IHwgbnVsbCA9IG51bGw7XG5cbiAgZWRpdGluZ1ZpZXc6IEZvcm1Hcm91cDtcblxuICBjb2x1bW5WYWx1ZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICBjb2x1bW5OYW1lczogc3RyaW5nW10gPSBbXTtcbiAgaXNDb2x1bW5Ecm9wZG93bk9wZW46IGJvb2xlYW5bXSA9IFtdO1xuICBpc09wZXJhdG9yRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcbiAgaXNWYWx1ZURyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG4gIGlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmVkaXRpbmdWaWV3ID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBmaWx0ZXJOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb3JkZXI6IFswLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGlzRGVmYXVsdDogW2ZhbHNlXSxcbiAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgY29sdW1uczogdGhpcy5mYi5hcnJheShbXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMubGlzdFZpZXdzWzBdLmZpbHRlck5hbWU7XG4gICAgfVxuXG5cbiAgICAvLyBTS1MzTUFZMjUgQ29tcHV0ZSBjb2x1bW5WYWx1ZXNNYXAgYW5kIGNvbHVtbk5hbWVzIGZyb20gdGFibGVGaWx0ZXJBcnJheVxuICAgIHRoaXMuY29sdW1uVmFsdWVzTWFwID0gQXJyYXkuaXNBcnJheSh0aGlzLnRhYmxlRmlsdGVyQXJyYXkpXG4gICAgPyB0aGlzLnRhYmxlRmlsdGVyQXJyYXkucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoY3VycilbMF07XG4gICAgICAgIGFjY1trZXldID0gY3VycltrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9KVxuICAgIDoge307ICBcbiAgICB0aGlzLmNvbHVtbk5hbWVzID0gT2JqZWN0LmtleXModGhpcy5jb2x1bW5WYWx1ZXNNYXApO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMubGlzdFZpZXdzWzBdLmZpbHRlck5hbWU7XG4gICAgfVxuXG4gICAgLy8gU0tTM01BWTI1IENvbXB1dGUgY29sdW1uVmFsdWVzTWFwIGFuZCBjb2x1bW5OYW1lcyBmcm9tIHRhYmxlRmlsdGVyQXJyYXlcbiAgICB0aGlzLmNvbHVtblZhbHVlc01hcCA9IEFycmF5LmlzQXJyYXkodGhpcy50YWJsZUZpbHRlckFycmF5KVxuICAgID8gdGhpcy50YWJsZUZpbHRlckFycmF5LnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGN1cnIpWzBdO1xuICAgICAgICBhY2Nba2V5XSA9IGN1cnJba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSlcbiAgICA6IHt9OyAgXG4gICAgdGhpcy5jb2x1bW5OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuY29sdW1uVmFsdWVzTWFwKTtcbiAgfVxuXG4gIGdldCBjb25kaXRpb25zKCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1ZpZXcuZ2V0KCdjb25kaXRpb25zJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFJldHVybnMgdGhlIEZvcm1BcnJheSBvZiBjb2x1bW5zIGZyb20gdGhlIGVkaXRpbmcgZm9ybVxuICBnZXQgY29sdW1ucygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdWaWV3LmdldCgnY29sdW1ucycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBBZGRzIGEgbmV3IGZpbHRlciBjb25kaXRpb24gdG8gdGhlIGZvcm1cbiAgYWRkRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZmllbGQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvcGVyYXRvcjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHZhbHVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSkpO1xuICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW4ucHVzaChmYWxzZSk7XG4gICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuLnB1c2goZmFsc2UpO1xuICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZW1vdmVzIGEgZmlsdGVyIGNvbmRpdGlvbiBieSBpbmRleFxuICByZW1vdmVGaWx0ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9ucy5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgYWRkQ29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHNvcnRhYmxlOiBbZmFsc2VdLFxuICAgICAgZmlsdGVyYWJsZTogW2ZhbHNlXVxuICAgIH0pKTtcbiAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7XCJhY3Rpb25cIjogJ2ZpbHRlckdldCd9KTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gIXRoaXMuaXNEcm9wZG93bk9wZW47XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgSGFuZGxlcyBzZWxlY3RpbmcgYSBsaXN0IHZpZXcgZnJvbSB0aGUgZHJvcGRvd25cbiAgc2VsZWN0TGlzdFZpZXcodmlldzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB2aWV3LmZpbHRlck5hbWU7XG4gICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6J3NlbGVjdCcsICdkYXRhJzp2aWV3fSk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IE9wZW5zIG1vZGFsIHRvIGVkaXQgYW4gZXhpc3RpbmcgbGlzdCB2aWV3XG4gIHN0YXJ0RWRpdCh2aWV3OiBMaXN0VmlldywgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmlzQWRkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG5cbiAgICB0aGlzLmVkaXRpbmdWaWV3LnJlc2V0KCk7XG4gICAgd2hpbGUgKHRoaXMuY29uZGl0aW9ucy5sZW5ndGgpIHRoaXMuY29uZGl0aW9ucy5yZW1vdmVBdCgwKTtcbiAgICB3aGlsZSAodGhpcy5jb2x1bW5zLmxlbmd0aCkgdGhpcy5jb2x1bW5zLnJlbW92ZUF0KDApO1xuXG4gICAgdGhpcy5lZGl0aW5nVmlldy5wYXRjaFZhbHVlKHtcbiAgICAgIGZpbHRlck5hbWU6IHZpZXcuZmlsdGVyTmFtZSxcbiAgICAgIG9yZGVyOiB2aWV3Lm9yZGVyLFxuICAgICAgaXNEZWZhdWx0OiB2aWV3LmlzRGVmYXVsdFxuICAgIH0pO1xuXG4gICAgdmlldz8uY29uZGl0aW9ucz8uZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgdGhpcy5jb25kaXRpb25zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAgIGZpZWxkOiBbZmlsdGVyLmZpZWxkLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgb3BlcmF0b3I6IFtmaWx0ZXIub3BlcmF0b3IsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB2YWx1ZTogW2ZpbHRlci52YWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHZpZXc/LmNvbHVtbnM/LmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG5hbWU6IFtmaWVsZC5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgc29ydGFibGU6IFtmaWVsZC5zb3J0YWJsZV0sXG4gICAgICAgIGZpbHRlcmFibGU6IFtmaWVsZC5maWx0ZXJhYmxlXVxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHRoaXMuYWRkRmlsdGVyKCk7XG4gICAgaWYgKHRoaXMuY29sdW1ucy5sZW5ndGggPT09IDApIHRoaXMuYWRkQ29sdW1uKCk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgbW9kYWwgdG8gY3JlYXRlIGEgbmV3IGxpc3Qgdmlld1xuICBzdGFydEFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWRkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucmVzZXQoKTtcbiAgICB3aGlsZSAodGhpcy5jb25kaXRpb25zLmxlbmd0aCkgdGhpcy5jb25kaXRpb25zLnJlbW92ZUF0KDApO1xuICAgIHdoaWxlICh0aGlzLmNvbHVtbnMubGVuZ3RoKSB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoMCk7XG5cbiAgICB0aGlzLmVkaXRpbmdWaWV3LnBhdGNoVmFsdWUoe1xuICAgICAgb3JkZXI6IHRoaXMubGlzdFZpZXdzPy5sZW5ndGgsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEZpbHRlcigpO1xuICAgIHRoaXMuYWRkQ29sdW1uKCk7XG5cbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgU2F2ZXMgdGhlIGN1cnJlbnRseSBlZGl0ZWQgb3IgYWRkZWQgbGlzdCB2aWV3XG4gIHNhdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGluZ1ZpZXcudmFsaWQpIHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZWRpdGluZ1ZpZXcudmFsdWU7XG4gICAgICBjb25zdCBsaXN0VmlldzogTGlzdFZpZXcgPSB7XG4gICAgICAgIGZpbHRlck5hbWU6IGZvcm1WYWx1ZS5maWx0ZXJOYW1lLFxuICAgICAgICBvcmRlcjogZm9ybVZhbHVlLm9yZGVyLFxuICAgICAgICBpc0RlZmF1bHQ6IGZvcm1WYWx1ZS5pc0RlZmF1bHQsXG4gICAgICAgIGNvbmRpdGlvbnM6IGZvcm1WYWx1ZS5jb25kaXRpb25zLFxuICAgICAgICBjb2x1bW5zOiBmb3JtVmFsdWUuY29sdW1uc1xuICAgICAgfTtcblxuICAgICAgLy8gaWYgKGxpc3RWaWV3LmlzRGVmYXVsdCkge1xuICAgICAgLy8gICB0aGlzLmxpc3RWaWV3cy5mb3JFYWNoKHZpZXcgPT4ge1xuICAgICAgLy8gICAgIGlmICh2aWV3LmlkICE9PSBsaXN0Vmlldy5pZCkgdmlldy5pc0RlZmF1bHQgPSBmYWxzZTtcbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyB9XG5cbiAgICAgIC8vIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmxpc3RWaWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBsaXN0Vmlldy5pZCk7XG4gICAgICAvLyBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAvLyAgIHRoaXMubGlzdFZpZXdzW2V4aXN0aW5nSW5kZXhdID0geyAuLi5saXN0VmlldyB9O1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgdGhpcy5saXN0Vmlld3MucHVzaChsaXN0Vmlldyk7XG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMubGlzdFZpZXdzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gbGlzdFZpZXcuZmlsdGVyTmFtZTtcbiAgICAgIHRoaXMubGlzdFZpZXdFbWl0LmVtaXQoeydhY3Rpb24nOidzYXZlJywgXCJkYXRhXCI6IGxpc3RWaWV3fSk7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBTaG93cyBhY3Rpb24gYnV0dG9ucyBmb3IgYSBsaXN0IHZpZXcgb24gaG92ZXJcbiAgc2hvd0FjdGlvbnModmlldzogTGlzdFZpZXcpOiB2b2lkIHtcbiAgICB2aWV3LnNob3dBY3Rpb25zID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBIaWRlcyBhY3Rpb24gYnV0dG9ucyBmb3IgYWxsIGxpc3Qgdmlld3NcbiAgaGlkZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Vmlld3MuZm9yRWFjaCh2aWV3ID0+IHZpZXcuc2hvd0FjdGlvbnMgPSBmYWxzZSk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgY29uZmlybWF0aW9uIG1vZGFsIHRvIGRlbGV0ZSBhIGxpc3Qgdmlld1xuICBjb25maXJtRGVsZXRlKHZpZXc6IExpc3RWaWV3LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnZpZXdUb0RlbGV0ZSA9IHZpZXc7XG4gICAgdGhpcy5pc0RlbGV0ZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IENsb3NlcyB0aGUgZGVsZXRlIGNvbmZpcm1hdGlvbiBtb2RhbFxuICBjbG9zZURlbGV0ZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZWxldGVNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdUb0RlbGV0ZSA9IG51bGw7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgRGVsZXRlcyB0aGUgc2VsZWN0ZWQgbGlzdCB2aWV3IGFmdGVyIGNvbmZpcm1hdGlvblxuICBkZWxldGVDb25maXJtZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlld1RvRGVsZXRlKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubGlzdFZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuZmlsdGVyTmFtZSA9PT0gdGhpcy52aWV3VG9EZWxldGU/LmZpbHRlck5hbWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgLy8gdGhpcy5saXN0Vmlld3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWaWV3ID09PSB0aGlzLnZpZXdUb0RlbGV0ZS5maWx0ZXJOYW1lKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmxpc3RWaWV3cz8ubGVuZ3RoID4gMCA/IHRoaXMubGlzdFZpZXdzWzBdLmZpbHRlck5hbWUgOiAnJztcbiAgICAgICAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzonc2VsZWN0JywgJ2RhdGEnOnRoaXMuc2VsZWN0ZWRWaWV3fSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6ICdkZWxldGUnLCBcImRhdGFcIjogdGhpcy52aWV3VG9EZWxldGV9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xvc2VEZWxldGVNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZXR1cm5zIGZpbHRlcmVkIGxpc3Qgb2YgY29sdW1ucyBiYXNlZCBvbiBpbnB1dCBzZWFyY2ggdGVybVxuICBnZXRGaWx0ZXJlZENvbHVtbnModGVybTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmICghdGVybSkgcmV0dXJuIHRoaXMuY29sdW1uTmFtZXM7XG4gICAgdGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5OYW1lcy5maWx0ZXIoZmllbGQgPT4gZmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyBmaWx0ZXJlZCBsaXN0IG9mIG9wZXJhdG9ycyBiYXNlZCBvbiBpbnB1dCBzZWFyY2ggdGVybVxuICBnZXRGaWx0ZXJlZE9wZXJhdG9ycyh0ZXJtOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0ZXJtKSByZXR1cm4gdGhpcy5hdmFpbGFibGVPcGVyYXRvcnM7XG4gICAgdGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVPcGVyYXRvcnMuZmlsdGVyKG9wZXJhdG9yID0+IG9wZXJhdG9yLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFJldHVybnMgcG9zc2libGUgdmFsdWVzIGZvciBhIHNlbGVjdGVkIGZpZWxkL2NvbHVtblxuICBnZXRQb3NzaWJsZVZhbHVlcyhmaWVsZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblZhbHVlc01hcFtmaWVsZF0gfHwgW107XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgYSBkcm9wZG93biBvbiBmb2N1cyBmb3IgdGhlIGdpdmVuIGlucHV0IHR5cGUgYW5kIGluZGV4XG4gIG9uRm9jdXModHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdmaWVsZCcpIHtcbiAgICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW5baW5kZXhdID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGVyYXRvcicpIHtcbiAgICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuW2luZGV4XSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sdW1uTmFtZScpIHtcbiAgICAgIHRoaXMuaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuW2luZGV4XSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTM01BWTI1IERlbGF5cyBjbG9zaW5nIGRyb3Bkb3duIHRvIGFsbG93IHNlbGVjdGlvbiBvbiBibHVyXG4gIG9uQmx1cih0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnZmllbGQnKSB7XG4gICAgICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGVyYXRvcicpIHtcbiAgICAgICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWUnKSB7XG4gICAgICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHVtbk5hbWUnKSB7XG4gICAgICAgIHRoaXMuaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuLy8gU0tTM01BWTI1IFNldHMgc2VsZWN0ZWQgdmFsdWUgaW4gdGhlIGZvcm0gY29udHJvbCBhbmQgY2xvc2VzIHRoZSBkcm9wZG93blxuICBzZWxlY3RPcHRpb24odHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdmaWVsZCcpIHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucy5hdChpbmRleCkuZ2V0KCdmaWVsZCcpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29wZXJhdG9yJykge1xuICAgICAgdGhpcy5jb25kaXRpb25zLmF0KGluZGV4KS5nZXQoJ29wZXJhdG9yJyk/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZScpIHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucy5hdChpbmRleCkuZ2V0KCd2YWx1ZScpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sdW1uTmFtZScpIHtcbiAgICAgIHRoaXMuY29sdW1ucy5hdChpbmRleCkuZ2V0KCduYW1lJyk/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBMaXN0ZW5zIHRvIGRvY3VtZW50IGNsaWNrIGFuZCBjbG9zZXMgdGhlIGRyb3Bkb3duIGlmIGNsaWNrZWQgb3V0c2lkZVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5saXN0LXZpZXctZmlsdGVyJykpIHtcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWZpbHRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1sYWJlbFwiPkRhdGEgUmVsYXRlZCB0bzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWx0ZXItaWNvblwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiByeD1cIjVcIiBmaWxsPVwiI0YxRjFGMVwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjUxMjg4IDQuNUgxMi4xODc5QzEyLjc0MjkgNC41IDEzLjIwMDQgNC45NTc1IDEzLjIwMDQgNS41MTI1VjYuNjIyNDlDMTMuMjAwNCA3LjAyNzQ5IDEyLjk0NTQgNy41MyAxMi42OTc5IDcuNzg1TDEwLjUyMjkgOS43MDVDMTAuMjIyOSA5Ljk2IDEwLjAyMDQgMTAuNDYyNSAxMC4wMjA0IDEwLjg2NzVWMTMuMDQyNUMxMC4wMjA0IDEzLjM0MjUgOS44MTc5IDEzLjc0NzUgOS41NjI5IDEzLjkwNUw4Ljg1Nzg5IDE0LjM2MjVDOC4xOTc4OSAxNC43Njc1IDcuMjkwMzcgMTQuMzEgNy4yOTAzNyAxMy41VjEwLjgyMjVDNy4yOTAzNyAxMC40NyA3LjA4Nzg5IDEwLjAxMjUgNi44ODUzOSA5Ljc1NzUxTDQuOTY1MzkgNy43MzI1QzQuNzEwMzkgNy40Nzc1IDQuNTA3OSA3LjAyNzQ5IDQuNTA3OSA2LjcxOTk5VjUuNTU3NUM0LjUwMDQgNC45NTc1IDQuOTU3ODggNC41IDUuNTEyODggNC41WlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNSAxMS45OTk5VjE0LjI0OTlDNC41IDE3Ljk5OTkgNiAxOS40OTk5IDkuNzUgMTkuNDk5OUgxNC4yNUMxOCAxOS40OTk5IDE5LjUgMTcuOTk5OSAxOS41IDE0LjI0OTlWOS43NDk5NEMxOS41IDcuNDA5OTQgMTguOTE1IDUuOTM5OTMgMTcuNTU3NSA1LjE3NDkzQzE3LjE3NSA0Ljk1NzQzIDE2LjQxIDQuNzkyNDMgMTUuNzEyNSA0LjY3OTkzXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi43NSAxMi43NUgxNi41XCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS4yNSAxNS43NUgxNi41XCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtb3B0aW9uXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRWaWV3IHx8ICdTZWxlY3QgYSB2aWV3JyB9fVxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hldnJvbi1pY29uXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOS45OTk5IDI1LjY2NjdDMjMuNjgxOCAyNS42NjY3IDI2LjY2NjYgMjIuNjgxOSAyNi42NjY2IDE5QzI2LjY2NjYgMTUuMzE4MSAyMy42ODE4IDEyLjMzMzQgMTkuOTk5OSAxMi4zMzM0QzE2LjMxOCAxMi4zMzM0IDEzLjMzMzMgMTUuMzE4MSAxMy4zMzMzIDE5QzEzLjMzMzMgMjIuNjgxOSAxNi4zMTggMjUuNjY2NyAxOS45OTk5IDI1LjY2NjdaXCIgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjY0NjcgMTguMTZMMjAuMDAwMSAyMC41MDY3TDIyLjM1MzQgMTguMTZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNLUzNNQVkyNSBsaXN0IHZpZXcgRHJvcCBkb3duLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0Ryb3Bkb3duT3BlblwiIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHZpZXcgb2YgbGlzdFZpZXdzXCIgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkVmlldyA9PT0gdmlldy5maWx0ZXJOYW1lXCIgKG1vdXNlZW50ZXIpPVwic2hvd0FjdGlvbnModmlldylcIiAobW91c2VsZWF2ZSk9XCJoaWRlQWN0aW9ucygpXCIgKGNsaWNrKT1cInNlbGVjdExpc3RWaWV3KHZpZXcpXCIgY2xhc3M9XCJsaXN0LXZpZXctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpZXctbmFtZVwiPnt7IHZpZXcuZmlsdGVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInZpZXcuc2hvd0FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRFZGl0KHZpZXcsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjMyOTIzIDMuOTg3MjZMMTIuMDEyNiA2LjY3MDU5TTkuMzI5MjMgMy45ODcyNkwyLjUwMDA4IDEwLjgxNjRWMTMuNDk5N0g1LjE4MzQyTDEyLjAxMjYgNi42NzA1OU05LjMyOTIzIDMuOTg3MjZMMTIuMDEyNiAxLjMwMzkyTDE0LjY5NTkgMy45ODcyNkwxMi4wMTI2IDYuNjcwNTlcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJjb25maXJtRGVsZXRlKHZpZXcsICRldmVudClcIiAqbmdJZj1cImxpc3RWaWV3cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2NjUgMy4zMTM2Mkw1LjgxMzE3IDIuNDQwMjhDNS45MTk4NCAxLjgwNjk1IDUuOTk5ODQgMS4zMzM2MiA3LjEyNjUgMS4zMzM2Mkg4Ljg3MzE3QzkuOTk5ODQgMS4zMzM2MiAxMC4wODY1IDEuODMzNjIgMTAuMTg2NSAyLjQ0Njk1TDEwLjMzMzIgMy4zMTM2MlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjU2NjcgNi4wOTM3NUwxMi4xMzM0IDEyLjgwNzFDMTIuMDYgMTMuODUzNyAxMiAxNC42NjcxIDEwLjE0IDE0LjY2NzFINS44NjAwMkM0LjAwMDAyIDE0LjY2NzEgMy45NDAwMiAxMy44NTM3IDMuODY2NjggMTIuODA3MUwzLjQzMzM1IDYuMDkzNzVcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMzMzNSA4LjMzMzI1SDkuNjY2ODNcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZmlsdGVyXCIgKGNsaWNrKT1cInN0YXJ0QWRkKClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMy4zMzMyNVYxMi42NjY2XCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuMzMzMDEgOEgxMi42NjYzXCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPk5ldyBMaXN0IFZpZXc8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgIDwhLS0gU0tTM01BWTI1IEFkZCBOZXcgTGlzdCBWaWV3LS0+XG4gICAgPGRpdiAqbmdJZj1cImlzTW9kYWxPcGVuXCIgY2xhc3M9XCJtb2RhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGgyPnt7IGlzQWRkaW5nID8gJ0FkZCBOZXcgTGlzdCBWaWV3JyA6ICdFZGl0IExpc3QgVmlldycgfX08L2gyPlxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJlZGl0aW5nVmlld1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk5hbWU6PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJmaWx0ZXJOYW1lXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBsaXN0IHZpZXcgbmFtZVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRpbmdWaWV3LmdldCgnZmlsdGVyTmFtZScpPy5pbnZhbGlkICYmIChlZGl0aW5nVmlldy5nZXQoJ2ZpbHRlck5hbWUnKT8uZGlydHkgfHwgZWRpdGluZ1ZpZXcuZ2V0KCdmaWx0ZXJOYW1lJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5PcmRlcjo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGlzcGxheSBvcmRlclwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRpbmdWaWV3LmdldCgnb3JkZXInKT8uaW52YWxpZCAmJiAoZWRpdGluZ1ZpZXcuZ2V0KCdvcmRlcicpPy5kaXJ0eSB8fCBlZGl0aW5nVmlldy5nZXQoJ29yZGVyJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYSBudW1iZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RGVmYXVsdCBWaWV3OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXIgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNEZWZhdWx0XCIgaWQ9XCJpc0RlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaXNEZWZhdWx0XCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+RmlsdGVyczwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbi1kZXNjcmlwdGlvblwiPkRlZmluZSBjb25kaXRpb25zIGZvciBmaWx0ZXJlZCBsaXN0IHZpZXc8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiY29uZGl0aW9uc1wiIGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2VsbFwiPkNvbHVtbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdG9yLWNlbGxcIj5PcGVyYXRvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNlbGxcIj5WYWx1ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+QWN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGNvbmRpdGlvbnMuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgY2xhc3M9XCJmaWx0ZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZmllbGRcIiAoZm9jdXMpPVwib25Gb2N1cygnZmllbGQnLCBpKVwiIChibHVyKT1cIm9uQmx1cignZmllbGQnLCBpKVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgb3Igc2VsZWN0IGNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiICpuZ0lmPVwiaXNDb2x1bW5Ecm9wZG93bk9wZW5baV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGdldEZpbHRlcmVkQ29sdW1ucyhjb25kaXRpb25zLmF0KGkpLmdldCgnZmllbGQnKS52YWx1ZSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCdmaWVsZCcsIGksIGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci5nZXQoJ2ZpZWxkJyk/LmludmFsaWQgJiYgKGZpbHRlci5nZXQoJ2ZpZWxkJyk/LmRpcnR5IHx8IGZpbHRlci5nZXQoJ2ZpZWxkJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbiBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0b3ItY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIChmb2N1cyk9XCJvbkZvY3VzKCdvcGVyYXRvcicsIGkpXCIgKGJsdXIpPVwib25CbHVyKCdvcGVyYXRvcicsIGkpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBvciBzZWxlY3Qgb3BlcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzT3BlcmF0b3JEcm9wZG93bk9wZW5baV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wZXJhdG9yIG9mIGdldEZpbHRlcmVkT3BlcmF0b3JzKGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCdvcGVyYXRvcicpLnZhbHVlKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZWxlY3RPcHRpb24oJ29wZXJhdG9yJywgaSwgb3BlcmF0b3IpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3BlcmF0b3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLmdldCgnb3BlcmF0b3InKT8uaW52YWxpZCAmJiAoZmlsdGVyLmdldCgnb3BlcmF0b3InKT8uZGlydHkgfHwgZmlsdGVyLmdldCgnb3BlcmF0b3InKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAoZm9jdXMpPVwib25Gb2N1cygndmFsdWUnLCBpKVwiIChibHVyKT1cIm9uQmx1cigndmFsdWUnLCBpKVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgb3Igc2VsZWN0IHZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgKm5nSWY9XCJpc1ZhbHVlRHJvcGRvd25PcGVuW2ldICYmIGdldFBvc3NpYmxlVmFsdWVzKGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCdmaWVsZCcpLnZhbHVlKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWwgb2YgZ2V0UG9zc2libGVWYWx1ZXMoY29uZGl0aW9ucy5hdChpKS5nZXQoJ2ZpZWxkJykudmFsdWUpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbigndmFsdWUnLCBpLCB2YWwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci5nZXQoJ3ZhbHVlJyk/LmludmFsaWQgJiYgKGZpbHRlci5nZXQoJ3ZhbHVlJyk/LmRpcnR5IHx8IGZpbHRlci5nZXQoJ3ZhbHVlJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWNvbi1jb250YWluZXJcIiBtYXRUb29sdGlwPVwiUmVtb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFkZEljb25Cb3IgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkRmlsdGVyKClcIiBtYXRUb29sdGlwPVwiQWRkIEZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDMuMzMzMjVWMTIuNjY2NlwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjMzMzAxIDhIMTIuNjY2M1wiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWRkIEZpbHRlcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPkNvbHVtbnM8L2gzPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY3Rpb24tZGVzY3JpcHRpb25cIj5Db25maWd1cmUgY29sdW1ucyB0byBkaXNwbGF5IGluIHRoaXMgdmlldzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJjb2x1bW5zXCIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY2VsbFwiPkNvbHVtbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9vbC1jZWxsXCI+U29ydGFibGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5GaWx0ZXJhYmxlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWNlbGxcIj5BY3Rpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjb2x1bW5zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiIGNsYXNzPVwiY29sdW1uLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgKGZvY3VzKT1cIm9uRm9jdXMoJ2NvbHVtbk5hbWUnLCBpKVwiIChibHVyKT1cIm9uQmx1cignY29sdW1uTmFtZScsIGkpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBvciBzZWxlY3QgY29sdW1uIG5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sTmFtZSBvZiBkaXNwbGF5ZWRDb2x1bW5zXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbignY29sdW1uTmFtZScsIGksIGNvbE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5nZXQoJ25hbWUnKT8uaW52YWxpZCAmJiAoZmllbGQuZ2V0KCduYW1lJyk/LmRpcnR5IHx8IGZpZWxkLmdldCgnbmFtZScpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9vbC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS13cmFwcGVyIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ3NvcnRhYmxlLScgKyBpXCIgZm9ybUNvbnRyb2xOYW1lPVwic29ydGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3NvcnRhYmxlLScgKyBpXCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9vbC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS13cmFwcGVyIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ2ZpbHRlcmFibGUtJyArIGlcIiBmb3JtQ29udHJvbE5hbWU9XCJmaWx0ZXJhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidmaWx0ZXJhYmxlLScgKyBpXCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGljb24tY29udGFpbmVyXCIgbWF0VG9vbHRpcD1cIlJlbW92ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwicmVtb3ZlQ29sdW1uKGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDMuOTg3MjZDMTEuNzggMy43NjcyNiA5LjU0NjY3IDMuNjUzOTMgNy4zMiAzLjY1MzkzQzYgMy42NTM5MyA0LjY4IDMuNzIwNiAzLjM2IDMuODUzOTNMMiAzLjk4NzI2XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2NjUgMy4zMTM2Mkw1LjgxMzE3IDIuNDQwMjhDNS45MTk4NCAxLjgwNjk1IDUuOTk5ODQgMS4zMzM2MiA3LjEyNjUgMS4zMzM2Mkg4Ljg3MzE3QzkuOTk5ODQgMS4zMzM2MiAxMC4wODY1IDEuODMzNjIgMTAuMTg2NSAyLjQ0Njk1TDEwLjMzMzIgMy4zMTM2MlwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNTY2NyA2LjA5Mzc1TDEyLjEzMzQgMTIuODA3MUMxMi4wNiAxMy44NTM3IDEyIDE0LjY2NzEgMTAuMTQgMTQuNjY3MUg1Ljg2MDAyQzQuMDAwMDIgMTQuNjY3MSAzLjk0MDAyIDEzLjg1MzcgMy44NjY2OCAxMi44MDcxTDMuNDMzMzUgNi4wOTM3NVwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi44ODY0NyAxMS4wMDA0SDkuMTA2NDdcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMzMzNSA4LjMzMzI1SDkuNjY2ODNcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhZGRJY29uQm9yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCIgbWF0VG9vbHRpcD1cIkFkZCBDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAzLjMzMzI1VjEyLjY2NjZcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy4zMzMwMSA4SDEyLjY2NjNcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFkZCBDb2x1bW48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFlZGl0aW5nVmlldy52YWxpZFwiPlNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFNLUzNNQVkyNSBEZWxldGUgTGlzdCBWaWV3LS0+XG4gICAgPGRpdiAqbmdJZj1cImlzRGVsZXRlTW9kYWxPcGVuXCIgY2xhc3M9XCJtb2RhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGgyPkRlbGV0ZSBMaXN0IFZpZXc8L2gyPlxuICAgICAgICAgICAgPHA+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBcInt7IHZpZXdUb0RlbGV0ZT8uZmlsdGVyTmFtZSB9fVwiPzwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVDb25maXJtZWQoKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZURlbGV0ZU1vZGFsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -27,6 +27,7 @@ export class SearchBoxComponent {
|
|
|
27
27
|
el;
|
|
28
28
|
serv = 'api';
|
|
29
29
|
tkn = '';
|
|
30
|
+
isLoading = false;
|
|
30
31
|
constructor(dataService, i18nService) {
|
|
31
32
|
this.dataService = dataService;
|
|
32
33
|
this.i18nService = i18nService;
|
|
@@ -88,7 +89,9 @@ export class SearchBoxComponent {
|
|
|
88
89
|
if (this.apiMeta) {
|
|
89
90
|
this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);
|
|
90
91
|
let apiObj = this.apiMeta;
|
|
92
|
+
this.isLoading = true;
|
|
91
93
|
this.dataService.apiResponse(apiObj.endpoint).subscribe((apiResponse) => {
|
|
94
|
+
this.isLoading = false;
|
|
92
95
|
let response;
|
|
93
96
|
if (apiObj.variable) {
|
|
94
97
|
response = this.dataService.getValue(apiResponse, apiObj.variable);
|
|
@@ -108,6 +111,11 @@ export class SearchBoxComponent {
|
|
|
108
111
|
}
|
|
109
112
|
this.noResult = results.length === 0;
|
|
110
113
|
this.finalResults = results;
|
|
114
|
+
}, (error) => {
|
|
115
|
+
console.error('API error:', error);
|
|
116
|
+
this.isLoading = false;
|
|
117
|
+
this.noResult = true;
|
|
118
|
+
this.finalResults = [];
|
|
111
119
|
});
|
|
112
120
|
}
|
|
113
121
|
};
|
|
@@ -187,11 +195,11 @@ export class SearchBoxComponent {
|
|
|
187
195
|
// Resets component state when the component is destroyed
|
|
188
196
|
ngOnDestroy() { this.resetComponentState(); }
|
|
189
197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, deps: [{ token: i1.DataService }, { token: i2.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--
|
|
198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- VD 12Jun24 - readonly change -->\n<div class=\"search-wrapper\">\n <input #auto name=\"name\" type=\"text\" class=\"searchInput she-line-input form-control searchbox-input\"\n [(ngModel)]=\"filterName\" [readOnly]=\"readOnly\" [placeholder]=\"placeHolderText\" (blur)=\"clearList()\"\n (focusin)=\"getSourceDataLocal($event)\" (input)=\"getSourceDataLocal($event)\" role=\"combobox\"\n attr.aria-autocomplete=\"list\" [attr.aria-expanded]=\"showSuggestion\" attr.aria-owns=\"selectList\"\n attr.aria-haspopup=\"listbox\" />\n <div class=\"icon-container\">\n <ng-container *ngIf=\"isLoading; else searchIcon\">\n <!-- Minimal Dotted Loader -->\n <div class=\"dotted-loader\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n </ng-container>\n <ng-template #searchIcon>\n <!-- Inline search icon SVG -->\n <svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L17 17\" stroke-linecap=\"round\" />\n </svg>\n </ng-template>\n </div>\n\n <div id=\"selectList\" class=\"suggestion-wrapper\" role=\"listbox\">\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\" class=\"suggestions-container\">\n <div *ngFor=\"let item of finalResults\" (click)=\"clickItem(item)\" class=\"suggestion-item\" role=\"option\">\n <div class=\"grid-x align-middle\">\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink thumbnail-wrapper\">\n <img [src]=\"item.thumbnail\" alt=\"Thumbnail\">\n </div>\n\n <div class=\"cell auto item-details\">\n <div *ngFor=\"let key of getKeys(getValues(item, SearchItem))\" class=\"item-value\">\n {{ getValues(item, SearchItem)[key] }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".search-wrapper{position:relative}.search-wrapper input{padding-right:40px}.search-wrapper .icon-container{position:absolute;top:50%;right:8px;transform:translateY(-50%);pointer-events:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.searchbox-input{margin:0!important;padding-right:30px}.suggestion-wrapper{position:absolute;background:#fff;z-index:2}.suggestions-container{max-height:20vh;border:1px solid #d2d4d6;overflow:auto;min-width:100px}.suggestion-item{cursor:pointer}.thumbnail-wrapper{width:60px;margin-right:1.6rem}.thumbnail-wrapper img{width:60px}.item-details{text-align:left;padding:5px 8px 0;display:flex;gap:5px}.item-value{display:flex}.dotted-loader{position:relative;width:10px;height:10px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
191
199
|
}
|
|
192
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, decorators: [{
|
|
193
201
|
type: Component,
|
|
194
|
-
args: [{ selector: 'lib-search-box', template: "<!--
|
|
202
|
+
args: [{ selector: 'lib-search-box', template: "<!-- VD 12Jun24 - readonly change -->\n<div class=\"search-wrapper\">\n <input #auto name=\"name\" type=\"text\" class=\"searchInput she-line-input form-control searchbox-input\"\n [(ngModel)]=\"filterName\" [readOnly]=\"readOnly\" [placeholder]=\"placeHolderText\" (blur)=\"clearList()\"\n (focusin)=\"getSourceDataLocal($event)\" (input)=\"getSourceDataLocal($event)\" role=\"combobox\"\n attr.aria-autocomplete=\"list\" [attr.aria-expanded]=\"showSuggestion\" attr.aria-owns=\"selectList\"\n attr.aria-haspopup=\"listbox\" />\n <div class=\"icon-container\">\n <ng-container *ngIf=\"isLoading; else searchIcon\">\n <!-- Minimal Dotted Loader -->\n <div class=\"dotted-loader\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n </ng-container>\n <ng-template #searchIcon>\n <!-- Inline search icon SVG -->\n <svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L17 17\" stroke-linecap=\"round\" />\n </svg>\n </ng-template>\n </div>\n\n <div id=\"selectList\" class=\"suggestion-wrapper\" role=\"listbox\">\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\" class=\"suggestions-container\">\n <div *ngFor=\"let item of finalResults\" (click)=\"clickItem(item)\" class=\"suggestion-item\" role=\"option\">\n <div class=\"grid-x align-middle\">\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink thumbnail-wrapper\">\n <img [src]=\"item.thumbnail\" alt=\"Thumbnail\">\n </div>\n\n <div class=\"cell auto item-details\">\n <div *ngFor=\"let key of getKeys(getValues(item, SearchItem))\" class=\"item-value\">\n {{ getValues(item, SearchItem)[key] }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".search-wrapper{position:relative}.search-wrapper input{padding-right:40px}.search-wrapper .icon-container{position:absolute;top:50%;right:8px;transform:translateY(-50%);pointer-events:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.searchbox-input{margin:0!important;padding-right:30px}.suggestion-wrapper{position:absolute;background:#fff;z-index:2}.suggestions-container{max-height:20vh;border:1px solid #d2d4d6;overflow:auto;min-width:100px}.suggestion-item{cursor:pointer}.thumbnail-wrapper{width:60px;margin-right:1.6rem}.thumbnail-wrapper img{width:60px}.item-details{text-align:left;padding:5px 8px 0;display:flex;gap:5px}.item-value{display:flex}.dotted-loader{position:relative;width:10px;height:10px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}\n"] }]
|
|
195
203
|
}], ctorParameters: () => [{ type: i1.DataService }, { type: i2.I18nService }], propDecorators: { placeHolderText: [{
|
|
196
204
|
type: Input
|
|
197
205
|
}], auto: [{
|
|
@@ -210,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
210
218
|
}], filterName: [{
|
|
211
219
|
type: Input
|
|
212
220
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBUzFELE1BQU0sT0FBTyxrQkFBa0I7SUF1QlI7SUFBaUM7SUF0QjdDLGVBQWUsQ0FBUztJQUNkLElBQUksQ0FBQztJQUVmLFFBQVEsQ0FBQztJQUNULE9BQU8sQ0FBUztJQUNoQixFQUFFLENBQVM7SUFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsK0JBQStCO0lBQ2hELGlCQUFpQixHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUM1RixNQUFNLENBQUs7SUFDWCxVQUFVLENBQU07SUFFUixVQUFVLENBQVMsQ0FBQyx5Q0FBeUM7SUFDL0QsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLEVBQUUsQ0FBYztJQUNoQixJQUFJLEdBQVcsS0FBSyxDQUFDO0lBQ3JCLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFFekIsWUFBcUIsV0FBd0IsRUFBUyxXQUF3QjtR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QUFHLEtBQUssQ0FBQztZQUN4QixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0QsQ0FBQztJQUNELGNBQWM7SUFDZCx5REFBeUQ7SUFDekQsV0FBVyxLQUFXLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUUsQ0FBQzt3R0F2THpDLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtYQ3JCL0IsMnRGQTBEQTs7NEZEckNhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MEdBS2pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ2EsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUVSLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFJRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuLy8gVkQgMjNKQU4yNCByZW1vdmVkIGh0dHBDbGllbnQgaW1wb3J0IHVzZWQgc2VydmljZSBmaWxlIGZvciBjYWxsb3V0XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YVwiO1xuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9jaGFuZ2VXcmFwcGVyXCI7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2kxOG4uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2VhcmNoLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWJveC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGxhY2VIb2xkZXJUZXh0OiBzdHJpbmc7XG4gIEBWaWV3Q2hpbGQoJ2F1dG8nKSBhdXRvO1xuXG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7IC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2VcbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+KCk7XG4gICBhcGlPYmo6YW55O1xuICAgU2VhcmNoSXRlbTogYW55O1xuXG4gIEBJbnB1dCgpIGZpbHRlck5hbWU6IHN0cmluZzsgLy8gVkQgMjBBdWcgZGVmYXVsdCBmaWx0ZXIgdmFsdWUgYXMgaW5wdXRcbiAgcHVibGljIGZpbmFsUmVzdWx0czogYW55W10gPSBbXTtcbiAgcHVibGljIHNlYXJjaEtleVdvcmQ6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgbmV3UmVzdWx0OiBhbnk7XG4gIHB1YmxpYyBzaG93UmVzdWx0ID0gZmFsc2U7XG4gIHB1YmxpYyBub1Jlc3VsdCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xuICBwcml2YXRlIGVsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBzZXJ2OiBzdHJpbmcgPSAnYXBpJztcbiAgcHJpdmF0ZSB0a246IHN0cmluZyA9ICcnO1xuICBcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gIFZEIDAzTWF5LSBzZWFyY2ggY2hhbmdlc1xuICAgICAvLyBBUC0yNk1BUjI1IEVuc3VyZSBxdWVzLnN1YlRleHQgaXMgYWx3YXlzIGFuIG9iamVjdCBieSBwYXJzaW5nIGl0IGlmIGl0J3MgYSBzdHJpbmdcbiAgICBpZih0aGlzLmFwaU1ldGEpe1xuICAgICAgdGhpcy5hcGlNZXRhID0gdHlwZW9mIHRoaXMuYXBpTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmFwaU1ldGEgOiBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICBsZXQgYXBpT2JqOiBhbnkgPSB0aGlzLmFwaU1ldGE7XG4gICAgICB0aGlzLlNlYXJjaEl0ZW0gPSBhcGlPYmouZmllbGQ7XG4gICAgfVxuICB9XG4vLy8vUlMgMDNGRUIyMDI1XG4vLyBSZXNldHMgc3RhdGUgd2hlbiBmaWx0ZXJOYW1lIG9yIGFwaU1ldGEgY2hhbmdlcyB0byByZWZsZWN0IHVwZGF0ZWQgZGF0YVxuIC8vIEFQLTI2TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xubmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICBpZiAoY2hhbmdlc1snYXBpTWV0YSddICYmIHRoaXMuYXBpTWV0YSkge1xuICAgIHRoaXMuYXBpTWV0YSA9IHR5cGVvZiB0aGlzLmFwaU1ldGEgPT09ICdvYmplY3QnID8gdGhpcy5hcGlNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgIHRoaXMuYXBpT2JqID0gdGhpcy5hcGlNZXRhO1xuICAgIHRoaXMuU2VhcmNoSXRlbSA9IHRoaXMuYXBpT2JqPy5maWVsZDtcbiAgfVxufVxuLy9SUyAwM0ZFQjIwMjVcbi8vIENsZWFycyBzZWFyY2gtcmVsYXRlZCBkYXRhLCBpbmNsdWRpbmcgcmVzdWx0cywgc2VhcmNoIHRlcm0sIGFuZCBzdWdnZXN0aW9ucy5cbnByaXZhdGUgcmVzZXRDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcbiAgdGhpcy5maW5hbFJlc3VsdHMgPSBbXTtcbiAgdGhpcy5maWx0ZXJOYW1lID0gJyc7IFxuICB0aGlzLnNlYXJjaEtleVdvcmQgPSAnJzsgIFxuICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XG4gIHRoaXMubm9SZXN1bHQgPSBmYWxzZTtcbn1cbmNsZWFyTGlzdCgpe1xuICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XG4gIH0sIDEwMDApO1xufVxuXG5nZXRTb3VyY2VEYXRhTG9jYWwoZXZlbnQ6IGFueSkgeyAvL3RvIGdldCByZXN1bHRzIGxpc3QgZnJvbSBiYWNrZW5kIEFQSSB3aGVuZXZlciBrZXkgaXMgdXAgYWZ0ZXIgdGhlIGVudGVyaW5nIGF0bGVhc3Qgb25lIGtleVxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBpZihldmVudC50YXJnZXQudmFsdWUubGVuZ3RoID4gMil7XG4gICAgdGhpcy5zaG93U3VnZ2VzdGlvbj10cnVlO1xuICAgIHRoaXMuZmluYWxSZXN1bHRzPVtdO1xuICAgIHRoaXMuc2VhcmNoS2V5V29yZCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNob3dSZXN1bHQgPSBmYWxzZTtcbiAgICB0aGlzLmdldFNvdXJjZURhdGEoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9uPWZhbHNlO1xuICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XG4gICAgdGhpcy5ub1Jlc3VsdCA9IGZhbHNlO1xuICB9XG59XG4vLyBWRCAwM01heS0gc2VhcmNoIGNoYW5nZXNcbi8vIFZEIDMxTk9WMjQgbnVsbCBjaGVja1xuLy8gUlMgMjlKQU4yNVxuLy9NdWx0aS13b3JkIHNlYXJjaCBhY3Jvc3MgYWxsIG9iamVjdCB2YWx1ZXNcbnB1YmxpYyBnZXRTb3VyY2VEYXRhID0gKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgLy8gTVNNLTI3TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xuICBpZiAodGhpcy5hcGlNZXRhKSB7XG4gICAgICB0aGlzLmFwaU1ldGEgPSB0eXBlb2YgdGhpcy5hcGlNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuYXBpTWV0YSA6IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICAgIGxldCBhcGlPYmo6IGFueSA9IHRoaXMuYXBpTWV0YTtcbiAgICBcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVJlc3BvbnNlKGFwaU9iai5lbmRwb2ludCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgaWYgKGFwaU9iai52YXJpYWJsZSkge1xuICAgICAgICByZXNwb25zZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoYXBpUmVzcG9uc2UsIGFwaU9iai52YXJpYWJsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IGFwaVJlc3BvbnNlO1xuICAgICAgfSAgICAgIFxuICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgIGxldCBzZWFyY2hUZXJtcyA9IGtleXdvcmQudG9Mb3dlckNhc2UoKT8uc3BsaXQoXCIgXCIpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgb2JqID0gcmVzcG9uc2VbaV07XG4gICAgICAgIGxldCBjb21iaW5lZFZhbHVlcyA9IHRoaXMuZ2V0Q29tYmluZWRWYWx1ZXNGcm9tQ29sdW1ucyhvYmosIGFwaU9iai5maWVsZCk7XG4gICAgICAgIGxldCBtYXRjaCA9IHNlYXJjaFRlcm1zLmV2ZXJ5KHRlcm0gPT4gY29tYmluZWRWYWx1ZXMuaW5jbHVkZXModGVybSkpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2gob2JqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5ub1Jlc3VsdCA9IHJlc3VsdHMubGVuZ3RoID09PSAwO1xuICAgICAgdGhpcy5maW5hbFJlc3VsdHMgPSByZXN1bHRzO1xuICAgIH0pO1xuICB9XG59O1xuLy8gU0tTMjdGRUIgSGVscGVyIGZ1bmN0aW9uc1xucHJpdmF0ZSBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy9TS1MyN0ZFQiBDb252ZXJ0IGFycmF5IGluZGV4ZXMgdG8gZG90IG5vdGF0aW9uIChlLmcuLCBbMF0gLT4gLjApXG4gIGNvbnN0IHByb2Nlc3NlZFBhdGggPSBwYXRoLnJlcGxhY2UoL1xcWyhcXGQrKVxcXS9nLCAnLiQxJyk7XG4gIGNvbnN0IHBhcnRzID0gcHJvY2Vzc2VkUGF0aC5zcGxpdCgnLicpO1xuICBsZXQgY3VycmVudCA9IG9iajtcbiAgXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmICghY3VycmVudCB8fCB0eXBlb2YgY3VycmVudCAhPT0gJ29iamVjdCcpIHJldHVybiAnJztcbiAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0XTtcbiAgfVxuICBcbiAgcmV0dXJuIGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdW5kZWZpbmVkIFxuICAgID8gU3RyaW5nKGN1cnJlbnQpLnRvTG93ZXJDYXNlKCkudHJpbSgpIFxuICAgIDogJyc7XG59XG5cbnByaXZhdGUgZ2V0Q29tYmluZWRWYWx1ZXNGcm9tQ29sdW1ucyhvYmo6IGFueSwgY29sdW1uczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG4gIC8vIFNLUzI4RkVCIGNoZWNrIGlmIGNvbHVtbnMgaXMgYW4gYXJyYXlcbiAgaWYodHlwZW9mIGNvbHVtbnMgPT09ICdzdHJpbmcnICYmICFBcnJheS5pc0FycmF5KGNvbHVtbnMpICApIHtcbiAgICBjb2x1bW5zID0gW2NvbHVtbnNdO1xuICB9XG4gIFxuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9iaiwgY29sdW1uKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB2YWx1ZXMuam9pbignICcpO1xufVxuLy8gU0tTMjdGRUIgZ2V0IHZhbHVlIGZyb20gZGF0YSBzcGVjaWZpYyBjb2x1bW5cbnB1YmxpYyBnZXRWYWx1ZXMoZWxlbWVudDogYW55LCBjb2x1bW5zOiBhbnkpOiBhbnkge1xuICBjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xuICAvLyBTS1MyOEZFQiBjaGVjayBpZiBjb2x1bW5zIGlzIGFuIGFycmF5XG4gIGlmKHR5cGVvZiBjb2x1bW5zID09PSAnc3RyaW5nJyAmJiAhQXJyYXkuaXNBcnJheShjb2x1bW5zKSAgKSB7XG4gICAgY29sdW1ucyA9IFtjb2x1bW5zXTtcbiAgfVxuICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgIGxldCB0ZW1wRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgbGV0IGZsZHMgPSBjb2x1bW4/LnNwbGl0KCcuJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc3BsaXRGbGRzID0gZmxkc1tpXT8uc3BsaXQoJ1snKTtcbiAgICAgIGlmIChzcGxpdEZsZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRlbXBFbGVtZW50ID0gdGVtcEVsZW1lbnRbZmxkc1tpXV0gfHwgJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgaW5kZXggPSBOdW1iZXIoc3BsaXRGbGRzWzFdPy5zcGxpdCgnXScpWzBdKTtcbiAgICAgICAgdGVtcEVsZW1lbnQgPSB0ZW1wRWxlbWVudFtzcGxpdEZsZHNbMF1dPy5baW5kZXhdIHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHRbY29sdW1uXSA9IHRlbXBFbGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuLy8gU0tTMjdGRUIgY29sdW1uIHZhbHVlIGdldCBmdW50aW9uXG5nZXRLZXlzKG9iajogYW55KTogc3RyaW5nW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcbn1cbiAgcHVibGljIGNsaWNrSXRlbShldmVudCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgY2xpY2tJdGVtIG9mICcgKyBKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMikpO1xuICAgIC8vIE1TTS0yN01BUjI1IEVuc3VyZSBxdWVzLnN1YlRleHQgaXMgYWx3YXlzIGFuIG9iamVjdCBieSBwYXJzaW5nIGl0IGlmIGl0J3MgYSBzdHJpbmdcbiAgICBpZih0aGlzLmFwaU1ldGEpe1xuICAgICAgdGhpcy5hcGlNZXRhID0gdHlwZW9mIHRoaXMuYXBpTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmFwaU1ldGEgOiBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICBsZXQgYXBpT2JqOiBhbnkgPSB0aGlzLmFwaU1ldGE7XG4gICAgXG4gICAgLy8gbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICB0aGlzLmZpbHRlck5hbWUgPSBldmVudFthcGlPYmouZGVmYXVsdEZpZWxkIHx8IGFwaU9iai5maWVsZFswXSB8fCBhcGlPYmouZmllbGRdOyAvL1NLUzI3RkVCIGRlZmF1bHRGaWVsZCBpcyB1c2VkIGZvciBzaG93aW5nIGEgc2VhcmNoIGZpZWxkIGlucHV0IGlmIGZpZWxkIGhhdmUgYXJyYXkgb2YgZGF0YVxuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpOyAvLyBDaGFuZ2VXcmFwcGVyID0gSlNPTi5wYXJzZSgne30nKTtcbiAgICBjaGFuZ2UuZnJvbVF1ZXN0aW9uSWQgPSB0aGlzLmlkO1xuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50O1xuICAgIGNoYW5nZS5maWVsZCA9IGFwaU9iai5maWVsZDtcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQoY2hhbmdlKTtcbiAgfVxuICB9XG4gIC8vUlMgMDNGRUIyMDI1XG4gIC8vIFJlc2V0cyBjb21wb25lbnQgc3RhdGUgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHsgdGhpcy5yZXNldENvbXBvbmVudFN0YXRlKCk7ICB9XG59XG4gICAgIiwiPCEtLSAvLyBWRCAxMkp1bjI0IC0gcmVhZG9ubHkgY2hhbmdlLS0+XG48ZGl2IGlkPVwiYXV0b2NvbXBsZXRlLWlucHV0XCI+IDwhLS0gU0tTNU5PVjI1IHNlYXJjaCBpY29uIC0tPlxuICA8aW5wdXQgI2F1dG8gaWQ9XCJzZWFyY2hib3gtc3R5bGVcIlxuICAgICAgICAgIChibHVyKT1cImNsZWFyTGlzdCgpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlck5hbWVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJUZXh0XCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogMCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OiAzMHB4O1wiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hJbnB1dCBzaGUtbGluZS1pbnB1dCBmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIChmb2N1c2luKT1cImdldFNvdXJjZURhdGFMb2NhbCgkZXZlbnQpXCJcbiAgICAgICAgICAoaW5wdXQpPVwiZ2V0U291cmNlRGF0YUxvY2FsKCRldmVudClcIj5cbiAgPGRpdiBpZD1cInNlbGVjdExpc3RcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtwb3NpdGlvbjogYWJzb2x1dGU7YmFja2dyb3VuZDogd2hpdGU7ei1pbmRleDogMjtcIj5cbiAgPGRpdiAqbmdJZj1cImZpbmFsUmVzdWx0cy5sZW5ndGggPiAwICYmIHNob3dTdWdnZXN0aW9uXCJcbiAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDIwdmg7Ym9yZGVyOiAxcHggc29saWQgI2QyZDRkNjtvdmVyZmxvdzogc2Nyb2xsOyBtaW4td2lkdGg6MTAwcHhcIlxuICAgICAgIGNsYXNzPVwic3VnZ2VzdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8IS0tIEhBIDIwREVDMjMgVW5jb21tZW50ZWQgdGhlIGxvZ2ljIC0tPlxuICAgICAgIDwhLS0gVkQgMDNNYXktIHNlYXJjaCBjaGFuZ2VzIC0tPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaW5hbFJlc3VsdHNcIiAoY2xpY2spPSdjbGlja0l0ZW0oaXRlbSknIGNsYXNzPVwiaG9vdmVyXCI+XG4gICAgICAgIDwhLS0gVkQgMjZKdW4yNCAtIGlkIGNvbmRpdGlvbiByZW1vdmVkIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXggYWxpZ24tbWlkZGxlXCIgc3R5bGU9XCJcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udGh1bWJuYWlsXCIgY2xhc3M9XCJjZWxsIHNocmlua1wiIHN0eWxlPVwid2lkdGg6IDYwcHg7IG1hcmdpbi1yaWdodDogMS42cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0udGh1bWJuYWlsXCIgc3R5bGU9XCJ3aWR0aDogNjBweDtcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGF1dG9cIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6NXB4IDhweCAwIDhweDsgZGlzcGxheTogZmxleDsgZ2FwOiA1cHg7IFwiPlxuICAgICAgICAgICAgICAgIDwhLS0vLyBWRCAyNkpVTjI0IC0gcGlwZSBjaGFuZ2VzIC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gUlMgMjlKQU4yNSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEtleXMoZ2V0VmFsdWVzKGl0ZW0sIFNlYXJjaEl0ZW0pKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0VmFsdWVzKGl0ZW0sIFNlYXJjaEl0ZW0pW2tleV0gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gSEEgMjBERUMyMyBGb3IgQ29tbWVudGVkIHRoaXMgZm9yIGZ1dHVyZSBwdXJwb3NlIC0tPlxuICAgICAgPCEtLSA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgJ2ZpcnN0TmFtZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnbGFzdE5hbWUnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L3RoPlxuICAgICAgICAgICAgICA8dGg+e3sgJ2RpdmlzaW9uJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC90aD5cbiAgICAgICAgICAgICAgPHRoPnt7ICdudW1iZXJQbGF0ZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbmFsUmVzdWx0c1wiIChjbGljayk9J2NsaWNrSXRlbShpdGVtKSc+XG4gICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmZpcnN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmxhc3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZGl2aXNpb24gfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5udW1iZXJQbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBUzFELE1BQU0sT0FBTyxrQkFBa0I7SUF3QlI7SUFBaUM7SUF2QjdDLGVBQWUsQ0FBUztJQUNkLElBQUksQ0FBQztJQUVmLFFBQVEsQ0FBQztJQUNULE9BQU8sQ0FBUztJQUNoQixFQUFFLENBQVM7SUFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsK0JBQStCO0lBQ2hELGlCQUFpQixHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUM1RixNQUFNLENBQUs7SUFDWCxVQUFVLENBQU07SUFFUixVQUFVLENBQVMsQ0FBQyx5Q0FBeUM7SUFDL0QsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLEVBQUUsQ0FBYztJQUNoQixJQUFJLEdBQVcsS0FBSyxDQUFDO0lBQ3JCLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDekIsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUVq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SUFBSSxNQUFNLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUVqQyxrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRGQUE0RjtZQUM3SyxJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1lBQ3RFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0QsQ0FBQztJQUNELGNBQWM7SUFDZCx5REFBeUQ7SUFDekQsV0FBVyxLQUFXLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUUsQ0FBQzt3R0EvTHpDLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtYQ3JCL0Isb2pFQXlDTTs7NEZEcEJPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MEdBS2pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ2EsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUVSLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFJRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuLy8gVkQgMjNKQU4yNCByZW1vdmVkIGh0dHBDbGllbnQgaW1wb3J0IHVzZWQgc2VydmljZSBmaWxlIGZvciBjYWxsb3V0XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YVwiO1xuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9jaGFuZ2VXcmFwcGVyXCI7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2kxOG4uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2VhcmNoLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWJveC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGxhY2VIb2xkZXJUZXh0OiBzdHJpbmc7XG4gIEBWaWV3Q2hpbGQoJ2F1dG8nKSBhdXRvO1xuXG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7IC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2VcbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+KCk7XG4gICBhcGlPYmo6YW55O1xuICAgU2VhcmNoSXRlbTogYW55O1xuXG4gIEBJbnB1dCgpIGZpbHRlck5hbWU6IHN0cmluZzsgLy8gVkQgMjBBdWcgZGVmYXVsdCBmaWx0ZXIgdmFsdWUgYXMgaW5wdXRcbiAgcHVibGljIGZpbmFsUmVzdWx0czogYW55W10gPSBbXTtcbiAgcHVibGljIHNlYXJjaEtleVdvcmQ6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgbmV3UmVzdWx0OiBhbnk7XG4gIHB1YmxpYyBzaG93UmVzdWx0ID0gZmFsc2U7XG4gIHB1YmxpYyBub1Jlc3VsdCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xuICBwcml2YXRlIGVsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBzZXJ2OiBzdHJpbmcgPSAnYXBpJztcbiAgcHJpdmF0ZSB0a246IHN0cmluZyA9ICcnO1xuICBpc0xvYWRpbmcgPSBmYWxzZVxuICBcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gIFZEIDAzTWF5LSBzZWFyY2ggY2hhbmdlc1xuICAgICAvLyBBUC0yNk1BUjI1IEVuc3VyZSBxdWVzLnN1YlRleHQgaXMgYWx3YXlzIGFuIG9iamVjdCBieSBwYXJzaW5nIGl0IGlmIGl0J3MgYSBzdHJpbmdcbiAgICBpZih0aGlzLmFwaU1ldGEpe1xuICAgICAgdGhpcy5hcGlNZXRhID0gdHlwZW9mIHRoaXMuYXBpTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmFwaU1ldGEgOiBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICBsZXQgYXBpT2JqOiBhbnkgPSB0aGlzLmFwaU1ldGE7XG4gICAgICB0aGlzLlNlYXJjaEl0ZW0gPSBhcGlPYmouZmllbGQ7XG4gICAgfVxuICB9XG4vLy8vUlMgMDNGRUIyMDI1XG4vLyBSZXNldHMgc3RhdGUgd2hlbiBmaWx0ZXJOYW1lIG9yIGFwaU1ldGEgY2hhbmdlcyB0byByZWZsZWN0IHVwZGF0ZWQgZGF0YVxuIC8vIEFQLTI2TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xubmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICBpZiAoY2hhbmdlc1snYXBpTWV0YSddICYmIHRoaXMuYXBpTWV0YSkge1xuICAgIHRoaXMuYXBpTWV0YSA9IHR5cGVvZiB0aGlzLmFwaU1ldGEgPT09ICdvYmplY3QnID8gdGhpcy5hcGlNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgIHRoaXMuYXBpT2JqID0gdGhpcy5hcGlNZXRhO1xuICAgIHRoaXMuU2VhcmNoSXRlbSA9IHRoaXMuYXBpT2JqPy5maWVsZDtcbiAgfVxufVxuLy9SUyAwM0ZFQjIwMjVcbi8vIENsZWFycyBzZWFyY2gtcmVsYXRlZCBkYXRhLCBpbmNsdWRpbmcgcmVzdWx0cywgc2VhcmNoIHRlcm0sIGFuZCBzdWdnZXN0aW9ucy5cbnByaXZhdGUgcmVzZXRDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcbiAgdGhpcy5maW5hbFJlc3VsdHMgPSBbXTtcbiAgdGhpcy5maWx0ZXJOYW1lID0gJyc7IFxuICB0aGlzLnNlYXJjaEtleVdvcmQgPSAnJzsgIFxuICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XG4gIHRoaXMubm9SZXN1bHQgPSBmYWxzZTtcbn1cbmNsZWFyTGlzdCgpe1xuICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XG4gIH0sIDEwMDApO1xufVxuXG5nZXRTb3VyY2VEYXRhTG9jYWwoZXZlbnQ6IGFueSkgeyAvL3RvIGdldCByZXN1bHRzIGxpc3QgZnJvbSBiYWNrZW5kIEFQSSB3aGVuZXZlciBrZXkgaXMgdXAgYWZ0ZXIgdGhlIGVudGVyaW5nIGF0bGVhc3Qgb25lIGtleVxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBpZihldmVudC50YXJnZXQudmFsdWUubGVuZ3RoID4gMil7XG4gICAgdGhpcy5zaG93U3VnZ2VzdGlvbj10cnVlO1xuICAgIHRoaXMuZmluYWxSZXN1bHRzPVtdO1xuICAgIHRoaXMuc2VhcmNoS2V5V29yZCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNob3dSZXN1bHQgPSBmYWxzZTtcbiAgICB0aGlzLmdldFNvdXJjZURhdGEoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9uPWZhbHNlO1xuICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XG4gICAgdGhpcy5ub1Jlc3VsdCA9IGZhbHNlO1xuICB9XG59XG4vLyBWRCAwM01heS0gc2VhcmNoIGNoYW5nZXNcbi8vIFZEIDMxTk9WMjQgbnVsbCBjaGVja1xuLy8gUlMgMjlKQU4yNVxuLy9NdWx0aS13b3JkIHNlYXJjaCBhY3Jvc3MgYWxsIG9iamVjdCB2YWx1ZXNcbnB1YmxpYyBnZXRTb3VyY2VEYXRhID0gKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgLy8gTVNNLTI3TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xuICBpZiAodGhpcy5hcGlNZXRhKSB7XG4gICAgICB0aGlzLmFwaU1ldGEgPSB0eXBlb2YgdGhpcy5hcGlNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuYXBpTWV0YSA6IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICAgIGxldCBhcGlPYmo6IGFueSA9IHRoaXMuYXBpTWV0YTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVJlc3BvbnNlKGFwaU9iai5lbmRwb2ludCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGxldCByZXNwb25zZTtcbiAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLCBhcGlPYmoudmFyaWFibGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhcGlSZXNwb25zZTtcbiAgICAgIH0gICAgICBcbiAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICBsZXQgc2VhcmNoVGVybXMgPSBrZXl3b3JkLnRvTG93ZXJDYXNlKCk/LnNwbGl0KFwiIFwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG9iaiA9IHJlc3BvbnNlW2ldO1xuICAgICAgICBsZXQgY29tYmluZWRWYWx1ZXMgPSB0aGlzLmdldENvbWJpbmVkVmFsdWVzRnJvbUNvbHVtbnMob2JqLCBhcGlPYmouZmllbGQpO1xuICAgICAgICBsZXQgbWF0Y2ggPSBzZWFyY2hUZXJtcy5ldmVyeSh0ZXJtID0+IGNvbWJpbmVkVmFsdWVzLmluY2x1ZGVzKHRlcm0pKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubm9SZXN1bHQgPSByZXN1bHRzLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gcmVzdWx0cztcbiAgICB9LFxuICAgIChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignQVBJIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm5vUmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XG4gICAgfSk7XG4gIH1cbn07XG4vLyBTS1MyN0ZFQiBIZWxwZXIgZnVuY3Rpb25zXG5wcml2YXRlIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvL1NLUzI3RkVCIENvbnZlcnQgYXJyYXkgaW5kZXhlcyB0byBkb3Qgbm90YXRpb24gKGUuZy4sIFswXSAtPiAuMClcbiAgY29uc3QgcHJvY2Vzc2VkUGF0aCA9IHBhdGgucmVwbGFjZSgvXFxbKFxcZCspXFxdL2csICcuJDEnKTtcbiAgY29uc3QgcGFydHMgPSBwcm9jZXNzZWRQYXRoLnNwbGl0KCcuJyk7XG4gIGxldCBjdXJyZW50ID0gb2JqO1xuICBcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKCFjdXJyZW50IHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuICcnO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnRdO1xuICB9XG4gIFxuICByZXR1cm4gY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50ICE9PSB1bmRlZmluZWQgXG4gICAgPyBTdHJpbmcoY3VycmVudCkudG9Mb3dlckNhc2UoKS50cmltKCkgXG4gICAgOiAnJztcbn1cblxucHJpdmF0ZSBnZXRDb21iaW5lZFZhbHVlc0Zyb21Db2x1bW5zKG9iajogYW55LCBjb2x1bW5zOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgLy8gU0tTMjhGRUIgY2hlY2sgaWYgY29sdW1ucyBpcyBhbiBhcnJheVxuICBpZih0eXBlb2YgY29sdW1ucyA9PT0gJ3N0cmluZycgJiYgIUFycmF5LmlzQXJyYXkoY29sdW1ucykgICkge1xuICAgIGNvbHVtbnMgPSBbY29sdW1uc107XG4gIH1cbiAgXG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob2JqLCBjb2x1bW4pO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIHZhbHVlcy5qb2luKCcgJyk7XG59XG4vLyBTS1MyN0ZFQiBnZXQgdmFsdWUgZnJvbSBkYXRhIHNwZWNpZmljIGNvbHVtblxucHVibGljIGdldFZhbHVlcyhlbGVtZW50OiBhbnksIGNvbHVtbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIC8vIFNLUzI4RkVCIGNoZWNrIGlmIGNvbHVtbnMgaXMgYW4gYXJyYXlcbiAgaWYodHlwZW9mIGNvbHVtbnMgPT09ICdzdHJpbmcnICYmICFBcnJheS5pc0FycmF5KGNvbHVtbnMpICApIHtcbiAgICBjb2x1bW5zID0gW2NvbHVtbnNdO1xuICB9XG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgbGV0IHRlbXBFbGVtZW50ID0gZWxlbWVudDtcbiAgICBsZXQgZmxkcyA9IGNvbHVtbj8uc3BsaXQoJy4nKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzcGxpdEZsZHMgPSBmbGRzW2ldPy5zcGxpdCgnWycpO1xuICAgICAgaWYgKHNwbGl0Rmxkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGVtcEVsZW1lbnQgPSB0ZW1wRWxlbWVudFtmbGRzW2ldXSB8fCAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpbmRleCA9IE51bWJlcihzcGxpdEZsZHNbMV0/LnNwbGl0KCddJylbMF0pO1xuICAgICAgICB0ZW1wRWxlbWVudCA9IHRlbXBFbGVtZW50W3NwbGl0Rmxkc1swXV0/LltpbmRleF0gfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdFtjb2x1bW5dID0gdGVtcEVsZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG4vLyBTS1MyN0ZFQiBjb2x1bW4gdmFsdWUgZ2V0IGZ1bnRpb25cbmdldEtleXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopO1xufVxuICBwdWJsaWMgY2xpY2tJdGVtKGV2ZW50KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBjbGlja0l0ZW0gb2YgJyArIEpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKSk7XG4gICAgLy8gTVNNLTI3TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xuICAgIGlmKHRoaXMuYXBpTWV0YSl7XG4gICAgICB0aGlzLmFwaU1ldGEgPSB0eXBlb2YgdGhpcy5hcGlNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuYXBpTWV0YSA6IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICAgIGxldCBhcGlPYmo6IGFueSA9IHRoaXMuYXBpTWV0YTtcbiAgICBcbiAgICAvLyBsZXQgYXBpT2JqOiBBUElNZXRhID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgIHRoaXMuZmlsdGVyTmFtZSA9IGV2ZW50W2FwaU9iai5kZWZhdWx0RmllbGQgfHwgYXBpT2JqLmZpZWxkWzBdIHx8IGFwaU9iai5maWVsZF07IC8vU0tTMjdGRUIgZGVmYXVsdEZpZWxkIGlzIHVzZWQgZm9yIHNob3dpbmcgYSBzZWFyY2ggZmllbGQgaW5wdXQgaWYgZmllbGQgaGF2ZSBhcnJheSBvZiBkYXRhXG4gICAgbGV0IGNoYW5nZSA9IG5ldyBDaGFuZ2VXcmFwcGVyKCk7IC8vIENoYW5nZVdyYXBwZXIgPSBKU09OLnBhcnNlKCd7fScpO1xuICAgIGNoYW5nZS5mcm9tUXVlc3Rpb25JZCA9IHRoaXMuaWQ7XG4gICAgY2hhbmdlLnZhbHVlT2JqID0gZXZlbnQ7XG4gICAgY2hhbmdlLmZpZWxkID0gYXBpT2JqLmZpZWxkO1xuICAgIHRoaXMuc2VhcmNoVmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2UpO1xuICB9XG4gIH1cbiAgLy9SUyAwM0ZFQjIwMjVcbiAgLy8gUmVzZXRzIGNvbXBvbmVudCBzdGF0ZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkXG4gIG5nT25EZXN0cm95KCk6IHZvaWQgeyB0aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTsgIH1cbn1cbiAgICAiLCI8IS0tIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UgLS0+XG48ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cbiAgPGlucHV0ICNhdXRvIG5hbWU9XCJuYW1lXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNlYXJjaElucHV0IHNoZS1saW5lLWlucHV0IGZvcm0tY29udHJvbCBzZWFyY2hib3gtaW5wdXRcIlxuICAgIFsobmdNb2RlbCldPVwiZmlsdGVyTmFtZVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclRleHRcIiAoYmx1cik9XCJjbGVhckxpc3QoKVwiXG4gICAgKGZvY3VzaW4pPVwiZ2V0U291cmNlRGF0YUxvY2FsKCRldmVudClcIiAoaW5wdXQpPVwiZ2V0U291cmNlRGF0YUxvY2FsKCRldmVudClcIiByb2xlPVwiY29tYm9ib3hcIlxuICAgIGF0dHIuYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzaG93U3VnZ2VzdGlvblwiIGF0dHIuYXJpYS1vd25zPVwic2VsZWN0TGlzdFwiXG4gICAgYXR0ci5hcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIC8+XG4gIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmc7IGVsc2Ugc2VhcmNoSWNvblwiPlxuICAgICAgPCEtLSBNaW5pbWFsIERvdHRlZCBMb2FkZXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG90dGVkLWxvYWRlclwiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZG90IG9mIFtdLmNvbnN0cnVjdG9yKDYpOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJkb3RcIiBbc3R5bGUuLS1pXT1cImlcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3NlYXJjaEljb24+XG4gICAgICA8IS0tIElubGluZSBzZWFyY2ggaWNvbiBTVkcgLS0+XG4gICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzQzNDU1NVwiIHN0cm9rZS1vcGFjaXR5PVwiMC42NVwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIiAvPlxuICAgICAgICA8cGF0aCBkPVwiTTIwIDIwTDE3IDE3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGlkPVwic2VsZWN0TGlzdFwiIGNsYXNzPVwic3VnZ2VzdGlvbi13cmFwcGVyXCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmluYWxSZXN1bHRzLmxlbmd0aCA+IDAgJiYgc2hvd1N1Z2dlc3Rpb25cIiBjbGFzcz1cInN1Z2dlc3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaW5hbFJlc3VsdHNcIiAoY2xpY2spPVwiY2xpY2tJdGVtKGl0ZW0pXCIgY2xhc3M9XCJzdWdnZXN0aW9uLWl0ZW1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXggYWxpZ24tbWlkZGxlXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udGh1bWJuYWlsXCIgY2xhc3M9XCJjZWxsIHNocmluayB0aHVtYm5haWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0udGh1bWJuYWlsXCIgYWx0PVwiVGh1bWJuYWlsXCI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhdXRvIGl0ZW0tZGV0YWlsc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEtleXMoZ2V0VmFsdWVzKGl0ZW0sIFNlYXJjaEl0ZW0pKVwiIGNsYXNzPVwiaXRlbS12YWx1ZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZXMoaXRlbSwgU2VhcmNoSXRlbSlba2V5XSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|