ngx-techlify-core 18.80.0 → 18.82.0
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/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +2 -2
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +2 -1
- package/esm2022/lib/core/app-update.service.mjs +64 -0
- package/esm2022/lib/core/index.mjs +2 -1
- package/esm2022/lib/export-excel/export-excel-button/export-excel-button.component.mjs +2 -2
- package/esm2022/lib/number-selector/number-selector.component.mjs +118 -0
- package/esm2022/lib/timeline-activity/timeline-activity-button/timeline-activity-button.component.mjs +2 -2
- package/esm2022/lib/timeline-filter/timeline-filter.component.mjs +43 -14
- package/esm2022/lib/user/app-admin-user-list/app-admin-user-list.component.mjs +5 -4
- package/esm2022/lib/user/user-enable-button-component/user-enable-button.component.mjs +5 -5
- package/esm2022/lib/user/user-list/user-list.component.mjs +3 -3
- package/esm2022/lib/utility/index.mjs +1 -2
- package/esm2022/lib/utility/utility.module.mjs +5 -7
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-techlify-core.mjs +233 -72
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/core/app-update.service.d.ts +25 -0
- package/lib/core/index.d.ts +1 -0
- package/lib/number-selector/number-selector.component.d.ts +44 -0
- package/lib/timeline-filter/timeline-filter.component.d.ts +13 -2
- package/lib/utility/index.d.ts +0 -1
- package/lib/utility/utility.module.d.ts +3 -4
- package/package.json +2 -1
- package/public-api.d.ts +1 -0
- package/styles/style.scss +3 -3
- package/esm2022/lib/utility/number-selector.component.mjs +0 -42
- package/lib/utility/number-selector.component.d.ts +0 -23
|
@@ -39,8 +39,8 @@ let UserEnableButtonComponent = class UserEnableButtonComponent {
|
|
|
39
39
|
dialogRef.afterClosed().subscribe(async (result) => {
|
|
40
40
|
if (result) {
|
|
41
41
|
//Action confirmed
|
|
42
|
-
this.service.enable(this.user).then(res => {
|
|
43
|
-
this.onSave.emit(
|
|
42
|
+
this.service.enable(this.user).then((res) => {
|
|
43
|
+
this.onSave.emit(res?.item);
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
});
|
|
@@ -61,8 +61,8 @@ let UserEnableButtonComponent = class UserEnableButtonComponent {
|
|
|
61
61
|
dialogRef.afterClosed().subscribe(async (result) => {
|
|
62
62
|
if (result) {
|
|
63
63
|
//Action confirmed
|
|
64
|
-
this.service.disable(this.user).then(res => {
|
|
65
|
-
this.onSave.emit(
|
|
64
|
+
this.service.disable(this.user).then((res) => {
|
|
65
|
+
this.onSave.emit(res?.item);
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
});
|
|
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
90
90
|
}], onSave: [{
|
|
91
91
|
type: Output
|
|
92
92
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbmFibGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWVuYWJsZS1idXR0b24tY29tcG9uZW50L3VzZXItZW5hYmxlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXJELE9BQU8sRUFBZSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7O0FBYWhFLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBUXBDLFlBQ1UsT0FBb0IsRUFDcEIsWUFBMEIsRUFDM0Isa0JBQXNDLEVBQ3JDLE1BQWlCO1FBSGpCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVGxCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFXbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUdELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN2RCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBZTtnQkFDakIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLE9BQU8sRUFBRSw0RUFBNEU7YUFDdEY7WUFDRCxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtZQUMvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDakMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN2RCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBZTtnQkFDakIsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLE9BQU8sRUFBRSwySEFBMkg7YUFDckk7WUFDRCxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtZQUMvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtvQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzsrR0EzRVUseUJBQXlCO21HQUF6Qix5QkFBeUIsaUpDcEJ0QyxzbUNBc0JlOztBREZGLHlCQUF5QjtJQVhyQyxZQUFZLEVBQUU7SUFDZjs7Ozs7T0FLRztHQUtVLHlCQUF5QixDQTRFckM7OzRGQTVFWSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usd0JBQXdCO29LQUt6QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3kgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBDdXJyZW50VXNlclNlcnZpY2UgfSBmcm9tICcuLi9jdXJyZW50LXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aW9uUG9wdXAsIEFjdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWN0aW9uLXBvcHVwJztcblxuQFVudGlsRGVzdHJveSgpXG4vKipcbiAqIENvbXBvbmVudCB0byB2aWV3IHRoZSBzZXQgb2YgdXNlcnNcbiAqXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXG4gKiBAc2luY2UgMjAxNzA3MTBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZW5hYmxlLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFbmFibGVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHVzZXI6IGFueTtcbiAgQElucHV0KCkgaXNVc2VJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50VXNlcjogVXNlcjtcblxuICBAT3V0cHV0KCkgb25TYXZlOiBFdmVudEVtaXR0ZXI8VXNlcj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXG4gICkge1xuICAgIHRoaXMub25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyPigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlLmdldFVzZXIoKTtcbiAgfVxuXG5cbiAgZW5hYmxlVXNlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlci5pZCA9PT0gdGhpcz8udXNlcj8uaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDdXJyZW50IHVzZXIgY2Fubm90IGJlIGNoYW5nZWQnLCAnd2FybicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uUG9wdXBDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXG4gICAgICBkYXRhOiA8QWN0aW9uUG9wdXA+e1xuICAgICAgICB0aXRsZTogJ0VuYWJsZSBVc2VyJyxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgd2lsbCByZS1lbmFibGUgdGhlIHVzZXLigJlzIGFjY291bnQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8nXG4gICAgICB9LFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFzeW5jIHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vQWN0aW9uIGNvbmZpcm1lZFxuICAgICAgICB0aGlzLnNlcnZpY2UuZW5hYmxlKHRoaXMudXNlcikudGhlbihcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQocmVzPy5pdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNhYmxlVXNlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlci5pZCA9PT0gdGhpcz8udXNlcj8uaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDdXJyZW50IHVzZXIgY2Fubm90IGJlIGNoYW5nZWQnLCAnd2FybicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uUG9wdXBDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXG4gICAgICBkYXRhOiA8QWN0aW9uUG9wdXA+e1xuICAgICAgICB0aXRsZTogJ0Rpc2FibGUgVXNlcicsXG4gICAgICAgIG1lc3NhZ2U6ICdEaXNhYmxpbmcgdGhpcyB1c2Vy4oCZcyBhY2NvdW50IHdpbGwgcmVzdHJpY3QgYWxsIG9mIHRoZWlyIHRoZWlyIGFjY2VzcyB0byB5b3VyIGNvbXBhbnkuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8nXG4gICAgICB9LFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFzeW5jIHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vQWN0aW9uIGNvbmZpcm1lZFxuICAgICAgICB0aGlzLnNlcnZpY2UuZGlzYWJsZSh0aGlzLnVzZXIpLnRoZW4oXG4gICAgICAgICAgKHJlczphbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQocmVzPy5pdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVXNlSWNvbnNcIj5cbiAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKm5nSWY9XCJ1c2VyPy51c2VyX2NsaWVudD8uaXNfZW5hYmxlZFxuICAmJiB1c2VyPy5pZCAhPT0gY3VycmVudFVzZXI/LmlkXG4gICYmIGN1cnJlbnRVc2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKCd1c2VyX2Rpc2FibGUnKVwiIChjbGljayk9XCJkaXNhYmxlVXNlcigpXCI+XG4gICAgRGlzYWJsZVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cIiF1c2VyPy51c2VyX2NsaWVudD8uaXNfZW5hYmxlZFxuJiYgdXNlcj8uaWQgIT09IGN1cnJlbnRVc2VyPy5pZFxuJiYgY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfZW5hYmxlJylcIiAoY2xpY2spPVwiZW5hYmxlVXNlcigpXCI+XG4gICAgRW5hYmxlXG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1VzZUljb25zXCI+XG4gIDxhcHAtdGVjaGxpZnktaWNvbiBuYW1lPVwiZGlzYWJsZV91c2VyXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBjbGlja2FibGVcIiAqbmdJZj1cInVzZXI/LnVzZXJfY2xpZW50Py5pc19lbmFibGVkXG4gICYmIHVzZXI/LmlkICE9PSBjdXJyZW50VXNlcj8uaWRcbiAgJiYgY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfZGlzYWJsZScpXCIgKGNsaWNrKT1cImRpc2FibGVVc2VyKClcIlxuICAgIG1hdFRvb2x0aXA9XCJEaXNhYmxlIFVzZXJcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuICA8YXBwLXRlY2hsaWZ5LWljb24gbmFtZT1cImFjdGl2YXRlXCIgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3MgY2xpY2thYmxlXCIgKm5nSWY9XCIhdXNlcj8udXNlcl9jbGllbnQ/LmlzX2VuYWJsZWRcbiYmIHVzZXI/LmlkICE9PSBjdXJyZW50VXNlcj8uaWRcbiYmIGN1cnJlbnRVc2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKCd1c2VyX2VuYWJsZScpXCIgKGNsaWNrKT1cImVuYWJsZVVzZXIoKVwiXG4gICAgbWF0VG9vbHRpcD1cIkVuYWJsZSBVc2VyXCI+PC9hcHAtdGVjaGxpZnktaWNvbj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
@@ -128,7 +128,7 @@ let UserListComponent = class UserListComponent extends TechlifyListComponent {
|
|
|
128
128
|
.subscribe(_ => this.alertService.addAlert('Password reset email sent', 'success'));
|
|
129
129
|
}
|
|
130
130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserListComponent, deps: [{ token: i1.AlertService }, { token: i2.CurrentUserService }, { token: i3.UserConfigService }, { token: i4.UserService }, { token: i5.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UserListComponent, isStandalone: true, selector: "app-user-list", inputs: { userTypeIds: "userTypeIds", title: "title" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <app-techlify-form-button [component]=\"userFormComponent\" matTooltip=\"New User\"\n [data]=\"{client_id: currentUser?.client_id}\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[element?.id]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-form-button [component]=\"userFormComponent\" [model]=\"element\" class=\"clickable\"\n [data]=\"{client_id: currentUser?.client_id}\" matTooltip=\"Edit\"\n *ngIf=\"currentUserService.hasPermission('user_update')\"\n (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"modelsDeletedById(element)\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i14.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i14.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i15.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i16.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i16.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i18.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i19.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "ngmodule", type: UserEnableButtonModule }, { kind: "component", type: i20.UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user", "isUseIcons"], outputs: ["onSave"] }] }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UserListComponent, isStandalone: true, selector: "app-user-list", inputs: { userTypeIds: "userTypeIds", title: "title" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <app-techlify-form-button [component]=\"userFormComponent\" matTooltip=\"New User\"\n [data]=\"{client_id: currentUser?.client_id}\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[element?.id]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-form-button [component]=\"userFormComponent\" [model]=\"element\" class=\"clickable\"\n [data]=\"{client_id: currentUser?.client_id}\" matTooltip=\"Edit\"\n *ngIf=\"currentUserService.hasPermission('user_update')\"\n (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"modelsDeletedById(element)\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"modelsUpdatedById($event)\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i14.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i14.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i15.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i16.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i16.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i18.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i19.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "ngmodule", type: UserEnableButtonModule }, { kind: "component", type: i20.UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user", "isUseIcons"], outputs: ["onSave"] }] }); }
|
|
132
132
|
};
|
|
133
133
|
UserListComponent = __decorate([
|
|
134
134
|
UntilDestroy()
|
|
@@ -147,10 +147,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
147
147
|
TechlifyDeleteButtonComponent,
|
|
148
148
|
TechlifyFormButtonComponent,
|
|
149
149
|
UserEnableButtonModule
|
|
150
|
-
], template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <app-techlify-form-button [component]=\"userFormComponent\" matTooltip=\"New User\"\n [data]=\"{client_id: currentUser?.client_id}\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[element?.id]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-form-button [component]=\"userFormComponent\" [model]=\"element\" class=\"clickable\"\n [data]=\"{client_id: currentUser?.client_id}\" matTooltip=\"Edit\"\n *ngIf=\"currentUserService.hasPermission('user_update')\"\n (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"modelsDeletedById(element)\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"
|
|
150
|
+
], template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <app-techlify-form-button [component]=\"userFormComponent\" matTooltip=\"New User\"\n [data]=\"{client_id: currentUser?.client_id}\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[element?.id]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-form-button [component]=\"userFormComponent\" [model]=\"element\" class=\"clickable\"\n [data]=\"{client_id: currentUser?.client_id}\" matTooltip=\"Edit\"\n *ngIf=\"currentUserService.hasPermission('user_update')\"\n (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"modelsDeletedById(element)\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"modelsUpdatedById($event)\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>" }]
|
|
151
151
|
}], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.CurrentUserService }, { type: i3.UserConfigService }, { type: i4.UserService }, { type: i5.UntypedFormBuilder }], propDecorators: { userTypeIds: [{
|
|
152
152
|
type: Input
|
|
153
153
|
}], title: [{
|
|
154
154
|
type: Input
|
|
155
155
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxr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O3dCQUMzQixzQkFBc0I7cUJBQ3ZCOzZNQUlRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBDdXJyZW50VXNlclNlcnZpY2UgfSBmcm9tICcuLi9jdXJyZW50LXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3VzZXItZm9ybS91c2VyLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZywgVXNlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFRlY2hsaWZ5TGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtbW9kZWwnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2VhcmNoYWJsZS1zZWxlY3Rvci9zZWFyY2hhYmxlLXNlbGVjdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBUZWNobGlmeUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi90ZWNobGlmeS1pY29uL3RlY2hsaWZ5LWljb24ubW9kdWxlJztcbmltcG9ydCB7IFRlY2hsaWZ5RGVsZXRlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGVsZXRlLWJ1dHRvbi90ZWNobGlmeS1kZWxldGUtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZWNobGlmeUZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWJ1dHRvbi90ZWNobGlmeS1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckVuYWJsZUJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL3VzZXItZW5hYmxlLWJ1dHRvbi1jb21wb25lbnQvdXNlci1lbmFibGUtYnV0dG9uLm1vZHVsZSc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlGb3JtQnV0dG9uQ29tcG9uZW50LFxuICAgIFVzZXJFbmFibGVCdXR0b25Nb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgdXNlclR5cGVJZHM6IG51bWJlcltdID0gW107XG5cbiAgY3VycmVudFVzZXI6IFVzZXI7XG4gIGNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuICB1c2VyOiBVc2VyO1xuICBASW5wdXQoKSB0aXRsZSA9ICdVc2VyIE1hbmFnZW1lbnQnO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnaW5kZXgnLFxuICAgICduYW1lJyxcbiAgICAnZW1haWwnLFxuICAgICd0eXBlJyxcbiAgICAncm9sZXMnLFxuICAgICdsYXN0X2xvZ2luJyxcbiAgICAnYWRkZWRfYnknLFxuICAgICdhY3Rpb25zJ1xuICBdO1xuXG4gIHNjcm9sbENvbnRhaW5lciA9ICcubWF0LXNpZGVuYXYtY29udGVudCc7XG4gIG1vZGVsczogYW55W10gPSBbXTtcbiAgdXNlckZvcm1Db21wb25lbnQgPSBVc2VyRm9ybUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnVzZXJDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIHJvbGVfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBzdGF0dXM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICAgIHVzZXJfdHlwZV9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnNjcm9sbENvbnRhaW5lcikge1xuICAgICAgLy8gU2V0IHRvIG51bGwgaWYgc2Nyb2xsIGhhcyB0byBiZSBkb25lIGZyb20gcm9vdFxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIgPSB0aGlzLmNvbmZpZz8uc2Nyb2xsQ29udGFpbmVyID09PSAncm9vdCcgPyBudWxsIDogdGhpcy5jb25maWc/LnNjcm9sbENvbnRhaW5lcjtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvL0luaXRpYWxpemUgZm9ybSBpbiBPbkluaXQuXG4gICAgLy9PbiBjb25zdHJ1Y3RvciBJbnB1dCgpIHZhcmlhYmxlcyB3aWxsIGJlIG51bGwsIHRoYXQgd2lsbCBpbnRyb2R1Y2UgYSBpc3N1ZSBmb3IgYWRtaW4gdmlld1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgcm9sZV9pZHM6IFsnJ10sXG4gICAgICBzdGF0dXM6IFsnZW5hYmxlZCddLFxuICAgICAgc29ydF9ieTogWydpZHxBU0MnXSxcbiAgICAgIHJlbGF0aW9uczogWydyb2xlcyx0eXBlLHVzZXJDbGllbnRzLnR5cGUsY3JlYXRvcix1c2VyQ2xpZW50J10sXG4gICAgICBhcHBlbmRzOiBbJ2xhc3RfbG9naW4nXSxcbiAgICAgIHVzZXJfdHlwZV9pZHM6IHRoaXMudXNlclR5cGVJZHMudG9TdHJpbmcoKVxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlLmdldFVzZXIoKTtcblxuICAgIHRoaXMucGF0Y2hGaWx0ZXJzRnJvbVJvdXRlKCk7XG4gICAgdGhpcy5saXN0ZW5GaWx0ZXJDaGFuZ2VzKCk7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5jdXJyZW50VXNlcj8uY2xpZW50X2lkO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIHN0YXR1czogdGhpcy5maWx0ZXJGb3JtLnZhbHVlLnN0YXR1cyA/IHRoaXMuZmlsdGVyRm9ybS52YWx1ZS5zdGF0dXMudG9TdHJpbmcoKSA6ICcnLFxuICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgcm9sZV9pZHM6IHRoaXMuZmlsdGVyRm9ybT8udmFsdWU/LnJvbGVfaWRzPy50b1N0cmluZygpXG4gICAgfTtcblxuICAgIHRoaXMuc2VydmljZS5pbmRleChwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RlbHMgPSB0aGlzLm1vZGVscy5jb25jYXQocmVzdWx0Py5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3VsdD8ubGFzdF9wYWdlO1xuXG4gICAgICAgIHRoaXMubW9kZWxzLmZvckVhY2goKHVzZXJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGllbnQ6IGFueSA9ICh1c2VyRGF0YT8udXNlcl9jbGllbnRzIGFzIGFueVtdIHx8IFtdKVxuICAgICAgICAgICAgLmZpbmQoKHVzZXJDbGllbnQ6IGFueSkgPT4gdXNlckNsaWVudC5jbGllbnRfaWQgPT09IGNsaWVudElkICYmIHVzZXJDbGllbnQudXNlcl9pZCA9PT0gdXNlckRhdGEuaWQpO1xuICAgICAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgICAgIHVzZXJEYXRhLnVzZXJfdHlwZV9pZCA9IGNsaWVudC51c2VyX3R5cGVfaWQ7XG4gICAgICAgICAgICB1c2VyRGF0YS5jbGllbnRfaWQgPSBjbGllbnQuY2xpZW50X2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2VcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciB0eXBlIGZvciB0aGUgY3VycmVudCBjbGllbnQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFVzZXJcbiAgICovXG4gIGdldFVzZXJUeXBlKHVzZXI6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlckNsaWVudDogYW55ID0gKHVzZXI/LnVzZXJfY2xpZW50cyBhcyBbXSkuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy5jbGllbnRfaWQgPT09IHRoaXMuY3VycmVudFVzZXI/LmNsaWVudF9pZCk7XG4gICAgcmV0dXJuIHVzZXJDbGllbnQ/LnR5cGU/LnRpdGxlIHx8ICcnO1xuICB9XG5cbiAgcmVzZXRQYXNzd29yZCh1c2VyOiBhbnkpIHtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnJlc2V0UGFzc3dvcmQodXNlcilcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2UpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdQYXNzd29yZCByZXNldCBlbWFpbCBzZW50JywgJ3N1Y2Nlc3MnKSk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwieydtLTQnOmNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0RlZmF1bHRNYXJnaW59XCI+XG4gIDxtYXQtY2FyZCBjbGFzcz1cIm1iLTJcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGg1IGNsYXNzPVwibWItMFwiPiB7eyB0aXRsZSB9fSA8L2g1PlxuICAgICAgICA8YXBwLXRlY2hsaWZ5LWZvcm0tYnV0dG9uIFtjb21wb25lbnRdPVwidXNlckZvcm1Db21wb25lbnRcIiBtYXRUb29sdGlwPVwiTmV3IFVzZXJcIlxuICAgICAgICAgIFtkYXRhXT1cIntjbGllbnRfaWQ6IGN1cnJlbnRVc2VyPy5jbGllbnRfaWR9XCJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0FkZFVzZXIgJiYgY3VycmVudFVzZXJTZXJ2aWNlPy5oYXNQZXJtaXNzaW9uKCd1c2VyX2NyZWF0ZScpXCJcbiAgICAgICAgICAoc2F2ZWQpPVwibW9kZWxDcmVhdGVkKCRldmVudClcIj48L2FwcC10ZWNobGlmeS1mb3JtLWJ1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9pbXBvcnQnXVwiXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnVzZXJDb25maWc/LnNob3dJbXBvcnRCdXR0b24gJiYgY3VycmVudFVzZXJTZXJ2aWNlPy5oYXNQZXJtaXNzaW9uKCd1c2VyX2NyZWF0ZScpXCI+XG4gICAgICAgICAgSW1wb3J0IFVzZXJcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcm9sZXMnXVwiICpuZ0lmPVwiY29uZmlnPy51c2VyQ29uZmlnPy5zaG93Um9sZXNcIj5cbiAgICAgICAgICA8bWF0LWljb24+cGVvcGxlPC9tYXQtaWNvbj5cbiAgICAgICAgICBSb2xlc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9yb2xlLXBlcm1pc3Npb25zJ11cIlxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy51c2VyQ29uZmlnPy5zaG93UGVybWlzc2lvbnNcIj5cbiAgICAgICAgICA8bWF0LWljb24+bG9jazwvbWF0LWljb24+XG4gICAgICAgICAgUm9sZSBQZXJtaXNzaW9uc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9jb25maWd1cmF0aW9ucyddXCJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0NvbmZpZ3VyYXRpb25zICYmIGN1cnJlbnRVc2VyPy51c2VyX3R5cGVfaWQgPT09IDJcIj5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XG4gICAgICAgICAgICAgIHRvZ2dsZV9vblxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgQ29uZmlndXJhdGlvbnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcmVzdHJpY3RvcnMnXVwiXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnVzZXJDb25maWc/LnNob3dSZXN0cmljdG9ycyAmJiBjdXJyZW50VXNlcj8udXNlcl90eXBlX2lkID09PSAyXCI+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxuICAgICAgICAgICAgICB2cG5fbG9ja1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgUmVzdHJpY3RvcnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz0nZmwtbWQnPlxuICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IG5hbWUsIGVtYWlsXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz0nZmwtc20nPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Um9sZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvcm9sZXNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInJvbGVfaWRzXCJcbiAgICAgICAgICAgIHRpdGxlRmllbGQ9XCJsYWJlbFwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz0nbWItNCcgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgW2hpZGVNdWx0aXBsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCIgbXVsdGlwbGU+XG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiZW5hYmxlZFwiPkVuYWJsZWQ8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImRpc2FibGVkXCI+RGlzYWJsZWQ8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbiAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMiBwLTBcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwibW9kZWxzXCIgY2xhc3M9XCJ3LTEwMFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJVc2Vyc1wiIGluZmluaXRlU2Nyb2xsXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIFtpbmZpbml0ZVNjcm9sbENvbnRhaW5lcl09XCJzY3JvbGxDb250YWluZXJcIlxuICAgICAgICBbZnJvbVJvb3RdPVwidHJ1ZVwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgbWF0U29ydCAobWF0U29ydENoYW5nZSk9XCJzb3J0Q29sdW1uKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBJbmRleCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXg7XCI+IHt7IGkgKyAxIH19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTmFtZSBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyPVwibmFtZVwiICptYXRIZWFkZXJDZWxsRGVmPiBOYW1lIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltlbGVtZW50Py5pZF1cIiBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQubmFtZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDwhLS0gIWVsZW1lbnQ/LnVzZXJfY2xpZW50IGNvbmRpdGlvbiBhZGRlZCB0byBjaGVjayBpZiB1c2VyIGhhcyB1c2VyX2NsaWVudCByZWNvcmQgLS0+XG4gICAgICAgICAgICAgIHt7ICFlbGVtZW50Py51c2VyX2NsaWVudCA/ICcnIDogZWxlbWVudD8udXNlcl9jbGllbnQ/LmlzX2VuYWJsZWQgPyAnRW5hYmxlZCcgOiAnRGlzYWJsZWQnIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBFbWFpbCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZW1haWxcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cImVtYWlsXCIgKm1hdEhlYWRlckNlbGxEZWY+IEVtYWlsIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmVtYWlsfX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUeXBlIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0eXBlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBtYXQtc29ydC1oZWFkZXI9XCJ1c2VyX3R5cGVfaWRcIiAqbWF0SGVhZGVyQ2VsbERlZj4gVXNlciBUeXBlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3sgZ2V0VXNlclR5cGUoZWxlbWVudCkgfX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSb2xlcyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicm9sZXNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBSb2xlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBmbGV4LXdyYXAgdGV4dC1saWdodFwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBlbGVtZW50Py5yb2xlc1wiIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAge3sgcm9sZT8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBMYXN0IExvZ2luIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYXN0X2xvZ2luXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTGFzdCBMb2dpbiA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ubGFzdF9sb2dpbiB8IGRhdGU6J21lZGl1bScgfX08L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEFkZGVkIEJ5IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhZGRlZF9ieVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFkZGVkIEJ5IDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IGVsZW1lbnQ/LmNyZWF0b3I/Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGUgfX08L3A+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQWN0aW9uIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJyBuYW1lPVwidmlld1wiIGNsYXNzPVwiY2xpY2thYmxlXCIgW3JvdXRlckxpbmtdPVwiW2VsZW1lbnQ/LmlkXVwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlZpZXdcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuXG4gICAgICAgICAgICAgIDxhcHAtdGVjaGxpZnktZm9ybS1idXR0b24gW2NvbXBvbmVudF09XCJ1c2VyRm9ybUNvbXBvbmVudFwiIFttb2RlbF09XCJlbGVtZW50XCIgY2xhc3M9XCJjbGlja2FibGVcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cIntjbGllbnRfaWQ6IGN1cnJlbnRVc2VyPy5jbGllbnRfaWR9XCIgbWF0VG9vbHRpcD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfdXBkYXRlJylcIlxuICAgICAgICAgICAgICAgIChzYXZlZCk9XCJtb2RlbHNVcGRhdGVkQnlJZCgkZXZlbnQpXCI+PC9hcHAtdGVjaGxpZnktZm9ybS1idXR0b24+XG5cbiAgICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigndXNlcl9kZWxldGUnKSAmJiBlbGVtZW50Py5pZCAhPT0gY3VycmVudFVzZXI/LmlkXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZWxlbWVudFwiIFtzZXJ2aWNlXT1cInNlcnZpY2VcIiBbZGF0YV09XCJ7dGl0bGU6IGVsZW1lbnQ/Lm5hbWUsIHR5cGU6ICd1c2VyJ31cIlxuICAgICAgICAgICAgICAgIChkZWxldGVkKT1cIm1vZGVsc0RlbGV0ZWRCeUlkKGVsZW1lbnQpXCI+PC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3RlY2hsaWZ5X3JiYWMudXNlci5yZXNldF9wYXNzd29yZCcpXCIgbmFtZT1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZVwiIChjbGljayk9XCJyZXNldFBhc3N3b3JkKGVsZW1lbnQpXCIgbWF0VG9vbHRpcD1cIlJlc2V0IFVzZXIgUGFzc3dvcmRcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuXG4gICAgICAgICAgICAgIDxhcHAtdXNlci1lbmFibGUtYnV0dG9uIFt1c2VyXT1cImVsZW1lbnRcIiAob25TYXZlKT1cInJlbG9hZCgpXCI+PC9hcHAtdXNlci1lbmFibGUtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzV29ya2luZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxr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O3dCQUMzQixzQkFBc0I7cUJBQ3ZCOzZNQUlRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBDdXJyZW50VXNlclNlcnZpY2UgfSBmcm9tICcuLi9jdXJyZW50LXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3VzZXItZm9ybS91c2VyLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZywgVXNlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFRlY2hsaWZ5TGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtbW9kZWwnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2VhcmNoYWJsZS1zZWxlY3Rvci9zZWFyY2hhYmxlLXNlbGVjdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBUZWNobGlmeUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi90ZWNobGlmeS1pY29uL3RlY2hsaWZ5LWljb24ubW9kdWxlJztcbmltcG9ydCB7IFRlY2hsaWZ5RGVsZXRlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGVsZXRlLWJ1dHRvbi90ZWNobGlmeS1kZWxldGUtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZWNobGlmeUZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWJ1dHRvbi90ZWNobGlmeS1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckVuYWJsZUJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL3VzZXItZW5hYmxlLWJ1dHRvbi1jb21wb25lbnQvdXNlci1lbmFibGUtYnV0dG9uLm1vZHVsZSc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlGb3JtQnV0dG9uQ29tcG9uZW50LFxuICAgIFVzZXJFbmFibGVCdXR0b25Nb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgdXNlclR5cGVJZHM6IG51bWJlcltdID0gW107XG5cbiAgY3VycmVudFVzZXI6IFVzZXI7XG4gIGNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuICB1c2VyOiBVc2VyO1xuICBASW5wdXQoKSB0aXRsZSA9ICdVc2VyIE1hbmFnZW1lbnQnO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnaW5kZXgnLFxuICAgICduYW1lJyxcbiAgICAnZW1haWwnLFxuICAgICd0eXBlJyxcbiAgICAncm9sZXMnLFxuICAgICdsYXN0X2xvZ2luJyxcbiAgICAnYWRkZWRfYnknLFxuICAgICdhY3Rpb25zJ1xuICBdO1xuXG4gIHNjcm9sbENvbnRhaW5lciA9ICcubWF0LXNpZGVuYXYtY29udGVudCc7XG4gIG1vZGVsczogYW55W10gPSBbXTtcbiAgdXNlckZvcm1Db21wb25lbnQgPSBVc2VyRm9ybUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnVzZXJDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIHJvbGVfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBzdGF0dXM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICAgIHVzZXJfdHlwZV9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnNjcm9sbENvbnRhaW5lcikge1xuICAgICAgLy8gU2V0IHRvIG51bGwgaWYgc2Nyb2xsIGhhcyB0byBiZSBkb25lIGZyb20gcm9vdFxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIgPSB0aGlzLmNvbmZpZz8uc2Nyb2xsQ29udGFpbmVyID09PSAncm9vdCcgPyBudWxsIDogdGhpcy5jb25maWc/LnNjcm9sbENvbnRhaW5lcjtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvL0luaXRpYWxpemUgZm9ybSBpbiBPbkluaXQuXG4gICAgLy9PbiBjb25zdHJ1Y3RvciBJbnB1dCgpIHZhcmlhYmxlcyB3aWxsIGJlIG51bGwsIHRoYXQgd2lsbCBpbnRyb2R1Y2UgYSBpc3N1ZSBmb3IgYWRtaW4gdmlld1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgcm9sZV9pZHM6IFsnJ10sXG4gICAgICBzdGF0dXM6IFsnZW5hYmxlZCddLFxuICAgICAgc29ydF9ieTogWydpZHxBU0MnXSxcbiAgICAgIHJlbGF0aW9uczogWydyb2xlcyx0eXBlLHVzZXJDbGllbnRzLnR5cGUsY3JlYXRvcix1c2VyQ2xpZW50J10sXG4gICAgICBhcHBlbmRzOiBbJ2xhc3RfbG9naW4nXSxcbiAgICAgIHVzZXJfdHlwZV9pZHM6IHRoaXMudXNlclR5cGVJZHMudG9TdHJpbmcoKVxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlLmdldFVzZXIoKTtcblxuICAgIHRoaXMucGF0Y2hGaWx0ZXJzRnJvbVJvdXRlKCk7XG4gICAgdGhpcy5saXN0ZW5GaWx0ZXJDaGFuZ2VzKCk7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5jdXJyZW50VXNlcj8uY2xpZW50X2lkO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIHN0YXR1czogdGhpcy5maWx0ZXJGb3JtLnZhbHVlLnN0YXR1cyA/IHRoaXMuZmlsdGVyRm9ybS52YWx1ZS5zdGF0dXMudG9TdHJpbmcoKSA6ICcnLFxuICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgcm9sZV9pZHM6IHRoaXMuZmlsdGVyRm9ybT8udmFsdWU/LnJvbGVfaWRzPy50b1N0cmluZygpXG4gICAgfTtcblxuICAgIHRoaXMuc2VydmljZS5pbmRleChwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RlbHMgPSB0aGlzLm1vZGVscy5jb25jYXQocmVzdWx0Py5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3VsdD8ubGFzdF9wYWdlO1xuXG4gICAgICAgIHRoaXMubW9kZWxzLmZvckVhY2goKHVzZXJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGllbnQ6IGFueSA9ICh1c2VyRGF0YT8udXNlcl9jbGllbnRzIGFzIGFueVtdIHx8IFtdKVxuICAgICAgICAgICAgLmZpbmQoKHVzZXJDbGllbnQ6IGFueSkgPT4gdXNlckNsaWVudC5jbGllbnRfaWQgPT09IGNsaWVudElkICYmIHVzZXJDbGllbnQudXNlcl9pZCA9PT0gdXNlckRhdGEuaWQpO1xuICAgICAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgICAgIHVzZXJEYXRhLnVzZXJfdHlwZV9pZCA9IGNsaWVudC51c2VyX3R5cGVfaWQ7XG4gICAgICAgICAgICB1c2VyRGF0YS5jbGllbnRfaWQgPSBjbGllbnQuY2xpZW50X2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2VcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciB0eXBlIGZvciB0aGUgY3VycmVudCBjbGllbnQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFVzZXJcbiAgICovXG4gIGdldFVzZXJUeXBlKHVzZXI6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlckNsaWVudDogYW55ID0gKHVzZXI/LnVzZXJfY2xpZW50cyBhcyBbXSkuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy5jbGllbnRfaWQgPT09IHRoaXMuY3VycmVudFVzZXI/LmNsaWVudF9pZCk7XG4gICAgcmV0dXJuIHVzZXJDbGllbnQ/LnR5cGU/LnRpdGxlIHx8ICcnO1xuICB9XG5cbiAgcmVzZXRQYXNzd29yZCh1c2VyOiBhbnkpIHtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnJlc2V0UGFzc3dvcmQodXNlcilcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2UpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdQYXNzd29yZCByZXNldCBlbWFpbCBzZW50JywgJ3N1Y2Nlc3MnKSk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwieydtLTQnOmNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0RlZmF1bHRNYXJnaW59XCI+XG4gIDxtYXQtY2FyZCBjbGFzcz1cIm1iLTJcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGg1IGNsYXNzPVwibWItMFwiPiB7eyB0aXRsZSB9fSA8L2g1PlxuICAgICAgICA8YXBwLXRlY2hsaWZ5LWZvcm0tYnV0dG9uIFtjb21wb25lbnRdPVwidXNlckZvcm1Db21wb25lbnRcIiBtYXRUb29sdGlwPVwiTmV3IFVzZXJcIlxuICAgICAgICAgIFtkYXRhXT1cIntjbGllbnRfaWQ6IGN1cnJlbnRVc2VyPy5jbGllbnRfaWR9XCJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0FkZFVzZXIgJiYgY3VycmVudFVzZXJTZXJ2aWNlPy5oYXNQZXJtaXNzaW9uKCd1c2VyX2NyZWF0ZScpXCJcbiAgICAgICAgICAoc2F2ZWQpPVwibW9kZWxDcmVhdGVkKCRldmVudClcIj48L2FwcC10ZWNobGlmeS1mb3JtLWJ1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9pbXBvcnQnXVwiXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnVzZXJDb25maWc/LnNob3dJbXBvcnRCdXR0b24gJiYgY3VycmVudFVzZXJTZXJ2aWNlPy5oYXNQZXJtaXNzaW9uKCd1c2VyX2NyZWF0ZScpXCI+XG4gICAgICAgICAgSW1wb3J0IFVzZXJcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcm9sZXMnXVwiICpuZ0lmPVwiY29uZmlnPy51c2VyQ29uZmlnPy5zaG93Um9sZXNcIj5cbiAgICAgICAgICA8bWF0LWljb24+cGVvcGxlPC9tYXQtaWNvbj5cbiAgICAgICAgICBSb2xlc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9yb2xlLXBlcm1pc3Npb25zJ11cIlxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy51c2VyQ29uZmlnPy5zaG93UGVybWlzc2lvbnNcIj5cbiAgICAgICAgICA8bWF0LWljb24+bG9jazwvbWF0LWljb24+XG4gICAgICAgICAgUm9sZSBQZXJtaXNzaW9uc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9jb25maWd1cmF0aW9ucyddXCJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8udXNlckNvbmZpZz8uc2hvd0NvbmZpZ3VyYXRpb25zICYmIGN1cnJlbnRVc2VyPy51c2VyX3R5cGVfaWQgPT09IDJcIj5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XG4gICAgICAgICAgICAgIHRvZ2dsZV9vblxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgQ29uZmlndXJhdGlvbnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcmVzdHJpY3RvcnMnXVwiXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnVzZXJDb25maWc/LnNob3dSZXN0cmljdG9ycyAmJiBjdXJyZW50VXNlcj8udXNlcl90eXBlX2lkID09PSAyXCI+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxuICAgICAgICAgICAgICB2cG5fbG9ja1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgUmVzdHJpY3RvcnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz0nZmwtbWQnPlxuICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IG5hbWUsIGVtYWlsXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz0nZmwtc20nPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Um9sZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvcm9sZXNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInJvbGVfaWRzXCJcbiAgICAgICAgICAgIHRpdGxlRmllbGQ9XCJsYWJlbFwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz0nbWItNCcgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgW2hpZGVNdWx0aXBsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCIgbXVsdGlwbGU+XG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiZW5hYmxlZFwiPkVuYWJsZWQ8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImRpc2FibGVkXCI+RGlzYWJsZWQ8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbiAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMiBwLTBcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwibW9kZWxzXCIgY2xhc3M9XCJ3LTEwMFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJVc2Vyc1wiIGluZmluaXRlU2Nyb2xsXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIFtpbmZpbml0ZVNjcm9sbENvbnRhaW5lcl09XCJzY3JvbGxDb250YWluZXJcIlxuICAgICAgICBbZnJvbVJvb3RdPVwidHJ1ZVwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgbWF0U29ydCAobWF0U29ydENoYW5nZSk9XCJzb3J0Q29sdW1uKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBJbmRleCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXg7XCI+IHt7IGkgKyAxIH19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTmFtZSBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyPVwibmFtZVwiICptYXRIZWFkZXJDZWxsRGVmPiBOYW1lIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltlbGVtZW50Py5pZF1cIiBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQubmFtZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDwhLS0gIWVsZW1lbnQ/LnVzZXJfY2xpZW50IGNvbmRpdGlvbiBhZGRlZCB0byBjaGVjayBpZiB1c2VyIGhhcyB1c2VyX2NsaWVudCByZWNvcmQgLS0+XG4gICAgICAgICAgICAgIHt7ICFlbGVtZW50Py51c2VyX2NsaWVudCA/ICcnIDogZWxlbWVudD8udXNlcl9jbGllbnQ/LmlzX2VuYWJsZWQgPyAnRW5hYmxlZCcgOiAnRGlzYWJsZWQnIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBFbWFpbCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZW1haWxcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cImVtYWlsXCIgKm1hdEhlYWRlckNlbGxEZWY+IEVtYWlsIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmVtYWlsfX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUeXBlIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0eXBlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBtYXQtc29ydC1oZWFkZXI9XCJ1c2VyX3R5cGVfaWRcIiAqbWF0SGVhZGVyQ2VsbERlZj4gVXNlciBUeXBlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3sgZ2V0VXNlclR5cGUoZWxlbWVudCkgfX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSb2xlcyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicm9sZXNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBSb2xlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBmbGV4LXdyYXAgdGV4dC1saWdodFwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBlbGVtZW50Py5yb2xlc1wiIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAge3sgcm9sZT8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBMYXN0IExvZ2luIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYXN0X2xvZ2luXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTGFzdCBMb2dpbiA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ubGFzdF9sb2dpbiB8IGRhdGU6J21lZGl1bScgfX08L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEFkZGVkIEJ5IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhZGRlZF9ieVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFkZGVkIEJ5IDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IGVsZW1lbnQ/LmNyZWF0b3I/Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGUgfX08L3A+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQWN0aW9uIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJyBuYW1lPVwidmlld1wiIGNsYXNzPVwiY2xpY2thYmxlXCIgW3JvdXRlckxpbmtdPVwiW2VsZW1lbnQ/LmlkXVwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlZpZXdcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuXG4gICAgICAgICAgICAgIDxhcHAtdGVjaGxpZnktZm9ybS1idXR0b24gW2NvbXBvbmVudF09XCJ1c2VyRm9ybUNvbXBvbmVudFwiIFttb2RlbF09XCJlbGVtZW50XCIgY2xhc3M9XCJjbGlja2FibGVcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cIntjbGllbnRfaWQ6IGN1cnJlbnRVc2VyPy5jbGllbnRfaWR9XCIgbWF0VG9vbHRpcD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfdXBkYXRlJylcIlxuICAgICAgICAgICAgICAgIChzYXZlZCk9XCJtb2RlbHNVcGRhdGVkQnlJZCgkZXZlbnQpXCI+PC9hcHAtdGVjaGxpZnktZm9ybS1idXR0b24+XG5cbiAgICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigndXNlcl9kZWxldGUnKSAmJiBlbGVtZW50Py5pZCAhPT0gY3VycmVudFVzZXI/LmlkXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZWxlbWVudFwiIFtzZXJ2aWNlXT1cInNlcnZpY2VcIiBbZGF0YV09XCJ7dGl0bGU6IGVsZW1lbnQ/Lm5hbWUsIHR5cGU6ICd1c2VyJ31cIlxuICAgICAgICAgICAgICAgIChkZWxldGVkKT1cIm1vZGVsc0RlbGV0ZWRCeUlkKGVsZW1lbnQpXCI+PC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3RlY2hsaWZ5X3JiYWMudXNlci5yZXNldF9wYXNzd29yZCcpXCIgbmFtZT1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZVwiIChjbGljayk9XCJyZXNldFBhc3N3b3JkKGVsZW1lbnQpXCIgbWF0VG9vbHRpcD1cIlJlc2V0IFVzZXIgUGFzc3dvcmRcIj48L2FwcC10ZWNobGlmeS1pY29uPlxuXG4gICAgICAgICAgICAgIDxhcHAtdXNlci1lbmFibGUtYnV0dG9uIFt1c2VyXT1cImVsZW1lbnRcIiAob25TYXZlKT1cIm1vZGVsc1VwZGF0ZWRCeUlkKCRldmVudClcIj48L2FwcC11c2VyLWVuYWJsZS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgICAgPC90YWJsZT5cbiAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNXb3JraW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuPC9kaXY+Il19
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export * from './num-items-selector.component';
|
|
2
2
|
export * from './date-utils.service';
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3V0aWxpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL251bS1pdGVtcy1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXV0aWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXItc2VsZWN0b3IuY29tcG9uZW50JzsiXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3V0aWxpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9udW0taXRlbXMtc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS11dGlscy5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
|
-
/* Selectors */
|
|
5
4
|
import { NumItemsSelector } from './num-items-selector.component';
|
|
6
|
-
import { NumberSelector } from './number-selector.component';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
export class UtilityModule {
|
|
9
7
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: UtilityModule, declarations: [NumItemsSelector
|
|
11
|
-
FormsModule], exports: [NumItemsSelector
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: UtilityModule, declarations: [NumItemsSelector], imports: [CommonModule,
|
|
9
|
+
FormsModule], exports: [NumItemsSelector] }); }
|
|
12
10
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilityModule, imports: [CommonModule,
|
|
13
11
|
FormsModule] }); }
|
|
14
12
|
}
|
|
@@ -20,9 +18,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
20
18
|
FormsModule,
|
|
21
19
|
],
|
|
22
20
|
declarations: [
|
|
23
|
-
NumItemsSelector,
|
|
21
|
+
NumItemsSelector,
|
|
24
22
|
],
|
|
25
|
-
exports: [NumItemsSelector
|
|
23
|
+
exports: [NumItemsSelector]
|
|
26
24
|
}]
|
|
27
25
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3V0aWxpdHkvdXRpbGl0eS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVlsRSxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBSmxCLGdCQUFnQixhQUpoQixZQUFZO1lBQ1osV0FBVyxhQUtMLGdCQUFnQjtnSEFFakIsYUFBYSxZQVJsQixZQUFZO1lBQ1osV0FBVzs7NEZBT04sYUFBYTtrQkFWekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3FCQUNkO29CQUNELFlBQVksRUFBRTt3QkFDVixnQkFBZ0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdW1JdGVtc1NlbGVjdG9yIH0gZnJvbSAnLi9udW0taXRlbXMtc2VsZWN0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgTnVtSXRlbXNTZWxlY3RvcixcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOdW1JdGVtc1NlbGVjdG9yXVxufSlcbmV4cG9ydCBjbGFzcyBVdGlsaXR5TW9kdWxlIHsgfVxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -140,6 +140,7 @@ export * from './lib/techlify-company-switcher';
|
|
|
140
140
|
export * from './lib/file-dragdrop-uploader/file-dragdrop-uploader/file-dragdrop-uploader.component';
|
|
141
141
|
export * from './lib/file-dragdrop-uploader/file-dragdrop-uploader.module';
|
|
142
142
|
export * from './lib/number-input-button';
|
|
143
|
+
export * from './lib/number-selector/number-selector.component';
|
|
143
144
|
export * from './lib/column-selector';
|
|
144
145
|
export * from './lib/reset-password';
|
|
145
146
|
export * from './lib/reset-password/reset-password.module';
|
|
@@ -226,4 +227,4 @@ export * from './lib/tag/tag.service';
|
|
|
226
227
|
export * from './lib/techlify-auto-complete-select/techlify-auto-complete-select.component';
|
|
227
228
|
//Techlify currency pipe
|
|
228
229
|
export * from './lib/techlify-currency-pipe/techlify-currency-pipe.directive';
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBRTNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELDZHQUE2RztBQUM3RyxPQUFPLEVBQUUsb0JBQW9CLElBQUksd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU5RyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0REFBNEQsQ0FBQztBQUUzRSxjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMseUZBQXlGLENBQUM7QUFDeEcsY0FBYyxtSEFBbUgs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QyxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsa0RBQWtELENBQUM7QUFFakUsb0JBQW9CO0FBQ3BCLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyw2RkFBNkYsQ0FBQztBQUM1RyxjQUFjLHFHQUFxRyxDQUFDO0FBQ3BILGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYyx5RkFBeUYsQ0FBQztBQUV4RyxhQUFhO0FBQ2IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELGVBQWU7QUFDZixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxxRUFBcUUsQ0FBQztBQUVwRixZQUFZO0FBQ1osY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxhQUFhO0FBQ2IsY0FBYyx1RUFBdUUsQ0FBQztBQUN0RixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsK0JBQStCO0FBQy9CLGNBQWMsNkVBQTZFLENBQUM7QUFFNUYsd0JBQXdCO0FBQ3hCLGNBQWMsK0RBQStELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC10ZWNobGlmeS1jb3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9uLXBvcHVwJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtbW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb2N1bWVudC12aWV3ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW50aXR5LWZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtZHJvcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaGFibGUtc2VsZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lbGluZS1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXRlcmlhbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb24tcG9wdXAvYWN0aW9uLXBvcHVwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvY3VtZW50LXZpZXdlci9kb2N1bWVudC12aWV3ZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudGl0eS1maWxlcy9lbnRpdHktZmlsZS1saXN0Lm1vZHVsZSc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRW50aXR5RmlsZUxpc3RNb2R1bGUg4oCUIGtlcHQgYmVjYXVzZSBuZ3gtdGVjaGxpZnktY2hlY2tzaGVldCBzdGlsbCBpbXBvcnRzIHRoZSBvbGQgbmFtZSAqL1xuZXhwb3J0IHsgRW50aXR5RmlsZUxpc3RNb2R1bGUgYXMgRW50aXR5RmlsZXNWaWV3QWxsTW9kdWxlIH0gZnJvbSAnLi9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlLWxpc3QubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS1kcm9wcGVyL2ZpbGUtZHJvcHBlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90ZS9ub3RlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWFyY2hhYmxlLXNlbGVjdG9yL3NlYXJjaGFibGUtc2VsZWN0b3IubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxpdHkvdXRpbGl0eS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGltZWxpbmUtZmlsdGVyL3RpbWVsaW5lLWZpbHRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGVyL2xvYWRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItZm9ybS9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItZm9ybS9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1mb3JtLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0L2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0L2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3Qtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QtZmlsdGVyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QtZmlsdGVyLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0LWZpbHRlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0LWZpbHRlci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtZm9ybS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1mb3JtLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1mb3JtL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWZvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1saXN0L2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWxpc3Qtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWxpc3QvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtbGlzdC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1saXN0LWZpbHRlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXVwZGF0ZS90ZWNobGlmeS11cGRhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXVwZGF0ZS90ZWNobGlmeS11cGRhdGUtaGlzdG9yeS90ZWNobGlmeS11cGRhdGUtaGlzdG9yeS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdXBkYXRlL3VwZGF0ZS1ub3RpZmllci91cGRhdGUtbm90aWZpZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXVwZGF0ZS91cGRhdGUtbm90aWZpZXIvdXBkYXRlLW5vdGlmaWVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS11cGRhdGUvdGVjaGxpZnktdXBkYXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdXBkYXRlL3RlY2hsaWZ5LXVwZGF0ZXMtdGVhc2VyL3RlY2hsaWZ5LXVwZGF0ZXMtdGVhc2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS11cGRhdGUvdGVjaGxpZnktdXBkYXRlcy10ZWFzZXIvdGVjaGxpZnktdXBkYXRlcy10ZWFzZXIuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhwb3J0LWV4Y2VsL2V4cG9ydC1leGNlbC1idXR0b24vZXhwb3J0LWV4Y2VsLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhwb3J0LWV4Y2VsL2V4cG9ydC1leGNlbC5tb2R1bGUnO1xuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctZm9yLW1vZGVsL2F1ZGl0LWxvZy1mb3ItbW9kZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctZm9yLW1vZGVsL2F1ZGl0LWxvZy1mb3ItbW9kZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctZm9yLW1vZGVsL2F1ZGl0LWxvZy1mb3ItbW9kZWwtcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2ctbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1saXN0L2F1ZGl0LWxvZy1saXN0LXJvdXRpbmcubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1saXN0LWZpbHRlci9hdWRpdC1sb2ctbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctbGlzdC1maWx0ZXIvYXVkaXQtbG9nLWxpc3QtZmlsdGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QtZmlsdGVyL2F1ZGl0LWxvZy1saXN0LWZpbHRlci1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctdmlldy9hdWRpdC1sb2ctdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy12aWV3L2F1ZGl0LWxvZy12aWV3Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLXZpZXcvYXVkaXQtbG9nLXZpZXctcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLXZpZXctbW9kZWwvYXVkaXQtbG9nLXZpZXctbW9kZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctdmlldy1tb2RlbC9hdWRpdC1sb2ctdmlldy1tb2RlbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy12aWV3LW1vZGVsL2F1ZGl0LWxvZy12aWV3LW1vZGVsLXJvdXRpbmcubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZ3Mtdmlldy1tb2RlbC9hdWRpdC1sb2dzLXZpZXctbW9kZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2dzLXZpZXctbW9kZWwvYXVkaXQtbG9ncy12aWV3LW1vZGVsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9ncy12aWV3LW1vZGVsL2F1ZGl0LWxvZ3Mtdmlldy1tb2RlbC1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbXBvcnQtY3N2L2ltcG9ydC1jc3YubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wb3J0LWNzdi9pbXBvcnQtY3N2LWNvbmZpZyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luLWhpc3RvcnktZm9yLXVzZXIvbG9naW4taGlzdG9yeS1mb3ItdXNlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4taGlzdG9yeS1mb3ItdXNlci9sb2dpbi1oaXN0b3J5LWZvci11c2VyLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luLWhpc3RvcnktZm9yLXVzZXIvbG9naW4taGlzdG9yeS1mb3ItdXNlci5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWcvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90ZWNobGlmeS10YWdnZXItdGFnLXNlbGVjdG9yL3RlY2hsaWZ5LXRhZ2dlci10YWctc2VsZWN0b3IubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90ZWNobGlmeS10YWdnZXItdGFnLXNlbGVjdG9yL3RlY2hsaWZ5LXRhZ2dlci10YWctc2VsZWN0b3IuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVhZC1tb3JlL3JlYWQtbW9yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVhZC1tb3JlL3JlYWQtbW9yZS5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS5yb3V0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS1saXN0aW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUtZW5hYmxlZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLWRpcmVjdGl2ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXF1ZXN0LWhlbHBlci9yZXF1ZXN0LWhlbHBlci5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9yZ290LXBhc3N3b3JkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWdudXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci1zZWxlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL3VzZXItZW5hYmxlLWJ1dHRvbi1jb21wb25lbnQvdXNlci1lbmFibGUtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luL2xvZ2luLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9maWxlL3Byb2ZpbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvbGUvcm9sZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZS9yb2xlLXZpZXcvcm9sZS12aWV3Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlL3JvbGUtdmlldy9yb2xlLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hZG1pbi1yb2xlL2FkbWluLXJvbGUtbGlzdC9hZG1pbi1yb2xlLWxpc3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hZG1pbi1yb2xlL2FkbWluLXJvbGUtbGlzdC9hZG1pbi1yb2xlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hZG1pbi1yb2xlL2FkbWluLXJvbGUtcGVybWlzc2lvbi1mb3JtL2FkbWluLXJvbGUtcGVybWlzc2lvbi1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtYWRtaW4vYWRtaW4tcm9sZS9hZG1pbi1yb2xlLXBlcm1pc3Npb24tZm9ybS9hZG1pbi1yb2xlLXBlcm1pc3Npb24tZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLWFkbWluL2FkbWluLXJvbGUvYWRtaW4tcm9sZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvbGUvcm9sZS12aWV3L3JvbGUtdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZS9yb2xlLWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlL3JvbGUtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZS9wZXJtaXNzaW9uL3Blcm1pc3Npb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ251cC9zaWdudXAubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXItc2VsZWN0b3IvdXNlci1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL3VzZXItdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWNjZXNzLWNvbnRyb2wtY29uZmlnL2FjY2Vzcy1jb250cm9sLWNvbmZpZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXRlY2hsaWZ5LXVzZXJzL25neC10ZWNobGlmeS11c2Vycy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzdHJpY3RvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktY29tcGFueS1zd2l0Y2hlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtZHJhZ2Ryb3AtdXBsb2FkZXIvZmlsZS1kcmFnZHJvcC11cGxvYWRlci9maWxlLWRyYWdkcm9wLXVwbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLWRyYWdkcm9wLXVwbG9hZGVyL2ZpbGUtZHJhZ2Ryb3AtdXBsb2FkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL251bWJlci1pbnB1dC1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sdW1uLXNlbGVjdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzZXQtcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcGFueS1pbmZvcm1hdGlvbi90ZW5hbnQtZm9ybS1idXR0b24vdGVuYW50LWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYW55LWluZm9ybWF0aW9uL2NvbXBhbnktaW5mb3JtYXRpb24vY29tcGFueS1pbmZvcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcGFueS1pbmZvcm1hdGlvbi9jb21wYW55LWluZm8tZGlzcGxheS9jb21wYW55LWluZm8tZGlzcGxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcGFueS1pbmZvcm1hdGlvbi9jbGllbnQuc2VydmljZSc7XG5cbi8vIEV4cG9ydCBsb2dpbiBtb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luL2xvZ2luLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2dpbi9sb2dpbi1mb3JtLWZpZWxkcy9sb2dpbi1mb3JtLWZpZWxkcy5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtYWRtaW4vYXBwLWFkbWluLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtYWRtaW4vYXBwLWFkbWluLWhvbWUvYXBwLWFkbWluLWhvbWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi90ZW5hbnQvdGVuYW50LWxpc3Qtd2lkZ2V0L3RlbmFudC1saXN0LXdpZGdldC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy93cmFwLnBpcGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLW1lbnUvdXNlci1tZW51Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLW1lbnUvdXNlci1tZW51LmNvbXBvbmVudCc7XG5cbi8vQXBwIEFkbWluIHVzZXIgdmlld1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci9hcHAtYWRtaW4tdXNlci12aWV3L2FwcC1hZG1pbi11c2VyLXZpZXcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvYXBwLWFkbWluLXVzZXItdmlldy9hcHAtYWRtaW4tdXNlci12aWV3LmNvbXBvbmVudCc7XG5cbi8vQXBwIEFkbWluIHVzZXIgbGlzdFxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci9hcHAtYWRtaW4tdXNlci1saXN0L2FwcC1hZG1pbi11c2VyLWxpc3QuY29tcG9uZW50JztcblxuLy9Vc2VyIGVuYWJsZSBidXR0b25cbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50JztcblxuLy9UZWNobGlmeSBpY29uXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1pY29uL3RlY2hsaWZ5LWljb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWljb24vdGVjaGxpZnktaWNvbi5jb21wb25lbnQnO1xuXG4vL1BERiBCdXR0b25cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BkZi1idXR0b24vcGRmLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGRmLWJ1dHRvbi9wZGYtYnV0dG9uLmNvbXBvbmVudCc7XG5cbi8vQ3VzdG9tIEljb25cbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1pY29uL2N1c3RvbS1pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20taWNvbi9jdXN0b20taWNvbi5jb21wb25lbnQnO1xuXG4vL0FwcCBTZWxlY3RvclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktYXBwLXNlbGVjdG9yL3RlY2hsaWZ5LWFwcC1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktYXBwLXNlbGVjdG9yL3RlY2hsaWZ5LWFwcC1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG4vL1N1YnNjcmlwdGlvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi1mb3JtL3N1YnNjcmlwdGlvbi1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLWZvcm0vc3Vic2NyaXB0aW9uLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tbGlzdGluZy9zdWJzY3JpcHRpb24tbGlzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi1saXN0aW5nL3N1YnNjcmlwdGlvbi1saXN0aW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2UtbGlzdGluZy9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2Utdmlldy9zdWJzY3JpcHRpb24tcGFja2FnZS12aWV3Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLXBhY2thZ2Utdmlldy9zdWJzY3JpcHRpb24tcGFja2FnZS12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uL3RlY2hsaWZ5LXN1YnNjcmlwdGlvbi1kaXJlY3RpdmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi90ZWNobGlmeS1zdWJzY3JpcHRpb24uZGlyZWN0aXZlJztcblxuLy9UaW1lbGluZSBIaXN0b3J5XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lbGluZS1hY3Rpdml0eS90aW1lbGluZS1hY3Rpdml0eS1idXR0b24vdGltZWxpbmUtYWN0aXZpdHktYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lbGluZS1hY3Rpdml0eS90aW1lbGluZS1hY3Rpdml0eS1idXR0b24vdGltZWxpbmUtYWN0aXZpdHktYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWVsaW5lLWFjdGl2aXR5L3RpbWVsaW5lLWFjdGl2aXR5LWxpc3QvdGltZWxpbmUtYWN0aXZpdHktbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGltZWxpbmUtYWN0aXZpdHkvdGltZWxpbmUtYWN0aXZpdHktbGlzdC90aW1lbGluZS1hY3Rpdml0eS1saXN0LmNvbXBvbmVudCc7XG5cbi8vRXhwb3J0IGxvY2FsIGRhdGUgcGFyc2VyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbC1kYXRlLXBhcnNlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZWxldGUtYnV0dG9uL3RlY2hsaWZ5LWRlbGV0ZS1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tYnV0dG9uL3RlY2hsaWZ5LWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5cbi8vRm9ybSBDb25maWd1cmF0aW9uXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLWZvcm0uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLWZvcm0tZmllbGQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLXV0aWxpdHkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLWZpZWxkLWZvcm0vZm9ybS1jb25maWd1cmF0aW9uLWZpZWxkLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZmllbGQtZm9ybS9mb3JtLWNvbmZpZ3VyYXRpb24tZmllbGQtZm9ybS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1jb25maWd1cmF0aW9uL2Zvcm0tY29uZmlndXJhdGlvbi1maWVsZC1mb3JtL2Zvcm0tY29uZmlndXJhdGlvbi1maWVsZC1mb3JtLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0vZm9ybS1jb25maWd1cmF0aW9uLWZvci1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLWZvci1mb3JtL2Zvcm0tY29uZmlndXJhdGlvbi1mb3ItZm9ybS5tb2R1bGUnO1xuXG4vL0xvY2tlZCBEYXRlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NrZWQtZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NrZWQtZGF0ZS9sb2NrZWQtZGF0ZS5tb2R1bGUnO1xuXG4vL1RlY2hsaWZ5IFZpZXdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXZpZXcvbXktdGVjaGxpZnktdmlldy1saXN0aW5nL215LXRlY2hsaWZ5LXZpZXcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS12aWV3L215LXRlY2hsaWZ5LXZpZXctbGlzdGluZy9teS10ZWNobGlmeS12aWV3LWxpc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXZpZXcvbXktdGVjaGxpZnktdmlldy1saXN0aW5nL215LXRlY2hsaWZ5LXZpZXctbGlzdGluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdmlldy90ZWNobGlmeS12aWV3LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdmlldy90ZWNobGlmeS12aWV3LWZvcm0vdGVjaGxpZnktdmlldy1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS12aWV3L3RlY2hsaWZ5LXZpZXctZm9ybS90ZWNobGlmeS12aWV3LWZvcm0uY29tcG9uZW50JztcblxuLy9WYWxpZGF0b3JzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0b3JzL2RhdGUudmFsaWRhdG9yJztcblxuLy9UYWdnZXIgQ1JVRFxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctbGlzdC90ZWNobGlmeS10YWdnZXItdGFnLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0vdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWcvdGFnLnNlcnZpY2UnO1xuXG4vL1RlY2hsaWZ5IGF1dG8gY29tcGxldGUgc2VsZWN0XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1hdXRvLWNvbXBsZXRlLXNlbGVjdC90ZWNobGlmeS1hdXRvLWNvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQnO1xuXG4vL1RlY2hsaWZ5IGN1cnJlbmN5IHBpcGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWN1cnJlbmN5LXBpcGUvdGVjaGxpZnktY3VycmVuY3ktcGlwZS5kaXJlY3RpdmUnO1xuIl19
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBRTNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELDZHQUE2RztBQUM3RyxPQUFPLEVBQUUsb0JBQW9CLElBQUksd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU5RyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0REFBNEQsQ0FBQztBQUUzRSxjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMseUZBQXlGLENBQUM7QUFDeEcsY0FBYyxtSEFBbUgs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QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSxvQkFBb0I7QUFDcEIsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLDZGQUE2RixDQUFDO0FBQzVHLGNBQWMscUdBQXFHLENBQUM7QUFDcEgsY0FBYyw0RkFBNEYsQ0FBQztBQUMzRyxjQUFjLHlGQUF5RixDQUFDO0FBRXhHLGFBQWE7QUFDYixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsZUFBZTtBQUNmLGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYyw4RUFBOEUsQ0FBQztBQUM3RixjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHFFQUFxRSxDQUFDO0FBRXBGLFlBQVk7QUFDWixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGFBQWE7QUFDYixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QywrQkFBK0I7QUFDL0IsY0FBYyw2RUFBNkUsQ0FBQztBQUU1Rix3QkFBd0I7QUFDeEIsY0FBYywrREFBK0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXRlY2hsaWZ5LWNvcmVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb24tcG9wdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvY3VtZW50LXZpZXdlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnRpdHktZmlsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS1kcm9wcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VhcmNoYWJsZS1zZWxlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWVsaW5lLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21hdGVyaWFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2NvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbi1wb3B1cC9hY3Rpb24tcG9wdXAubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlLWxpc3QubW9kdWxlJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBFbnRpdHlGaWxlTGlzdE1vZHVsZSDigJQga2VwdCBiZWNhdXNlIG5neC10ZWNobGlmeS1jaGVja3NoZWV0IHN0aWxsIGltcG9ydHMgdGhlIG9sZCBuYW1lICovXG5leHBvcnQgeyBFbnRpdHlGaWxlTGlzdE1vZHVsZSBhcyBFbnRpdHlGaWxlc1ZpZXdBbGxNb2R1bGUgfSBmcm9tICcuL2xpYi9lbnRpdHktZmlsZXMvZW50aXR5LWZpbGUtbGlzdC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLWRyb3BwZXIvZmlsZS1kcm9wcGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RlL25vdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbGl0eS91dGlsaXR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lbGluZS1maWx0ZXIvdGltZWxpbmUtZmlsdGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXIvbG9hZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1ub3RpZmljYXRpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1mb3JtL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWZvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tdXNlci1mb3JtL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWZvcm0tcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItbGlzdC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItbGlzdC1maWx0ZXIvZW1haWwtc3Vic2NyaXB0aW9uLXVzZXItbGlzdC1maWx0ZXItcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QtZmlsdGVyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QtZmlsdGVyLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1mb3JtL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWZvcm0tcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWZvcm0vZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtZm9ybS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWxpc3QvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtbGlzdC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFpbC1zdWJzY3JpcHRpb24vZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUvZW1haWwtc3Vic2NyaXB0aW9uLXR5cGUtbGlzdC9lbWFpbC1zdWJzY3JpcHRpb24tdHlwZS1saXN0Lm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXIvZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYWlsLXN1YnNjcmlwdGlvbi9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlL2VtYWlsLXN1YnNjcmlwdGlvbi10eXBlLWxpc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyL2VtYWlsLXN1YnNjcmlwdGlvbi11c2VyLWxpc3QtZmlsdGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdXBkYXRlL3RlY2hsaWZ5LXVwZGF0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdXBkYXRlL3RlY2hsaWZ5LXVwZGF0ZS1oaXN0b3J5L3RlY2hsaWZ5LXVwZGF0ZS1oaXN0b3J5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS11cGRhdGUvdXBkYXRlLW5vdGlmaWVyL3VwZGF0ZS1ub3RpZmllci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdXBkYXRlL3VwZGF0ZS1ub3RpZmllci91cGRhdGUtbm90aWZpZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXVwZGF0ZS90ZWNobGlmeS11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS11cGRhdGUvdGVjaGxpZnktdXBkYXRlcy10ZWFzZXIvdGVjaGxpZnktdXBkYXRlcy10ZWFzZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXVwZGF0ZS90ZWNobGlmeS11cGRhdGVzLXRlYXNlci90ZWNobGlmeS11cGRhdGVzLXRlYXNlci5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9leHBvcnQtZXhjZWwvZXhwb3J0LWV4Y2VsLWJ1dHRvbi9leHBvcnQtZXhjZWwtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leHBvcnQtZXhjZWwvZXhwb3J0LWV4Y2VsLm1vZHVsZSc7XG5cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1mb3ItbW9kZWwvYXVkaXQtbG9nLWZvci1tb2RlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1mb3ItbW9kZWwvYXVkaXQtbG9nLWZvci1tb2RlbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1mb3ItbW9kZWwvYXVkaXQtbG9nLWZvci1tb2RlbC1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2ctbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1saXN0L2F1ZGl0LWxvZy1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLWxpc3Qtcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QtZmlsdGVyL2F1ZGl0LWxvZy1saXN0LWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1saXN0LWZpbHRlci9hdWRpdC1sb2ctbGlzdC1maWx0ZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctbGlzdC1maWx0ZXIvYXVkaXQtbG9nLWxpc3QtZmlsdGVyLXJvdXRpbmcubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy12aWV3L2F1ZGl0LWxvZy12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLXZpZXcvYXVkaXQtbG9nLXZpZXcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctdmlldy9hdWRpdC1sb2ctdmlldy1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2ctdmlldy1tb2RlbC9hdWRpdC1sb2ctdmlldy1tb2RlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy12aWV3LW1vZGVsL2F1ZGl0LWxvZy12aWV3LW1vZGVsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLXZpZXctbW9kZWwvYXVkaXQtbG9nLXZpZXctbW9kZWwtcm91dGluZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9ncy12aWV3LW1vZGVsL2F1ZGl0LWxvZ3Mtdmlldy1tb2RlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZ3Mtdmlldy1tb2RlbC9hdWRpdC1sb2dzLXZpZXctbW9kZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1ZGl0LWxvZy9hdWRpdC1sb2dzLXZpZXctbW9kZWwvYXVkaXQtbG9ncy12aWV3LW1vZGVsLXJvdXRpbmcubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1yb3V0aW5nLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wb3J0LWNzdi9pbXBvcnQtY3N2LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbXBvcnQtY3N2L2ltcG9ydC1jc3YtY29uZmlnJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4taGlzdG9yeS1mb3ItdXNlci9sb2dpbi1oaXN0b3J5LWZvci11c2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2dpbi1oaXN0b3J5LWZvci11c2VyL2xvZ2luLWhpc3RvcnktZm9yLXVzZXItcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4taGlzdG9yeS1mb3ItdXNlci9sb2dpbi1oaXN0b3J5LWZvci11c2VyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWcvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctc2VsZWN0b3IvdGVjaGxpZnktdGFnZ2VyLXRhZy1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctc2VsZWN0b3IvdGVjaGxpZnktdGFnZ2VyLXRhZy1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWFkLW1vcmUvcmVhZC1tb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWFkLW1vcmUvcmVhZC1tb3JlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLnJvdXRpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLWxpc3RpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS1lbmFibGVkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUtZGlyZWN0aXZlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcXVlc3QtaGVscGVyL3JlcXVlc3QtaGVscGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jnb3QtcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ251cCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLXNlbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4vbG9naW4ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUvcHJvZmlsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZS9yb2xlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlL3JvbGUtdmlldy9yb2xlLXZpZXcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvbGUvcm9sZS12aWV3L3JvbGUtdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLWFkbWluL2FkbWluLXJvbGUvYWRtaW4tcm9sZS1saXN0L2FkbWluLXJvbGUtbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLWFkbWluL2FkbWluLXJvbGUvYWRtaW4tcm9sZS1saXN0L2FkbWluLXJvbGUtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLWFkbWluL2FkbWluLXJvbGUvYWRtaW4tcm9sZS1wZXJtaXNzaW9uLWZvcm0vYWRtaW4tcm9sZS1wZXJtaXNzaW9uLWZvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hZG1pbi1yb2xlL2FkbWluLXJvbGUtcGVybWlzc2lvbi1mb3JtL2FkbWluLXJvbGUtcGVybWlzc2lvbi1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtYWRtaW4vYWRtaW4tcm9sZS9hZG1pbi1yb2xlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZS9yb2xlLXZpZXcvcm9sZS12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlL3JvbGUtZm9ybS1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvbGUvcm9sZS1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb2xlL3Blcm1pc3Npb24vcGVybWlzc2lvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbnVwL3NpZ251cC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci1zZWxlY3Rvci91c2VyLXNlbGVjdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL3VzZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvdXNlci12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2Nlc3MtY29udHJvbC1jb25maWcvYWNjZXNzLWNvbnRyb2wtY29uZmlnLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGVjaGxpZnktdXNlcnMvbmd4LXRlY2hsaWZ5LXVzZXJzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN0cmljdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1jb21wYW55LXN3aXRjaGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS1kcmFnZHJvcC11cGxvYWRlci9maWxlLWRyYWdkcm9wLXVwbG9hZGVyL2ZpbGUtZHJhZ2Ryb3AtdXBsb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtZHJhZ2Ryb3AtdXBsb2FkZXIvZmlsZS1kcmFnZHJvcC11cGxvYWRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbnVtYmVyLWlucHV0LWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9udW1iZXItc2VsZWN0b3IvbnVtYmVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2x1bW4tc2VsZWN0b3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNldC1wYXNzd29yZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYW55LWluZm9ybWF0aW9uL3RlbmFudC1mb3JtLWJ1dHRvbi90ZW5hbnQtZm9ybS1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBhbnktaW5mb3JtYXRpb24vY29tcGFueS1pbmZvcm1hdGlvbi9jb21wYW55LWluZm9ybWF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYW55LWluZm9ybWF0aW9uL2NvbXBhbnktaW5mby1kaXNwbGF5L2NvbXBhbnktaW5mby1kaXNwbGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYW55LWluZm9ybWF0aW9uL2NsaWVudC5zZXJ2aWNlJztcblxuLy8gRXhwb3J0IGxvZ2luIG1vZHVsZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4vbG9naW4ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2luL2xvZ2luLWZvcm0tZmllbGRzL2xvZ2luLWZvcm0tZmllbGRzLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hcHAtYWRtaW4ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcC1hZG1pbi9hcHAtYWRtaW4taG9tZS9hcHAtYWRtaW4taG9tZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLWFkbWluL3RlbmFudC90ZW5hbnQtbGlzdC13aWRnZXQvdGVuYW50LWxpc3Qtd2lkZ2V0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3dyYXAucGlwZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXItbWVudS91c2VyLW1lbnUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXItbWVudS91c2VyLW1lbnUuY29tcG9uZW50JztcblxuLy9BcHAgQWRtaW4gdXNlciB2aWV3XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL2FwcC1hZG1pbi11c2VyLXZpZXcvYXBwLWFkbWluLXVzZXItdmlldy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci9hcHAtYWRtaW4tdXNlci12aWV3L2FwcC1hZG1pbi11c2VyLXZpZXcuY29tcG9uZW50JztcblxuLy9BcHAgQWRtaW4gdXNlciBsaXN0XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL2FwcC1hZG1pbi11c2VyLWxpc3QvYXBwLWFkbWluLXVzZXItbGlzdC5jb21wb25lbnQnO1xuXG4vL1VzZXIgZW5hYmxlIGJ1dHRvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLWVuYWJsZS1idXR0b24tY29tcG9uZW50L3VzZXItZW5hYmxlLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLWVuYWJsZS1idXR0b24tY29tcG9uZW50L3VzZXItZW5hYmxlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG4vL1RlY2hsaWZ5IGljb25cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWljb24vdGVjaGxpZnktaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktaWNvbi90ZWNobGlmeS1pY29uLmNvbXBvbmVudCc7XG5cbi8vUERGIEJ1dHRvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGRmLWJ1dHRvbi9wZGYtYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZGYtYnV0dG9uL3BkZi1idXR0b24uY29tcG9uZW50JztcblxuLy9DdXN0b20gSWNvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLWljb24vY3VzdG9tLWljb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1pY29uL2N1c3RvbS1pY29uLmNvbXBvbmVudCc7XG5cbi8vQXBwIFNlbGVjdG9yXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1hcHAtc2VsZWN0b3IvdGVjaGxpZnktYXBwLXNlbGVjdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS1hcHAtc2VsZWN0b3IvdGVjaGxpZnktYXBwLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbi8vU3Vic2NyaXB0aW9uXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLWZvcm0vc3Vic2NyaXB0aW9uLWZvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tZm9ybS9zdWJzY3JpcHRpb24tZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi1saXN0aW5nL3N1YnNjcmlwdGlvbi1saXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLWxpc3Rpbmcvc3Vic2NyaXB0aW9uLWxpc3RpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS1saXN0aW5nL3N1YnNjcmlwdGlvbi1wYWNrYWdlLWxpc3RpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS12aWV3L3N1YnNjcmlwdGlvbi1wYWNrYWdlLXZpZXcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcGFja2FnZS12aWV3L3N1YnNjcmlwdGlvbi1wYWNrYWdlLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24vdGVjaGxpZnktc3Vic2NyaXB0aW9uLWRpcmVjdGl2ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uL3RlY2hsaWZ5LXN1YnNjcmlwdGlvbi5kaXJlY3RpdmUnO1xuXG4vL1RpbWVsaW5lIEhpc3RvcnlcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWVsaW5lLWFjdGl2aXR5L3RpbWVsaW5lLWFjdGl2aXR5LWJ1dHRvbi90aW1lbGluZS1hY3Rpdml0eS1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWVsaW5lLWFjdGl2aXR5L3RpbWVsaW5lLWFjdGl2aXR5LWJ1dHRvbi90aW1lbGluZS1hY3Rpdml0eS1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGltZWxpbmUtYWN0aXZpdHkvdGltZWxpbmUtYWN0aXZpdHktbGlzdC90aW1lbGluZS1hY3Rpdml0eS1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lbGluZS1hY3Rpdml0eS90aW1lbGluZS1hY3Rpdml0eS1saXN0L3RpbWVsaW5lLWFjdGl2aXR5LWxpc3QuY29tcG9uZW50JztcblxuLy9FeHBvcnQgbG9jYWwgZGF0ZSBwYXJzZXJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsLWRhdGUtcGFyc2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlbGV0ZS1idXR0b24vdGVjaGxpZnktZGVsZXRlLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1idXR0b24vdGVjaGxpZnktZm9ybS1idXR0b24uY29tcG9uZW50JztcblxuLy9Gb3JtIENvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZm9ybS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZm9ybS1maWVsZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tdXRpbGl0eS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZmllbGQtZm9ybS9mb3JtLWNvbmZpZ3VyYXRpb24tZmllbGQtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1jb25maWd1cmF0aW9uL2Zvcm0tY29uZmlndXJhdGlvbi1maWVsZC1mb3JtL2Zvcm0tY29uZmlndXJhdGlvbi1maWVsZC1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWNvbmZpZ3VyYXRpb24vZm9ybS1jb25maWd1cmF0aW9uLWZpZWxkLWZvcm0vZm9ybS1jb25maWd1cmF0aW9uLWZpZWxkLWZvcm0tcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1jb25maWd1cmF0aW9uL2Zvcm0tY29uZmlndXJhdGlvbi1mb3ItZm9ybS9mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tY29uZmlndXJhdGlvbi9mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0vZm9ybS1jb25maWd1cmF0aW9uLWZvci1mb3JtLm1vZHVsZSc7XG5cbi8vTG9ja2VkIERhdGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2tlZC1kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2tlZC1kYXRlL2xvY2tlZC1kYXRlLm1vZHVsZSc7XG5cbi8vVGVjaGxpZnkgVmlld1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdmlldy9teS10ZWNobGlmeS12aWV3LWxpc3RpbmcvbXktdGVjaGxpZnktdmlldy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXZpZXcvbXktdGVjaGxpZnktdmlldy1saXN0aW5nL215LXRlY2hsaWZ5LXZpZXctbGlzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktdmlldy9teS10ZWNobGlmeS12aWV3LWxpc3RpbmcvbXktdGVjaGxpZnktdmlldy1saXN0aW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS12aWV3L3RlY2hsaWZ5LXZpZXcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZWNobGlmeS12aWV3L3RlY2hsaWZ5LXZpZXctZm9ybS90ZWNobGlmeS12aWV3LWZvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LXZpZXcvdGVjaGxpZnktdmlldy1mb3JtL3RlY2hsaWZ5LXZpZXctZm9ybS5jb21wb25lbnQnO1xuXG4vL1ZhbGlkYXRvcnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMvZGF0ZS52YWxpZGF0b3InO1xuXG4vL1RhZ2dlciBDUlVEXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWcvdGVjaGxpZnktdGFnZ2VyLXRhZy1saXN0L3RlY2hsaWZ5LXRhZ2dlci10YWctbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy90YWcuc2VydmljZSc7XG5cbi8vVGVjaGxpZnkgYXV0byBjb21wbGV0ZSBzZWxlY3RcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlY2hsaWZ5LWF1dG8tY29tcGxldGUtc2VsZWN0L3RlY2hsaWZ5LWF1dG8tY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudCc7XG5cbi8vVGVjaGxpZnkgY3VycmVuY3kgcGlwZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVjaGxpZnktY3VycmVuY3ktcGlwZS90ZWNobGlmeS1jdXJyZW5jeS1waXBlLmRpcmVjdGl2ZSc7XG4iXX0=
|