@messaia/cdk 18.2.3-rc08 → 18.2.3-rc09
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/base/components/generic-embedded-list.component.mjs +14 -3
- package/esm2022/lib/base/components/generic-list.component.mjs +1 -1
- package/esm2022/lib/table/table.static-data-source.mjs +92 -28
- package/fesm2022/messaia-cdk.mjs +104 -29
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/base/components/generic-embedded-list.component.d.ts +8 -1
- package/lib/table/table.static-data-source.d.ts +76 -24
- package/package.json +1 -1
|
@@ -36,6 +36,13 @@ export class GenericEmbeddedListComponent extends GenericListComponent {
|
|
|
36
36
|
* If true, pagination controls will be available for navigating through the data.
|
|
37
37
|
*/
|
|
38
38
|
paginable = false;
|
|
39
|
+
/**
|
|
40
|
+
* @property pageSize
|
|
41
|
+
* @description The number of items displayed per page in the data-table.
|
|
42
|
+
* It controls how many records are shown on a single page.
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
pageSize = 10;
|
|
39
46
|
/**
|
|
40
47
|
* The name of the property representing the list of items.
|
|
41
48
|
*/
|
|
@@ -99,10 +106,12 @@ export class GenericEmbeddedListComponent extends GenericListComponent {
|
|
|
99
106
|
if (!this.parent?.id && this.paginable) {
|
|
100
107
|
/* Initializes the dataSource with the entities */
|
|
101
108
|
this.dataSource = new TableStaticDataSource(...this.form?.value[this.itemsPropertyName]);
|
|
109
|
+
/* Set the default page size */
|
|
110
|
+
this.dataSource.pageSize = this.pageSize;
|
|
102
111
|
/* Sets the paginator for the dataSource */
|
|
103
112
|
this.dataSource.paginator = this.paginator;
|
|
104
113
|
/* Subscribes to the dataSource connection and assigns the result to the items array */
|
|
105
|
-
this.
|
|
114
|
+
this.connect();
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
117
|
/**
|
|
@@ -168,7 +177,7 @@ export class GenericEmbeddedListComponent extends GenericListComponent {
|
|
|
168
177
|
super.addRowMenuItems();
|
|
169
178
|
}
|
|
170
179
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: GenericEmbeddedListComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
171
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: GenericEmbeddedListComponent, inputs: { form: "form", parent: "parent", hashPrefix: "hashPrefix", paginable: "paginable" }, usesInheritance: true, ngImport: i0 });
|
|
180
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: GenericEmbeddedListComponent, inputs: { form: "form", parent: "parent", hashPrefix: "hashPrefix", paginable: "paginable", pageSize: "pageSize" }, usesInheritance: true, ngImport: i0 });
|
|
172
181
|
}
|
|
173
182
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: GenericEmbeddedListComponent, decorators: [{
|
|
174
183
|
type: Directive
|
|
@@ -180,5 +189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
180
189
|
type: Input
|
|
181
190
|
}], paginable: [{
|
|
182
191
|
type: Input
|
|
192
|
+
}], pageSize: [{
|
|
193
|
+
type: Input
|
|
183
194
|
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lbWJlZGRlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWVtYmVkZGVkLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUVoRTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBZ0IsNEJBQXlILFNBQVEsb0JBQXVDO0lBNERsTDtJQUNIO0lBQ0c7SUFDQTtJQUNBO0lBOURYOztPQUVHO0lBRUksSUFBSSxDQUFhO0lBRXhCOztPQUVHO0lBRUksTUFBTSxDQUFXO0lBRXhCOztPQUVHO0lBRUksVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUUvQjs7O09BR0c7SUFFSSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRWxDOztPQUVHO0lBQ08saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0lBRXRDOztPQUVHO0lBQ0ksWUFBWSxHQUEwQjtRQUM1QztZQUNDLHNEQUFzRDtZQUN0RCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUUsQ0FBQztZQUN4QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ25DO1FBQ0Q7WUFDQyxvREFBb0Q7WUFDcEQsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDeEI7S0FDRCxDQUFDO0lBRUY7Ozs7Ozs7O09BUUc7SUFDSCxZQUNXLE1BQXFCLEVBQ3hCLE9BQWlCLEVBQ2QsV0FBMEIsRUFDMUIsS0FBcUIsRUFDckIsaUJBQW9DO1FBRTlDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFPLElBQUksQ0FBQyxDQUFBO1FBTnpDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFHL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDUCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDO1lBRTVDOzs7Y0FHRTtZQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5Qzs7O2NBR0U7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQXFCLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXpGLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDO1lBRTVDLHVGQUF1RjtZQUN2RixJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFBdUI7UUFDckMsK0RBQStEO1FBQy9ELElBQUksTUFBTSxHQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsMERBQTBEO1FBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRTdDLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFVLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFaEgsb0RBQW9EO1lBQ3BELElBQUksQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLHFDQUFxQztRQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQWlCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlFLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQixxREFBcUQ7WUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNoQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDBCQUEwQjtRQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQVFEOzs7OztPQUtHO0lBQ08sV0FBVyxDQUFDLElBQXNCO1FBQzNDLGtDQUFrQztRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxlQUFlO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOzBIQXRMb0IsNEJBQTRCOzhHQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRGpELFNBQVM7dUxBT0YsSUFBSTtzQkFEVixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQVFDLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIElucHV0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtLCBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBSeEZvcm1BcnJheSB9IGZyb20gJy4uLy4uL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWFycmF5JztcclxuaW1wb3J0IHsgUnhGb3JtQnVpbGRlciB9IGZyb20gJy4uLy4uL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvaHR0cC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUYWJsZVN0YXRpY0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQGNsYXNzIEdlbmVyaWNFbWJlZGRlZExpc3RDb21wb25lbnRcclxuICogXHJcbiAqIEEgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgYSBsaXN0IG9mIGVtYmVkZGVkIGl0ZW1zIHdpdGhpbiBhIGZvcm0uXHJcbiAqIEl0IHByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXRpZXMgZm9yIGFkZGluZywgcmVtb3ZpbmcsIGFuZCBtYW5hZ2luZyBpdGVtcy5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY0VtYmVkZGVkTGlzdENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgSUVudGl0eSwgVFBhcmVudCBleHRlbmRzIElFbnRpdHksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eSwgVFNlcnZpY2U+IHtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHJlYWN0aXZlIGZvcm0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZvcm0/OiBGb3JtR3JvdXA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBwYXJlbnQgZW50aXR5IHRoYXQgdGhpcyBjb21wb25lbnQgaXMgYXNzb2NpYXRlZCB3aXRoLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHBhcmVudD86IFRQYXJlbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcHJlZml4IGZvciBoYXNoaW5nIHB1cnBvc2VzLCBkZWZhdWx0IGlzIGFuIGVtcHR5IHN0cmluZy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBoYXNoUHJlZml4OiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBsaXN0IHN1cHBvcnRzIHBhZ2luYXRpb24uXHJcblx0ICogSWYgdHJ1ZSwgcGFnaW5hdGlvbiBjb250cm9scyB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgbmF2aWdhdGluZyB0aHJvdWdoIHRoZSBkYXRhLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHBhZ2luYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgcmVwcmVzZW50aW5nIHRoZSBsaXN0IG9mIGl0ZW1zLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpdGVtc1Byb3BlcnR5TmFtZSA9ICdpdGVtcyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1lbnUgb3B0aW9ucyBmb3IgbWFuYWdpbmcgYSBsaXN0IG9mIGl0ZW1zLCBpbmNsdWRpbmcgZGVsZXRlIGFuZCBtb3JlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0cHVibGljIGl0ZW1MaXN0TWVudTogQWN0aW9uSXRlbTxURW50aXR5PltdID0gW1xyXG5cdFx0e1xyXG5cdFx0XHQvKiBPcHRpb24gdG8gcmVtb3ZlIHRoZSBzZWxlY3RlZCBpdGVtIGZyb20gdGhlIGxpc3QgKi9cclxuXHRcdFx0aWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuXHRcdFx0ZXZlbnQ6IChfLCBfXywgaSkgPT4gdGhpcy5yZW1vdmVJdGVtKGkhKSxcclxuXHRcdFx0aGlkZTogKGl0ZW0pID0+IChpdGVtPy5pZCA/PyAwKSA+IDBcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdC8qIEFjdGlvbiB0byBzaG93IGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGl0ZW0gKi9cclxuXHRcdFx0aWNvbjogJ21vcmVfdmVydCcsXHJcblx0XHRcdGhpZGU6IChpdGVtKSA9PiAoaXRlbT8uaWQgPz8gMCkgPD0gMCxcclxuXHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHR9XHJcblx0XTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3IgZm9yIGluaXRpYWxpemluZyB0aGUgY29tcG9uZW50LlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIHR5cGUgb2YgZW50aXR5IGJlaW5nIG1hbmFnZWQuXHJcblx0ICogQHBhcmFtIHNlcnZpY2UgVGhlIHNlcnZpY2UgZm9yIG1hbmFnaW5nIGVudGl0eSBvcGVyYXRpb25zLlxyXG5cdCAqIEBwYXJhbSBmb3JtQnVpbGRlciBUaGUgYnVpbGRlciBmb3IgY3JlYXRpbmcgcmVhY3RpdmUgZm9ybXMuXHJcblx0ICogQHBhcmFtIHJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGUgZm9yIG5hdmlnYXRpb24uXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFRoZSBjaGFuZ2UgZGV0ZWN0b3IgZm9yIG1hbmFnaW5nIHZpZXcgdXBkYXRlcy5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBlbnRpdHk6IFR5cGU8VEVudGl0eT4sXHJcblx0XHRwdWJsaWMgc2VydmljZTogVFNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFJ4Rm9ybUJ1aWxkZXIsXHJcblx0XHRwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge1xyXG5cdFx0c3VwZXIoc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmLCA8YW55Pm51bGwpXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayBjYWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLlxyXG5cdCAqIEluaXRpYWxpemVzIGlucHV0IHByb3BlcnRpZXMgYW5kIHNldHMgdXAgZGF0YSBmZXRjaGluZy5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0XHRpZiAodGhpcy5wYXJlbnQ/LmlkKSB7XHJcblx0XHRcdC8qIFNldHMgdGhlIHBhZ2luYXRvciBmb3IgdGhlIGRhdGFTb3VyY2UgKi9cclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yITtcclxuXHJcblx0XHRcdC8qIFxyXG5cdFx0XHRJZiBhIHBhcmVudCBlbnRpdHkgZXhpc3RzIChpLmUuLCBpdCBoYXMgYW4gSUQpLCBjb25uZWN0IHRvIHRoZSBkYXRhIHNvdXJjZSBcclxuXHRcdFx0d2l0aCB0aGUgc3BlY2lmaWVkIHBhZ2Ugc2l6ZSBhbmQgYW55IGFkZGl0aW9uYWwgZmV0Y2ggZGF0YS5cclxuXHRcdFx0Ki9cclxuXHRcdFx0dGhpcy5jb25uZWN0KE9iamVjdC5hc3NpZ24oeyBwYWdlU2l6ZTogMTAgfSwgdGhpcy5nZXRGZXRjaERhdGEoKSwgeyBpZDogbnVsbCB9KSk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuZGF0YVNvdXJjZS5pdGVtcy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHQvKiBcclxuXHRcdFx0SWYgdGhlcmUgaXMgbm8gcGFyZW50IGVudGl0eSBhbmQgdGhlIGRhdGEgc291cmNlIGl0ZW1zIGFyZSBlbXB0eSxcclxuXHRcdFx0cG9wdWxhdGUgdGhlIGRhdGEgc291cmNlIHdpdGggaW5pdGlhbCBpdGVtcyBmcm9tIHRoZSBmb3JtJ3MgdmFsdWUuXHJcblx0XHRcdCovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8ucHVzaCguLi50aGlzLmZvcm0/LnZhbHVlW3RoaXMuaXRlbXNQcm9wZXJ0eU5hbWVdKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIXRoaXMucGFyZW50Py5pZCAmJiB0aGlzLnBhZ2luYWJsZSkge1xyXG5cdFx0XHQvKiBJbml0aWFsaXplcyB0aGUgZGF0YVNvdXJjZSB3aXRoIHRoZSBlbnRpdGllcyAqL1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVTdGF0aWNEYXRhU291cmNlKC4uLnRoaXMuZm9ybT8udmFsdWVbdGhpcy5pdGVtc1Byb3BlcnR5TmFtZV0pO1xyXG5cclxuXHRcdFx0LyogU2V0cyB0aGUgcGFnaW5hdG9yIGZvciB0aGUgZGF0YVNvdXJjZSAqL1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3IhO1xyXG5cclxuXHRcdFx0LyogU3Vic2NyaWJlcyB0byB0aGUgZGF0YVNvdXJjZSBjb25uZWN0aW9uIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIGl0ZW1zIGFycmF5ICovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZT8uY29ubmVjdCgpLnN1YnNjcmliZSgoeDogVEVudGl0eVtdKSA9PiB0aGlzLml0ZW1zID0geCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgbmV3IGl0ZW0gdG8gdGhlIGN1cnJlbnQgbGlzdC5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gaW5pdCBPcHRpb25hbCBpbml0aWFsIHZhbHVlcyBmb3IgdGhlIG5ldyBlbnRpdHkuXHJcblx0ICovXHJcblx0cHVibGljIGFkZEl0ZW0oaW5pdD86IFBhcnRpYWw8VEVudGl0eT4pOiB2b2lkIHtcclxuXHRcdC8qIENyZWF0ZSBhIG5ldyBlbnRpdHkgaW5zdGFuY2Ugd2l0aCBvcHRpb25hbCBpbml0aWFsIHZhbHVlcyAqL1xyXG5cdFx0dmFyIGVudGl0eSA9IDxURW50aXR5PnRoaXMubmV3SW5zdGFuY2UoaW5pdCB8fCB7fSk7XHJcblxyXG5cdFx0LyogQWRkIHRoZSBuZXcgaXRlbSB0byB0aGUgZGF0YSBzb3VyY2UgdG8gc2hvdyBpdCBpbiB0aGUgZXhwYW5zaW9uIHBhbmVsICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuaXRlbXM/LnB1c2goZW50aXR5KTtcclxuXHJcblx0XHQvKiBVcGRhdGUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIG1vZGlmaWVkIGl0ZW1zIGFycmF5ICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcztcclxuXHJcblx0XHQvKiBBZGQgdGhlIGVudGl0eSB0byB0aGUgZm9ybSBhcnJheSBpbiAnYWRkIG1vZGUnICovXHJcblx0XHRpZiAoIXRoaXMucGFyZW50Py5pZCkge1xyXG5cdFx0XHQodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLml0ZW1zUHJvcGVydHlOYW1lXSBhcyBSeEZvcm1BcnJheSk/LnB1c2godGhpcy5mb3JtQnVpbGRlci5mb3JtR3JvdXA8VEVudGl0eT4oZW50aXR5KSk7XHJcblxyXG5cdFx0XHQvKiBFbnN1cmUgdGhlIGZvcm0gaXMgdmFsaWQgYWZ0ZXIgYWRkaW5nIHRoZSBpdGVtICovXHJcblx0XHRcdHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIHZpZXcgKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gdGhlIGxpc3QgYW5kIHRoZSBmb3JtLlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdC8qIFJlbW92ZSBpdGVtIGZyb20gdGhlIGZvcm0gYXJyYXkgKi9cclxuXHRcdCh0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuaXRlbXNQcm9wZXJ0eU5hbWVdIGFzIFJ4Rm9ybUFycmF5KT8ucmVtb3ZlQXQoaW5kZXgpO1xyXG5cclxuXHRcdC8qIFJlbW92ZSBpdGVtIGZyb20gdGhlIGRhdGEgc291cmNlICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuaXRlbXM/LnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRpZiAodGhpcy5wYXJlbnQ/LmlkKSB7XHJcblx0XHRcdC8qIFJlZnJlc2ggZGF0YSBzb3VyY2UgaWYgYXNzb2NpYXRlZCB3aXRoIGEgcGFyZW50ICovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhcnMgYWxsIGl0ZW1zIGZyb20gdGhlIGxpc3QgYW5kIHRoZSBmb3JtLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGVhckl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQ2xlYXIgdGhlIGl0ZW1zIGZyb20gdGhlIGRhdGEgc291cmNlICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuaXRlbXMgPSBbXTtcclxuXHJcblx0XHQvKiBDbGVhciB0aGUgZm9ybSBhcnJheSAqL1xyXG5cdFx0KHRoaXMuZm9ybT8uY29udHJvbHNbdGhpcy5pdGVtc1Byb3BlcnR5TmFtZV0gYXMgUnhGb3JtQXJyYXkpPy5jbGVhcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWJzdHJhY3QgbWV0aG9kIHRvIGZldGNoIGRhdGEgZm9yIHRoZSBsaXN0LlxyXG5cdCAqIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZGVyaXZlZCBjbGFzc2VzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhYnN0cmFjdCBnZXRGZXRjaERhdGEoKTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBURW50aXR5LlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpbml0IE9wdGlvbmFsIGluaXRpYWwgdmFsdWVzIGZvciB0aGUgZW50aXR5LlxyXG5cdCAqIEByZXR1cm5zIEEgbmV3IGluc3RhbmNlIG9mIFRFbnRpdHkuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKGluaXQ6IFBhcnRpYWw8VEVudGl0eT4pOiBURW50aXR5IHtcclxuXHRcdC8qIENyZWF0ZSBhIG5ldyBlbnRpdHkgaW5zdGFuY2UgKi9cclxuXHRcdHJldHVybiBuZXcgdGhpcy5lbnRpdHkoaW5pdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIG1lbnUgaXRlbXMgdG8gdGhlIHJvdyBvcHRpb25zIGZvciBtYW5hZ2luZyBpbmRpdmlkdWFsIGl0ZW1zLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRSb3dNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmVkaXRhYmxlID0gZmFsc2U7XHJcblx0XHRzdXBlci5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHR9XHJcbn0iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lbWJlZGRlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWVtYmVkZGVkLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUVoRTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBZ0IsNEJBSXBCLFNBQVEsb0JBQXVDO0lBb0VyQztJQUNIO0lBQ0c7SUFDQTtJQUNBO0lBdkVYOztPQUVHO0lBRUksSUFBSSxDQUFhO0lBRXhCOztPQUVHO0lBRUksTUFBTSxDQUFXO0lBRXhCOztPQUVHO0lBRUksVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUUvQjs7O09BR0c7SUFFSSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRWxDOzs7OztPQUtHO0lBRUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUU3Qjs7T0FFRztJQUNPLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztJQUV0Qzs7T0FFRztJQUNJLFlBQVksR0FBMEI7UUFDNUM7WUFDQyxzREFBc0Q7WUFDdEQsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxF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LE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNPLGVBQWU7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7MEhBck1vQiw0QkFBNEI7OEdBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEakQsU0FBUzt1TEFVRixJQUFJO3NCQURWLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBUUMsU0FBUztzQkFEZixLQUFLO2dCQVVDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIElucHV0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtLCBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBSeEZvcm1BcnJheSB9IGZyb20gJy4uLy4uL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWFycmF5JztcclxuaW1wb3J0IHsgUnhGb3JtQnVpbGRlciB9IGZyb20gJy4uLy4uL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvaHR0cC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUYWJsZVN0YXRpY0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQGNsYXNzIEdlbmVyaWNFbWJlZGRlZExpc3RDb21wb25lbnRcclxuICogXHJcbiAqIEEgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgYSBsaXN0IG9mIGVtYmVkZGVkIGl0ZW1zIHdpdGhpbiBhIGZvcm0uXHJcbiAqIEl0IHByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXRpZXMgZm9yIGFkZGluZywgcmVtb3ZpbmcsIGFuZCBtYW5hZ2luZyBpdGVtcy5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY0VtYmVkZGVkTGlzdENvbXBvbmVudDxcclxuXHRURW50aXR5IGV4dGVuZHMgSUVudGl0eSxcclxuXHRUUGFyZW50IGV4dGVuZHMgSUVudGl0eSxcclxuXHRUU2VydmljZSBleHRlbmRzIEdlbmVyaWNTZXJ2aWNlPFRFbnRpdHk+XHJcbj4gZXh0ZW5kcyBHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5LCBUU2VydmljZT4ge1xyXG5cdC8qKlxyXG5cdCAqIFRoZSByZWFjdGl2ZSBmb3JtIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmb3JtPzogRm9ybUdyb3VwO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgcGFyZW50IGVudGl0eSB0aGF0IHRoaXMgY29tcG9uZW50IGlzIGFzc29jaWF0ZWQgd2l0aC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYXJlbnQ/OiBUUGFyZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHByZWZpeCBmb3IgaGFzaGluZyBwdXJwb3NlcywgZGVmYXVsdCBpcyBhbiBlbXB0eSBzdHJpbmcuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgaGFzaFByZWZpeDogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbGlzdCBzdXBwb3J0cyBwYWdpbmF0aW9uLlxyXG5cdCAqIElmIHRydWUsIHBhZ2luYXRpb24gY29udHJvbHMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIG5hdmlnYXRpbmcgdGhyb3VnaCB0aGUgZGF0YS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYWdpbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHBhZ2VTaXplXHJcblx0ICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIHBlciBwYWdlIGluIHRoZSBkYXRhLXRhYmxlLlxyXG5cdCAqIEl0IGNvbnRyb2xzIGhvdyBtYW55IHJlY29yZHMgYXJlIHNob3duIG9uIGEgc2luZ2xlIHBhZ2UuXHJcblx0ICogQHR5cGUge251bWJlcn1cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSByZXByZXNlbnRpbmcgdGhlIGxpc3Qgb2YgaXRlbXMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGl0ZW1zUHJvcGVydHlOYW1lID0gJ2l0ZW1zJztcclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBvcHRpb25zIGZvciBtYW5hZ2luZyBhIGxpc3Qgb2YgaXRlbXMsIGluY2x1ZGluZyBkZWxldGUgYW5kIG1vcmUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXRlbUxpc3RNZW51OiBBY3Rpb25JdGVtPFRFbnRpdHk+W10gPSBbXHJcblx0XHR7XHJcblx0XHRcdC8qIE9wdGlvbiB0byByZW1vdmUgdGhlIHNlbGVjdGVkIGl0ZW0gZnJvbSB0aGUgbGlzdCAqL1xyXG5cdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRldmVudDogKF8sIF9fLCBpKSA9PiB0aGlzLnJlbW92ZUl0ZW0oaSEpLFxyXG5cdFx0XHRoaWRlOiAoaXRlbSkgPT4gKGl0ZW0/LmlkID8/IDApID4gMFxyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0LyogQWN0aW9uIHRvIHNob3cgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaXRlbSAqL1xyXG5cdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0aGlkZTogKGl0ZW0pID0+IChpdGVtPy5pZCA/PyAwKSA8PSAwLFxyXG5cdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdH1cclxuXHRdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvciBmb3IgaW5pdGlhbGl6aW5nIHRoZSBjb21wb25lbnQuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgdHlwZSBvZiBlbnRpdHkgYmVpbmcgbWFuYWdlZC5cclxuXHQgKiBAcGFyYW0gc2VydmljZSBUaGUgc2VydmljZSBmb3IgbWFuYWdpbmcgZW50aXR5IG9wZXJhdGlvbnMuXHJcblx0ICogQHBhcmFtIGZvcm1CdWlsZGVyIFRoZSBidWlsZGVyIGZvciBjcmVhdGluZyByZWFjdGl2ZSBmb3Jtcy5cclxuXHQgKiBAcGFyYW0gcm91dGUgVGhlIGFjdGl2YXRlZCByb3V0ZSBmb3IgbmF2aWdhdGlvbi5cclxuXHQgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgVGhlIGNoYW5nZSBkZXRlY3RvciBmb3IgbWFuYWdpbmcgdmlldyB1cGRhdGVzLlxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGVudGl0eTogVHlwZTxURW50aXR5PixcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmb3JtQnVpbGRlcjogUnhGb3JtQnVpbGRlcixcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYsIDxhbnk+bnVsbClcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIGNhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0b3IuXHJcblx0ICogSW5pdGlhbGl6ZXMgaW5wdXQgcHJvcGVydGllcyBhbmQgc2V0cyB1cCBkYXRhIGZldGNoaW5nLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkluaXQoKTtcclxuXHRcdGlmICh0aGlzLnBhcmVudD8uaWQpIHtcclxuXHRcdFx0LyogU2V0cyB0aGUgcGFnaW5hdG9yIGZvciB0aGUgZGF0YVNvdXJjZSAqL1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3IhO1xyXG5cclxuXHRcdFx0LyogXHJcblx0XHRcdElmIGEgcGFyZW50IGVudGl0eSBleGlzdHMgKGkuZS4sIGl0IGhhcyBhbiBJRCksIGNvbm5lY3QgdG8gdGhlIGRhdGEgc291cmNlIFxyXG5cdFx0XHR3aXRoIHRoZSBzcGVjaWZpZWQgcGFnZSBzaXplIGFuZCBhbnkgYWRkaXRpb25hbCBmZXRjaCBkYXRhLlxyXG5cdFx0XHQqL1xyXG5cdFx0XHR0aGlzLmNvbm5lY3QoT2JqZWN0LmFzc2lnbih7IHBhZ2VTaXplOiAxMCB9LCB0aGlzLmdldEZldGNoRGF0YSgpLCB7IGlkOiBudWxsIH0pKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlLml0ZW1zLmxlbmd0aCA8PSAwKSB7XHJcblx0XHRcdC8qIFxyXG5cdFx0XHRJZiB0aGVyZSBpcyBubyBwYXJlbnQgZW50aXR5IGFuZCB0aGUgZGF0YSBzb3VyY2UgaXRlbXMgYXJlIGVtcHR5LFxyXG5cdFx0XHRwb3B1bGF0ZSB0aGUgZGF0YSBzb3VyY2Ugd2l0aCBpbml0aWFsIGl0ZW1zIGZyb20gdGhlIGZvcm0ncyB2YWx1ZS5cclxuXHRcdFx0Ki9cclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLml0ZW1zPy5wdXNoKC4uLnRoaXMuZm9ybT8udmFsdWVbdGhpcy5pdGVtc1Byb3BlcnR5TmFtZV0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghdGhpcy5wYXJlbnQ/LmlkICYmIHRoaXMucGFnaW5hYmxlKSB7XHJcblx0XHRcdC8qIEluaXRpYWxpemVzIHRoZSBkYXRhU291cmNlIHdpdGggdGhlIGVudGl0aWVzICovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBUYWJsZVN0YXRpY0RhdGFTb3VyY2UoLi4udGhpcy5mb3JtPy52YWx1ZVt0aGlzLml0ZW1zUHJvcGVydHlOYW1lXSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIGRlZmF1bHQgcGFnZSBzaXplICovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcblxyXG5cdFx0XHQvKiBTZXRzIHRoZSBwYWdpbmF0b3IgZm9yIHRoZSBkYXRhU291cmNlICovXHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuXHJcblx0XHRcdC8qIFN1YnNjcmliZXMgdG8gdGhlIGRhdGFTb3VyY2UgY29ubmVjdGlvbiBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBpdGVtcyBhcnJheSAqL1xyXG5cdFx0XHR0aGlzLmNvbm5lY3QoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBuZXcgaXRlbSB0byB0aGUgY3VycmVudCBsaXN0LlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpbml0IE9wdGlvbmFsIGluaXRpYWwgdmFsdWVzIGZvciB0aGUgbmV3IGVudGl0eS5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkSXRlbShpbml0PzogUGFydGlhbDxURW50aXR5Pik6IHZvaWQge1xyXG5cdFx0LyogQ3JlYXRlIGEgbmV3IGVudGl0eSBpbnN0YW5jZSB3aXRoIG9wdGlvbmFsIGluaXRpYWwgdmFsdWVzICovXHJcblx0XHR2YXIgZW50aXR5ID0gPFRFbnRpdHk+dGhpcy5uZXdJbnN0YW5jZShpbml0IHx8IHt9KTtcclxuXHJcblx0XHQvKiBBZGQgdGhlIG5ldyBpdGVtIHRvIHRoZSBkYXRhIHNvdXJjZSB0byBzaG93IGl0IGluIHRoZSBleHBhbnNpb24gcGFuZWwgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8ucHVzaChlbnRpdHkpO1xyXG5cclxuXHRcdC8qIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2Ugd2l0aCB0aGUgbW9kaWZpZWQgaXRlbXMgYXJyYXkgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhU291cmNlLml0ZW1zO1xyXG5cclxuXHRcdC8qIEFkZCB0aGUgZW50aXR5IHRvIHRoZSBmb3JtIGFycmF5IGluICdhZGQgbW9kZScgKi9cclxuXHRcdGlmICghdGhpcy5wYXJlbnQ/LmlkKSB7XHJcblx0XHRcdCh0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuaXRlbXNQcm9wZXJ0eU5hbWVdIGFzIFJ4Rm9ybUFycmF5KT8ucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmZvcm1Hcm91cDxURW50aXR5PihlbnRpdHkpKTtcclxuXHJcblx0XHRcdC8qIEVuc3VyZSB0aGUgZm9ybSBpcyB2YWxpZCBhZnRlciBhZGRpbmcgdGhlIGl0ZW0gKi9cclxuXHRcdFx0dGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlldyAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBhbmQgdGhlIGZvcm0uXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byByZW1vdmUuXHJcblx0ICovXHJcblx0cHVibGljIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG5cdFx0LyogUmVtb3ZlIGl0ZW0gZnJvbSB0aGUgZm9ybSBhcnJheSAqL1xyXG5cdFx0KHRoaXMuZm9ybT8uY29udHJvbHNbdGhpcy5pdGVtc1Byb3BlcnR5TmFtZV0gYXMgUnhGb3JtQXJyYXkpPy5yZW1vdmVBdChpbmRleCk7XHJcblxyXG5cdFx0LyogUmVtb3ZlIGl0ZW0gZnJvbSB0aGUgZGF0YSBzb3VyY2UgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdGlmICh0aGlzLnBhcmVudD8uaWQpIHtcclxuXHRcdFx0LyogUmVmcmVzaCBkYXRhIHNvdXJjZSBpZiBhc3NvY2lhdGVkIHdpdGggYSBwYXJlbnQgKi9cclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLmNvbm5lY3QoKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFycyBhbGwgaXRlbXMgZnJvbSB0aGUgbGlzdCBhbmQgdGhlIGZvcm0uXHJcblx0ICovXHJcblx0cHVibGljIGNsZWFySXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBDbGVhciB0aGUgaXRlbXMgZnJvbSB0aGUgZGF0YSBzb3VyY2UgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pdGVtcyA9IFtdO1xyXG5cclxuXHRcdC8qIENsZWFyIHRoZSBmb3JtIGFycmF5ICovXHJcblx0XHQodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLml0ZW1zUHJvcGVydHlOYW1lXSBhcyBSeEZvcm1BcnJheSk/LmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBYnN0cmFjdCBtZXRob2QgdG8gZmV0Y2ggZGF0YSBmb3IgdGhlIGxpc3QuXHJcblx0ICogTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBkZXJpdmVkIGNsYXNzZXMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFic3RyYWN0IGdldEZldGNoRGF0YSgpOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRFbnRpdHkuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGluaXQgT3B0aW9uYWwgaW5pdGlhbCB2YWx1ZXMgZm9yIHRoZSBlbnRpdHkuXHJcblx0ICogQHJldHVybnMgQSBuZXcgaW5zdGFuY2Ugb2YgVEVudGl0eS5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoaW5pdDogUGFydGlhbDxURW50aXR5Pik6IFRFbnRpdHkge1xyXG5cdFx0LyogQ3JlYXRlIGEgbmV3IGVudGl0eSBpbnN0YW5jZSAqL1xyXG5cdFx0cmV0dXJuIG5ldyB0aGlzLmVudGl0eShpbml0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgbWVudSBpdGVtcyB0byB0aGUgcm93IG9wdGlvbnMgZm9yIG1hbmFnaW5nIGluZGl2aWR1YWwgaXRlbXMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFJvd01lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuZWRpdGFibGUgPSBmYWxzZTtcclxuXHRcdHN1cGVyLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cdH1cclxufSJdfQ==
|
|
@@ -963,4 +963,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
963
963
|
type: HostListener,
|
|
964
964
|
args: ['document:keydown', ['$event']]
|
|
965
965
|
}] } });
|
|
966
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0s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c0JBRGYsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVVsQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpRzdCLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQTJJN0MsVUFBVTtzQkFEaEIsS0FBSztnQkE2dkJDLG1CQUFtQjtzQkFEekIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlscyc7XHJcbmltcG9ydCB7IEFwcFN0b3JhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vaGVscGVycy9hcHAtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FjdGlvbi1pdGVtJztcclxuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvZW50aXR5JztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9odHRwL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vdGFibGUvZW51bXMvdGFibGUtY29sdW1uLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRUYWJsZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi90YWJsZS9mdW5jdGlvbnMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvbW9kZWxzL3RhYmxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nL2R5bmFtaWMtdGFibGUtY29uZmlnLWRpYWxvZy5jb21ucG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIGJhc2UgbGlzdCBjb21wb25lbnQgZm9yIGNvbXBvbmVudHMgd2l0aCBwYWdpbmF0aW9uIHN1cHBvcnRcclxuICovXHJcbi8vIEBkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHkgfCBhbnksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5PiwgT25EZXN0cm95IHtcclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgcGFnaW5hdG9yXHJcblx0ICogQGRlc2NyaXB0aW9uIEEgcmVmZXJlbmNlIHRvIHRoZSBNYXRQYWdpbmF0b3IgZWxlbWVudC4gXHJcblx0ICogICAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgaGFuZGxpbmcgcGFnaW5hdGlvbiBpbiB0aGUgZGF0YSB0YWJsZS5cclxuXHQgKiBAdHlwZSB7TWF0UGFnaW5hdG9yIHwgdW5kZWZpbmVkfVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBwYWdpbmF0b3I/OiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBzb3J0XHJcblx0ICogQGRlc2NyaXB0aW9uIEEgcmVmZXJlbmNlIHRvIHRoZSBNYXRTb3J0IGVsZW1lbnQuIFxyXG5cdCAqICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIGhhbmRsaW5nIHNvcnRpbmcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgZGF0YSB0YWJsZS5cclxuXHQgKiBAdHlwZSB7TWF0U29ydCB8IHVuZGVmaW5lZH1cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHNvcnQ/OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgcGFnZVNpemVPcHRpb25zXHJcblx0ICogQGRlc2NyaXB0aW9uIEFuIGFycmF5IG9mIGF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9ucyBmb3IgdGhlIGRhdGEgdGFibGUuXHJcblx0ICogQHR5cGUge251bWJlcltdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBpbmNsdWRlc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIG5hdmlnYXRpb25zIHRvIGluY2x1ZGUgd2hlbiBmZXRjaGluZyBkYXRhLlxyXG5cdCAqIEB0eXBlIHtzdHJpbmdbXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgaW5jbHVkZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHByb2plY3Rpb25cclxuXHQgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHRoZSBwcm9qZWN0aW9uKHMpIHRvIGFwcGx5IHdoZW4gZmV0Y2hpbmcgZGF0YS5cclxuXHQgKiAgICAgICAgICAgICAgQ2FuIGJlIGEgc2luZ2xlIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxyXG5cdCAqIEB0eXBlIHtzdHJpbmcgfCBzdHJpbmdbXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGV4Y2x1ZGVkQ29sdW1uc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIGNvbHVtbnMgdG8gZXhjbHVkZSBmcm9tIHRoZSBkYXRhIHRhYmxlLlxyXG5cdCAqIEB0eXBlIHtzdHJpbmdbXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBxdWVyeVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgZmV0Y2hpbmcgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXHJcblx0ICogQHR5cGUge2FueX1cclxuXHQgKi9cclxuXHRwdWJsaWMgcXVlcnk6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZGF0YVNvdXJjZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBzb3VyY2UgZm9yIHRoZSBkYXRhIHRhYmxlLCBtYW5hZ2luZyB0aGUgZGF0YSBkaXNwbGF5ZWQuXHJcblx0ICogQHR5cGUge1RhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBUU2VydmljZT4gfCBhbnl9XHJcblx0ICovXHJcblx0cHVibGljIGRhdGFTb3VyY2U/OiBUYWJsZURhdGFTb3VyY2U8VEVudGl0eSwgVFNlcnZpY2U+IHwgYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgaXRlbXNcclxuXHQgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGl0ZW1zIGFycmF5IGFzIGFuIG9wdGlvbmFsIGFycmF5IG9mIGVudGl0aWVzLlxyXG5cdCAqIEB0eXBlIHtURW50aXR5W119XHJcblx0ICovXHJcblx0cHVibGljIGl0ZW1zPzogVEVudGl0eVtdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBzb3J0QWN0aXZlXHJcblx0ICogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50bHkgYWN0aXZlIHNvcnQgY29sdW1uIGluIHRoZSBkYXRhIHRhYmxlLlxyXG5cdCAqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9XHJcblx0ICovXHJcblx0cHVibGljIHNvcnRBY3RpdmU/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBzb3J0RGlyZWN0aW9uXHJcblx0ICogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IHNvcnQgZGlyZWN0aW9uIGZvciB0aGUgZGF0YSB0YWJsZS4gRGVmYXVsdCBpcyAnYXNjJy5cclxuXHQgKiBAdHlwZSB7U29ydERpcmVjdGlvbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgY2xhc3NJbnN0YW5jZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBBbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgdXNlZCB0byBjcmVhdGUgdGhlIHRhYmxlIGZvciBhIHNwZWNpZmljIHR5cGUgb2YgZW50aXR5LlxyXG5cdCAqIEB0eXBlIHthbnl9XHJcblx0ICovXHJcblx0cHVibGljIGNsYXNzSW5zdGFuY2U6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGNvbHVtbnNcclxuXHQgKiBAZGVzY3JpcHRpb24gQW4gYXJyYXkgZGVmaW5pbmcgdGhlIHRhYmxlIGNvbHVtbnMgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHR5cGUge1RhYmxlQ29sdW1uW119XHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGNvbHVtblNldHNcclxuXHQgKiBAZGVzY3JpcHRpb24gVXNlZCB0byBkaXNwbGF5IHNwZWNpZmljIGNvbHVtbnMgaW4gdGhlIHRhYmxlLiBcclxuXHQgKiAgICAgICAgICAgICAgVGhpcyBhcnJheSBkZWZpbmVzIHNldHMgb2YgY29sdW1ucyB0aGF0IGNhbiBiZSBzaG93biBcclxuXHQgKiAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uLCBhbGxvd2luZyBmb3IgZHluYW1pYyB0YWJsZSBcclxuXHQgKiAgICAgICAgICAgICAgY29sdW1uIGN1c3RvbWl6YXRpb24uXHJcblx0ICogQHR5cGUge3N0cmluZ1tdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb2x1bW5TZXRzPzogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGR5bmFtaWNUYWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBBIHJlZmVyZW5jZSB0byB0aGUgZHluYW1pYyB0YWJsZSBjb21wb25lbnQuXHJcblx0ICogQHR5cGUge1ZkRHluYW1pY1RhYmxlQ29tcG9uZW50fVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGR5bmFtaWNUYWJsZT86IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgdGFibGVDb25maWdcclxuXHQgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSB0YWJsZSwgaW5jbHVkaW5nIHF1ZXJ5IGFuZCBjb2x1bW4gc2V0dGluZ3MuXHJcblx0ICogQHR5cGUge1RhYmxlQ29uZmlnfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0YWJsZUNvbmZpZzogVGFibGVDb25maWcgPSBuZXcgVGFibGVDb25maWcoKTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGFkZERpYWxvZ1R5cGVcclxuXHQgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIGRpYWxvZyB1c2VkIGZvciBjcmVhdGluZyBuZXcgZW50cmllcyBpbiB0aGUgdGFibGUuXHJcblx0ICogQHR5cGUge2FueX1cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkRGlhbG9nVHlwZTogYW55ID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHNlbGVjdGFibGVcclxuXHQgKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2hvdyB0aGUgY29sdW1uICdDaGVja2JveCcuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIHNlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgYWRkYWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzaG93IHRoZSBidXR0b24gJ0FkZCcuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZWRpdGFibGVcclxuXHQgKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRWRpdCcuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGRlbGV0YWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEZWxldGUnLlxyXG5cdCAqIEB0eXBlIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZG93bmxvYWRhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0Rvd25sb2FkJy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBkdXBsaWNhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0R1cGxpY2F0ZScuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGNvbmZpZ3VyYWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdDb25maWd1cmUgdGFibGUnLlxyXG5cdCAqIEB0eXBlIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBzdGlja3lcclxuXHQgKiBAZGVzY3JpcHRpb24gRmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB0YWJsZSBoZWFkZXJzIG9yIGNvbHVtbnMgc2hvdWxkIHN0aWNrIFxyXG5cdCAqICAgICAgICAgICAgICB0byB0aGUgdmlld3BvcnQgZHVyaW5nIHNjcm9sbGluZy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgc3RpY2t5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSB0YWJsZVdpZHRoXHJcblx0ICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIG92ZXJhbGwgd2lkdGggb2YgdGhlIHRhYmxlLlxyXG5cdCAqIEB0eXBlIHtudW1iZXJ9XHJcblx0ICovXHJcblx0cHVibGljIHRhYmxlV2lkdGg/OiBudW1iZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSByb3dOZ0NsYXNzXHJcblx0ICogQGRlc2NyaXB0aW9uIEEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBkeW5hbWljIENTUyBjbGFzcyBmb3IgdGFibGUgcm93cy5cclxuXHQgKiBAdHlwZSB7KHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnl9XHJcblx0ICovXHJcblx0cHVibGljIHJvd05nQ2xhc3M/OiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHJvd0NsaWNrXHJcblx0ICogQGRlc2NyaXB0aW9uIEEgZnVuY3Rpb24gdG8gaGFuZGxlIHJvdyBjbGljayBldmVudHMuXHJcblx0ICogQHR5cGUgeyh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55fVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dDbGljaz86ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgb25FZGl0XHJcblx0ICogQGRlc2NyaXB0aW9uIEEgZnVuY3Rpb24gdG8gaGFuZGxlIGVkaXQgYWN0aW9ucyBmb3IgYSByb3cuXHJcblx0ICogQHR5cGUgeyh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55fVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvbkVkaXQ/OiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGRldGFpbHNUZW1wbGF0ZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBUZW1wbGF0ZSBzdHJpbmcgZm9yIGRpc3BsYXlpbmcgcm93IGRldGFpbHMuXHJcblx0ICogQHR5cGUge3N0cmluZ31cclxuXHQgKi9cclxuXHRwdWJsaWMgZGV0YWlsc1RlbXBsYXRlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgdG9vbGJhckFjdGlvbnNcclxuXHQgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgdG9vbGJhciBhY3Rpb24gaXRlbXMuXHJcblx0ICogQHR5cGUge0FjdGlvbkl0ZW1bXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFt7XHJcblx0XHRpY29uOiAncmVmcmVzaCcsXHJcblx0XHR0b29sdGlwOiAkbG9jYWxpemVgOkBAcmVmcmVzaExpc3Q6UmVmcmVzaCB0aGUgbGlzdGAsXHJcblx0XHRldmVudDogKCkgPT4gdGhpcy5sb2FkTGlzdCgpXHJcblx0fV07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSB0b29sYmFyTWVudUl0ZW1zXHJcblx0ICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHRvb2xiYXIgbWVudSBpdGVtcyBmb3IgYWN0aW9ucy5cclxuXHQgKiBAdHlwZSB7QWN0aW9uSXRlbTxURW50aXR5PltdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyTWVudUl0ZW1zOiBBY3Rpb25JdGVtPFRFbnRpdHk+W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHJvd01lbnVJdGVtc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBtZW51IGl0ZW1zIGZvciBhY3Rpb25zIHJlbGF0ZWQgdG8gdGFibGUgcm93cy5cclxuXHQgKiBAdHlwZSB7QWN0aW9uSXRlbTxURW50aXR5PltdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgYmFja0J1dHRvblxyXG5cdCAqIEBkZXNjcmlwdGlvbiBBZGRzIGEgYmFjayBidXR0b24gdG8gdGhlIHRvb2xiYXIuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZGF0YUxvYWRlZFN1YnNjcmlwdGlvblxyXG5cdCAqIEBkZXNjcmlwdGlvbiBTdWJzY3JpcHRpb24gdG8gdGhlIERhdGFMb2FkZWQgZXZlbnQuXHJcblx0ICogQHR5cGUge1N1YnNjcmlwdGlvbn1cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGF0YUxvYWRlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGNvbmZpZ3NLZXlcclxuXHQgKiBAZGVzY3JpcHRpb24gVGhlIGtleSB1c2VkIGZvciBzdG9yaW5nIHRhYmxlIGNvbmZpZ3VyYXRpb25zLlxyXG5cdCAqIEB0eXBlIHtzdHJpbmd9XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNvbmZpZ3NLZXk6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIHRhYmxlIGNvbXBvbmVudC5cclxuXHQgKiBAcGFyYW0gc2VydmljZSBUaGUgc2VydmljZSB1c2VkIGZvciBtYW5hZ2luZyB0YWJsZSBkYXRhLlxyXG5cdCAqIEBwYXJhbSByb3V0ZSBBY3RpdmF0ZWRSb3V0ZSBmb3IgcmV0cmlldmluZyByb3V0ZSBpbmZvcm1hdGlvbi5cclxuXHQgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgQ2hhbmdlRGV0ZWN0b3JSZWYgZm9yIG1hbmFnaW5nIHZpZXcgdXBkYXRlcy5cclxuXHQgKiBAcGFyYW0gY2xhc3NUeXBlIFRoZSBjbGFzcyB0eXBlIG9mIHRoZSB0YWJsZSBlbnRpdHkuXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgc2VydmljZTogVFNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHB1YmxpYyBjbGFzc1R5cGU/OiB7IG5ldygpOiBURW50aXR5IH1cclxuXHQpIHtcclxuXHRcdHN1cGVyKHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG5cdFx0LyogQXNzZW1ibGUgdGhlIGNvbmZpZyBrZXkgKi9cclxuXHRcdHRoaXMuY29uZmlnc0tleSA9IFt0aGlzLnByb2plY3ROYW1lLCAnbGlzdC1jb25maWcudjInLCB3aW5kb3cuYnRvYSh0aGlzLmN1cnJlbnRCYXNlUm91dGUgPz8gJycpLCB0aGlzLm1lbnU/LnRpdGxlXS5qb2luKCcuJyk7XHJcblxyXG5cdFx0LyogTG9hZCBsaXN0IGNvbmZpZ3MgKi9cclxuXHRcdHRoaXMudGFibGVDb25maWcgPSBBcHBTdG9yYWdlLmdldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCBuZXcgVGFibGVDb25maWcoKSk7XHJcblxyXG5cdFx0dGhpcy5zdGlja3kgPSB0aGlzLnRhYmxlQ29uZmlnLnN0aWNreSA/PyBmYWxzZTtcclxuXHJcblx0XHQvKiBTZXQgYmFjayBidXR0b24gZnJvbSByb3V0ZSBwYXJhbXMgKi9cclxuXHRcdHRoaXMuYmFja0J1dHRvbiA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJhbU1hcD8uZ2V0KCdiYWNrQnV0dG9uJykgPT0gJ3RydWUnO1xyXG5cclxuXHRcdC8qIFJlYWQgc29tZSBwYXJhbXMgZnJvbSByb3V0aW5nIGRhdGEgKi9cclxuXHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIGRhdGEucXVlcnkgfHwge30pO1xyXG5cdFx0XHR0aGlzLmNsYXNzVHlwZSB8fD0gZGF0YS5jbGFzc1R5cGU7XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5jbGFzc05hbWUpIHtcclxuXHRcdFx0XHR0aGlzLmNsYXNzTmFtZSA9IGRhdGEuY2xhc3NOYW1lO1xyXG5cclxuXHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUsIHVwZGF0ZSBhbmQgZGVsZXRlIGJhc2VkIG9uIHRoZSBjbGFzcyBuYW1lICovXHJcblx0XHRcdFx0dGhpcy5jYW5DcmVhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYFVwZGF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5EZWxldGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYERlbGV0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSBbLi4uKGRhdGEuY29sdW1ucyB8fCBbXSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IGRhdGEuZW5kcG9pbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmluY2x1ZGVzKSB7XHJcblx0XHRcdFx0dGhpcy5pbmNsdWRlcyA9IGRhdGEuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkgJiYgeCAhPSAnY29sdW1ucycpIHtcclxuXHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSBkYXRhW3hdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgY29sdW1ucyBmcm9tIGNsYXNzICovXHJcblx0XHRpZiAodGhpcy5jbGFzc1R5cGUpIHtcclxuXHRcdFx0dGhpcy5jbGFzc0luc3RhbmNlID0gbmV3IHRoaXMuY2xhc3NUeXBlKCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgdGhlIHRhYmxlIGRlZmluaXRpb24gdXNpbmcgdGhlIGNsYXNzIHR5cGUgKi9cclxuXHRcdFx0dmFyIHRhYmxlRGVmaW5pdGlvbiA9IGdldFRhYmxlRGVmaW5pdGlvbih0aGlzLmNsYXNzVHlwZSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHByb3BzIGluIHRoZSBjdXJyZW50IG9iamVjdCBmcm9tIHRoZSB0YWJsZSBkZWZpbml0aW9uICovXHJcblx0XHRcdE9iamVjdC5rZXlzKHRhYmxlRGVmaW5pdGlvbiB8fCB7fSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSkge1xyXG5cdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoKHRoaXMgYXMgYW55KVt4XSkgJiYgQXJyYXkuaXNBcnJheSgodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF0pKSB7XHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSAodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF0uY29uY2F0KCh0aGlzIGFzIGFueSlbeF0pXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQodGhpcyBhcyBhbnkpW3hdID0gKHRhYmxlRGVmaW5pdGlvbiBhcyBhbnkpW3hdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgZW5kcG9pbnQgZnJvbSB0YWJsZSBkZWZpbml0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0YWJsZURlZmluaXRpb24/LmVuZHBvaW50O1xyXG5cclxuXHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUsIHVwZGF0ZSBhbmQgZGVsZXRlIGJhc2VkIG9uIHRoZSBhcGkgZW5kcG9pbnQgKi9cclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgQ3JlYXRlJHt0aGlzLnNlcnZpY2UuZW5kcG9pbnR9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYFVwZGF0ZSR7dGhpcy5zZXJ2aWNlLmVuZHBvaW50fWApO1xyXG5cdFx0XHRcdHRoaXMuY2FuRGVsZXRlIHx8PSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKGBEZWxldGUke3RoaXMuc2VydmljZS5lbmRwb2ludH1gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGRlZmludGlvbiAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5jb2x1bW5zKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGFibGVEZWZpbml0aW9uLmNvbHVtbnMubWFwKHggPT4geyByZXR1cm4geyAuLi54IH0gfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEhhbmRsZSBldmVudHMgKi9cclxuXHRcdFx0dGhpcy5jb2x1bW5zPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgeC5ldmVudCA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdGxldCBldmVudE5hbWU6IHN0cmluZyA9ICgoeC5ldmVudCkgYXMgc3RyaW5nKTtcclxuXHRcdFx0XHRcdHguZXZlbnQgPSAocm93OiBhbnkpID0+ICh4LmV2ZW50QXJncyA/ICh0aGlzIGFzIGFueSlbZXZlbnROYW1lXShyb3csIHguZXZlbnRBcmdzKSA6ICh0aGlzIGFzIGFueSlbZXZlbnROYW1lXShyb3cpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogSGlkZSBjb2x1bW5zIHVzaW5nIHJvdXRlIGRhdGEgKi9cclxuXHRcdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAheC5oaWRlIHx8ICF4LmhpZGUoZGF0YSwgdW5kZWZpbmVkLCB0aGlzKSk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogR2V0IGN1c3RvbSBhY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHR2YXIgYWN0aW9ucyA9IHRhYmxlRGVmaW5pdGlvbj8uYWN0aW9ucztcclxuXHRcdFx0aWYgKGFjdGlvbnMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdGFjdGlvbnMuZm9yRWFjaCh5ID0+IHRoaXMucm93TWVudUl0ZW1zPy5wdXNoKHkpKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEZpbHRlciB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgaW5kaXZpZHVhbCBjb2x1bW4ncyBjb2x1bW5TZXRzIHByb3BlcnR5IGFuZCB0aGUgZ2xvYmFsIGNvbHVtblNldHMgKi9cclxuXHRcdGNvbnN0IHNlbGVjdGVkQ29sdW1ucyA9ICh0aGlzLmNvbHVtblNldHM/Lmxlbmd0aCA/PyAwKSA+IDBcclxuXHRcdFx0PyB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IHRoaXMuY29sdW1uU2V0cz8uc29tZShzZXQgPT4gYy5jb2x1bW5TZXRzPy5pbmNsdWRlcyhzZXQpKSlcclxuXHRcdFx0OiB0aGlzLmNvbHVtbnM7XHJcblxyXG5cdFx0LyogSGlkZSBleGNsdWRlZCBjb2x1bW5zICovXHJcblx0XHR0aGlzLmNvbHVtbnMgPSBzZWxlY3RlZENvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF0aGlzLmV4Y2x1ZGVkQ29sdW1ucz8uaW5jbHVkZXMoeC5uYW1lKSk7XHJcblxyXG5cdFx0LyogQWRkIGxpc3QgbW5ldSBpdGVtcyAqL1xyXG5cdFx0dGhpcy5hZGRUb29sYmFyTWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZHluYW1pY1RhYmxlKSB7XHJcblx0XHRcdC8qIEFkZCBtZW51IGl0ZW1zIGZvciBlYWNoIHJvdyAqL1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlIGFjdGlvbiBjb2x1bW4gYWxyZWFkeSBleGlzdHMgKi9cclxuXHRcdFx0dmFyIGFjdGlvbkNvbG11biA9ICh0aGlzLmNvbHVtbnMgYXMgVGFibGVDb2x1bW5bXSk/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG5cclxuXHRcdFx0LyogSWYgc28sIGp1c3QgYWRkIHRoZSBtZW51IGl0ZW1zIHRvIGl0ICovXHJcblx0XHRcdGlmIChhY3Rpb25Db2xtdW4pIHtcclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zID8/PSBbXTtcclxuXHRcdFx0XHR0aGlzLnJvd01lbnVJdGVtcy5mb3JFYWNoKHkgPT4gYWN0aW9uQ29sbXVuIS5yb3dNZW51SXRlbXMhLnVuc2hpZnQoeSkpO1xyXG5cclxuXHRcdFx0XHQvKiBDcmVhdGUgYSB0YWJsZSBtZW51ICovXHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLm1lbnUgPSBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdGl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtc1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBPdGhlcndpc2UgYWRkIGEgbmV3IG9uZSAqL1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMucHVzaChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdFx0aW5kZXg6IDIwMDAsXHJcblx0XHRcdFx0XHRuYW1lOiAnYWN0aW9uJyxcclxuXHRcdFx0XHRcdGNvbHVtblNldHM6IFsnYWN0aW9uJywgJ2NvbW1vbiddLFxyXG5cdFx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkFjdGlvbixcclxuXHRcdFx0XHRcdGRpc2FibGVkOiB0cnVlLFxyXG5cdFx0XHRcdFx0bWVudTogbmV3IEFjdGlvbkl0ZW0oe1xyXG5cdFx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHJvd01lbnVJdGVtczogdGhpcy5yb3dNZW51SXRlbXMsXHJcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxyXG5cdFx0XHRcdFx0c3RpY2t5RW5kOiB0cnVlXHJcblx0XHRcdFx0fSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnModHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHF1ZXJ5IHBhcmFtcyBpbnRvIHF1ZXJ5IG9iamVjdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiBPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIHggfHwge30sIHsgcmV0dXJuVXJsOiBudWxsIH0pKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLnNvcnQgPSB0aGlzLmR5bmFtaWNUYWJsZT8ubWF0U29ydCB8fCAodGhpcy5zb3J0ID8gdGhpcy5zb3J0IDogbmV3IE1hdFNvcnQoKSk7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHJcblx0XHQvKiBTZXQgaW5jbHVkZXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pbmNsdWRlcyA9IHRoaXMuaW5jbHVkZXM7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHJcblx0XHQvKiBMb2FkIHF1ZXJ5IGZyb20gYnJvd3NlciBzdG9yYWdlICovXHJcblx0XHR2YXIgc3RvcnJlZFF1ZXJ5ID0gdGhpcy50YWJsZUNvbmZpZz8ucXVlcnk7XHJcblx0XHRpZiAoc3RvcnJlZFF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMgPSB0aGlzLmNsZWFuKHN0b3JyZWRRdWVyeS5maWVsZEZpbHRlcnMpIHx8IHt9O1xyXG5cdFx0XHR0aGlzLnNvcnRBY3RpdmUgPSBzdG9ycmVkUXVlcnkuc29ydEJ5O1xyXG5cdFx0XHR0aGlzLnNvcnREaXJlY3Rpb24gPSBzdG9ycmVkUXVlcnkuc29ydERpcmVjdGlvbjtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2VTaXplID0gc3RvcnJlZFF1ZXJ5LnBhZ2VTaXplO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZUluZGV4ID0gc3RvcnJlZFF1ZXJ5LnBhZ2VJbmRleDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgc29tZSBmaWx0ZXIgZnJvbSByb3V0ZXIgKi9cclxuXHRcdGlmICh0aGlzLnF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5zdGF0aWNGaWVsZEZpbHRlcnMgPSB0aGlzLnF1ZXJ5O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlbWVtYmVyIHRoZSBmaWx0ZXJzICovXHJcblx0XHR0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2Uub25EYXRhTG9hZGVkLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMudGFibGVDb25maWcgPz89IG5ldyBUYWJsZUNvbmZpZygpO1xyXG5cdFx0XHRcdHRoaXMudGFibGVDb25maWcucXVlcnkgPSB7XHJcblx0XHRcdFx0XHRmaWVsZEZpbHRlcnM6IHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMsXHJcblx0XHRcdFx0XHRzb3J0Qnk6IHRoaXMuc29ydD8uYWN0aXZlLFxyXG5cdFx0XHRcdFx0c29ydERpcmVjdGlvbjogdGhpcy5zb3J0Py5kaXJlY3Rpb24gPz8gJ2FzYycsXHJcblx0XHRcdFx0XHRwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplID8/IDE1LFxyXG5cdFx0XHRcdFx0cGFnZUluZGV4OiB0aGlzLnBhZ2luYXRvcj8ucGFnZUluZGV4ID8/IDEsXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0LyogU2F2ZSB0aGUgc2V0dGluZ3MgKi9cclxuXHRcdFx0XHRBcHBTdG9yYWdlLnNldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAbWV0aG9kIGNvbm5lY3RcclxuXHQgKiBAZGVzY3JpcHRpb24gQ29ubmVjdHMgYSBjb2xsZWN0aW9uIHZpZXdlciAoc3VjaCBhcyBhIGRhdGEgdGFibGUpIHRvIHRoZSBkYXRhIHNvdXJjZS4gXHJcblx0ICogICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHN0YXRpYyBmaWVsZCBmaWx0ZXJzIGFuZCBhbiBvcHRpb25hbCBwYXRoLiBcclxuXHQgKiAgICAgICAgICAgICAgSXQgYWxzbyBzdWJzY3JpYmVzIHRvIHRoZSBkYXRhIHNvdXJjZSB0byB1cGRhdGUgdGhlIGRpc3BsYXllZCBpdGVtcyBpbiB0aGUgdGFibGUuXHJcblx0ICogQHBhcmFtIHthbnl9IHN0YXRpY0ZpZWxkRmlsdGVycyAtIE9wdGlvbmFsIHN0YXRpYyBmaWVsZCBmaWx0ZXJzIHRvIGFwcGx5IHdoZW4gY29ubmVjdGluZyB0aGUgZGF0YSBzb3VyY2UuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIE9wdGlvbmFsIHBhdGggZm9yIHRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uLlxyXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KHN0YXRpY0ZpZWxkRmlsdGVyczogYW55ID0gbnVsbCwgcGF0aD86IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0LyogU2V0IHRoZSBvcHRpb25hbCBwYXRoIGZvciB0aGUgZGF0YSBzb3VyY2UgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5wYXRoID0gcGF0aDtcclxuXHJcblx0XHQvKiBBcHBseSBzdGF0aWMgZmllbGQgZmlsdGVycyAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHN0YXRpY0ZpZWxkRmlsdGVycyB8fCB7fTtcclxuXHJcblx0XHQvKiBVcGRhdGUgaXRlbXMgZnJvbSB0aGUgZGF0YSBzb3VyY2UgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHVuZGVmaW5lZCkuc3Vic2NyaWJlKCh4OiBURW50aXR5W10pID0+IHRoaXMuaXRlbXMgPSB4KTtcclxuXHJcblx0XHQvKiBBZGQgcm93IG1lbnUgaXRlbXMgaWYgdGhlIHRhYmxlIGlzIG5vdCBkeW5hbWljICovXHJcblx0XHRpZiAoIXRoaXMuZHluYW1pY1RhYmxlKSB7XHJcblx0XHRcdHRoaXMuYWRkUm93TWVudUl0ZW1zKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBjb2x1bW5zXHJcblx0ICovXHJcblx0cHVibGljIHVwZGF0ZUNvbHVtbnMobG9hZENvbmZpZz86IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdC8qIEdldCBjb25maWcgZnJvbSBsb2NhbCBzdG9yYWdlICovXHJcblx0XHRpZiAobG9hZENvbmZpZykge1xyXG5cdFx0XHR0aGlzLmxvYWRDb2x1bW5Db25maWdzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU29ydCB0aGUgY29sdW1ucyBieSBpbmRleCAqL1xyXG5cdFx0VXRpbHMuc29ydEFycmF5KHRoaXMuY29sdW1ucyB8fCBbXSwgJ2luZGV4Jyk7XHJcblxyXG5cdFx0LyogVHJpZ2dlciBjaGFuZ2VzICovXHJcblx0XHR0aGlzLmR5bmFtaWNUYWJsZT8udXBkYXRlQ29sdW1ucygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVsb2FkcyBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkTGlzdChyZXNldFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXM/LmRhdGFTb3VyY2U/LnJlbG9hZChyZXNldFNlbGVjdGlvbik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZWFyY2hcclxuXHQgKiBAcGFyYW0gZmlsdGVyIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWFyY2goZmlsdGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXI7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBhZGQgcGFnZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuYWRkRGlhbG9nVHlwZSkge1xyXG5cdFx0XHR0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmFkZERpYWxvZ1R5cGUsIHsgd2lkdGg6ICc2NTBweCcsIGRhdGE6IHRoaXMuY2xhc3NJbnN0YW5jZSB9KVxyXG5cdFx0XHRcdC5hZnRlckNsb3NlZCgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRMaXN0KGZhbHNlKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXIgaGFzUGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykubGVuZ3RoID4gMDtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcblx0XHRcdFx0W2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vYWRkYF0sXHJcblx0XHRcdFx0eyBxdWVyeVBhcmFtczogaGFzUGFyYW1zID8geyByZXR1cm5Vcmw6IHRoaXMuY3VycmVudFJvdXRlIH0gOiB7fSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9XHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGVkaXQgcGFnZS5cclxuXHQgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBiZSBlZGl0ZWQuXHJcblx0ICogQHBhcmFtIGNvbnRleHQgLSBBZGRpdGlvbmFsIGNvbnRleHQgZGF0YS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdChlbnRpdHk/OiBURW50aXR5LCBjb250ZXh0PzogYW55KTogdm9pZCB7XHJcblx0XHQvKiBDaGVjayBpZiBlbnRpdHkgaXMgbnVsbCAqL1xyXG5cdFx0aWYgKGVudGl0eSA9PT0gbnVsbCB8fCBlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBtdXN0IGJlIGRlZmluZWQgZm9yIGVkaXRpbmcuJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2hlY2sgaWYgdGV4dCBpcyBzZWxlY3RlZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzVGV4dFNlbGVjdGVkKCkpIHtcclxuXHRcdFx0LyogSWYgYSBjdXN0b20gb25FZGl0IGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBjYWxsIGl0ICovXHJcblx0XHRcdGlmICh0aGlzLm9uRWRpdCkge1xyXG5cdFx0XHRcdC8qIENhbGwgdGhlIGN1c3RvbSBvbkVkaXQgZnVuY3Rpb24gd2l0aCB0aGUgZW50aXR5IGFuZCBjb250ZXh0ICovXHJcblx0XHRcdFx0dGhpcy5vbkVkaXQoZW50aXR5LCBjb250ZXh0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvKiBJZiBvbkVkaXQgaXMgbm90IHByb3ZpZGVkLCBjb25zdHJ1Y3QgdGhlIGVkaXQgcm91dGUgYW5kIG5hdmlnYXRlICovXHJcblx0XHRcdFx0Y29uc3QgaGFzUGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykubGVuZ3RoID4gMDtcclxuXHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gdGhlIGVkaXQgcGFnZSB3aXRoIHRoZSBlbnRpdHkncyBpZCBhbmQgb3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVycyAqL1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG5cdFx0XHRcdFx0W2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vZWRpdGAsIChlbnRpdHkgYXMgYW55KT8uaWRdLFxyXG5cdFx0XHRcdFx0eyBxdWVyeVBhcmFtczogaGFzUGFyYW1zID8geyByZXR1cm5Vcmw6IHRoaXMuY3VycmVudFJvdXRlIH0gOiB7fSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHBhdGNoXHJcblx0ICogQHBhcmFtIHZhbHVlIFRoZSAob3B0aW9uYWwpIHZhbHVlIHRvIGNoYW5nZVxyXG5cdCAqIEBwYXJhbSBpbmNsdWRlcyBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICovXHJcblx0cHVibGljIHBhdGNoKGlkOiBudW1iZXIsIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM/OiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3BhdGNoKGlkLCBmaWVsZHMsIHZhbHVlLCBpbmNsdWRlcywgKF86IGFueSkgPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBjYWxsYmFjayBmdW5jdGlvbiB0byBlIGNhbGxlZCBvbiBzdWNjZXNzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG5cdFx0LyogR2V0IGVudGl0eSBieSBJRCAqL1xyXG5cdFx0bGV0IGVudGl0eSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55PngpLmlkID09PSBpZClbMF07XHJcblx0XHRpZiAoZW50aXR5KSB7XHJcblx0XHRcdC8qIEJ1aWxkIHBhdGNoIG1ldGhvZHMgKi9cclxuXHRcdFx0bGV0IHBhdGNoZXMgPSBmaWVsZHMubWFwKHggPT4geyByZXR1cm4geyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7eH1gLCB2YWx1ZTogdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBlbnRpdHlbeF0gfTsgfSk7XHJcblxyXG5cdFx0XHQvKiBTZW5kIHJlcXVlc3QgKi9cclxuXHRcdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdFx0LnBhdGNoKGlkLCBwYXRjaGVzLCB1bmRlZmluZWQsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6ICh4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3I6IChfKSA9PiB0aGlzLmlzU2F2aW5nID0gZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbShlbnRpdHk/OiBURW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dEZWxldGVJdGVtRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGUoKGVudGl0eSBhcyBhbnkpLmlkKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1EZWxldGVkKDxhbnk+ZW50aXR5KSxcclxuXHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkpIHtcclxuXHRcdFx0dGhpcy5zaG93RGVsZXRlSXRlbXNEaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdGxldCBpZHMgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGVMaXN0KGlkcykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1zRGVsZXRlZChpZHMpLFxyXG5cdFx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUb2dnbGVzIGEgcHJvcGVydHkuXHJcblx0ICogVGhpcyBtZXRob2Qgc3VwcG9ydHMgYm90aCBkaXJlY3QgYW5kIG5lc3RlZCBwcm9wZXJ0aWVzLlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpdGVtIC0gVGhlIG9iamVjdCB3aG9zZSBwcm9wZXJ0eSB3aWxsIGJlIHRvZ2dsZWQuXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHBhdGggdG8gdGhlIHByb3BlcnR5IHRvIHRvZ2dsZSwgd2hpY2ggY2FuIGJlIGEgbmVzdGVkIHByb3BlcnR5IChlLmcuLCAncHJvZmlsZS5uYW1lJykuXHJcblx0ICovXHJcblx0cHVibGljIHRvZ2dsZShpdGVtOiBURW50aXR5LCBwcm9wZXJ0eTogc3RyaW5nID0gJ2VuYWJsZWQnKTogdm9pZCB7XHJcblx0XHQvKiBSZXNvbHZlIHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgKi9cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShpdGVtLCBwcm9wZXJ0eSwgJy8nKTtcclxuXHJcblx0XHQvKiBQcmVwYXJlIHRoZSBwYXRjaCBvcGVyYXRpb24gKi9cclxuXHRcdGNvbnN0IHBhdGNoT3BlcmF0aW9uID0ge1xyXG5cdFx0XHRvcDogJ3JlcGxhY2UnLFxyXG5cdFx0XHRwYXRoOiBgLyR7KHByb3BlcnR5LnN0YXJ0c1dpdGgoJy8nKSA/IHByb3BlcnR5LnN1YnN0cmluZygxKSA6IHByb3BlcnR5KX1gLFxyXG5cdFx0XHR2YWx1ZTogdmFsdWVcclxuXHRcdH07XHJcblxyXG5cdFx0LyogQXBwbHkgdGhlIHBhdGNoIG9wZXJhdGlvbiAqL1xyXG5cdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdC5wYXRjaCgoPGFueT5pdGVtKS5pZCwgW3BhdGNoT3BlcmF0aW9uXSlcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyB0YXJuc2ZlcnMgY3N2IGZpbGVzXHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gdXBsb2FkXHJcblx0ICogQHBhcmFtIHJlbG9hZCBJZiB0cnVlLCByZWxvYWQgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUsIHJlbG9hZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS51cGxvYWQoZmlsZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UgPSByZXNwb25zZS5qc29uKCk7XHJcblxyXG5cdFx0XHRcdC8qIFJlbG9hZCBsaXN0ICovXHJcblx0XHRcdFx0aWYgKHJlbG9hZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkTGlzdCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGRvY3VtZW50XHJcblx0ICogQHBhcmFtIGVudGl0eSBcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWQoZW50aXR5PzogVEVudGl0eSwgcGF0aDogc3RyaW5nID0gJ2Rvd25sb2FkJyk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmRvd25sb2FkKGAke3BhdGh9LyR7KGVudGl0eSBhcyBJRW50aXR5KS5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwge30pLCB4LmZpbGVuYW1lKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRHVwbGljYXRlcyBhIHJlY29yZFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2F0ZShlbnRpdHk/OiBURW50aXR5KSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZHVwbGljYXRlKChlbnRpdHkgYXMgYW55KS5pZCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgaW5mb3JtcyB0aGUgdGFibGUgaG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHJvd3MgdG8gXHJcblx0ICogdHJhY2sgaG93IHRoZSBkYXRhIGNoYW5nZXMgd2l0aCBlYWNoIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIGl0ZW0uaWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPcGVucyB0aGUgY29uZmlnIGRpYWxvZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuQ29uZmlnRGlhbG9nKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzEwODBweCcsXHJcblx0XHRcdGhlaWdodDogJzgzMHB4JyxcclxuXHRcdFx0ZGF0YTogdGhpcyxcclxuXHRcdFx0ZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbJ2ZsYXQtZGlhbG9nJywgJ2RpYWxvZy1mdWxsLXNjcmVlbicsICdkaWFsb2ctcmVzaXphYmxlJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5yZWxvYWRQYWdlKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2F2ZXMgdGhlIHRhYmxlIGNvbmZpZ1xyXG5cdCAqIEBwYXJhbSB0YWJsZUNvbmZpZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzYXZlQ29uZmlncyh0YWJsZUNvbmZpZzogVGFibGVDb25maWcpOiB2b2lkIHtcclxuXHRcdGlmICh0YWJsZUNvbmZpZykge1xyXG5cdFx0XHQvKiBTZXQgdGhlIGNvbmZpZyBpbiB0aGUgbGlzdCBjb25maWcgKi9cclxuXHRcdFx0dGhpcy50YWJsZUNvbmZpZyA/Pz0gbmV3IFRhYmxlQ29uZmlnKCk7XHJcblx0XHRcdHRoaXMudGFibGVDb25maWcuY29sdW1ucyA9IHRhYmxlQ29uZmlnLmNvbHVtbnMgPz8gW107XHJcblx0XHRcdHRoaXMudGFibGVDb25maWcuc3RpY2t5ID0gdGFibGVDb25maWcuc3RpY2t5O1xyXG5cdFx0XHR0aGlzLnRhYmxlQ29uZmlnLnRhYmxlV2lkdGggPSB0YWJsZUNvbmZpZy50YWJsZVdpZHRoO1xyXG5cclxuXHRcdFx0LyogU2F2ZSB0aGUgY29uZmlncyAqL1xyXG5cdFx0XHRBcHBTdG9yYWdlLnNldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgdGFibGUgY29sdW1ucyAqL1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYW5kIGFwcGxpZXMgdGhlIHRhYmxlIGNvbHVtbiBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRDb2x1bW5Db25maWdzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMudGFibGVDb25maWc/LmNvbHVtbnMpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHQodGhpcy50YWJsZUNvbmZpZz8uY29sdW1ucyA/PyBbXSk/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHR2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoeTogVGFibGVDb2x1bW4pID0+IHkubmFtZSA9PSB4Lm5hbWUpWzBdO1xyXG5cdFx0XHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGNvbHVtbiwgeCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gaW5jIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbmNsdWRlKC4uLmluYzogc3RyaW5nW10pIHtcclxuXHRcdGluYz8uZm9yRWFjaCh4ID0+IHRoaXMuaW5jbHVkZXMucHVzaCh4KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgdG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFRvb2xiYXJNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgJ0RlbGV0ZSBzZWxlY3RlZCcgbWVudSBpdGVtICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGVsZXRlU2VsZWN0ZWQ6RGVsZXRlIHNlbGVjdGVkYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLmRlbGV0ZUl0ZW1zKCksXHJcblx0XHRcdFx0aGlkZTogKCkgPT4gIXRoaXMuY2FuRGVsZXRlLFxyXG5cdFx0XHRcdGRpc2FibGU6ICgpID0+ICF0aGlzLmNhbkV4ZWN1dGVNdWx0aXBsZU9wZXJhdGlvbnMoKHg6IFRFbnRpdHkpID0+IHRoaXMuY2FuRGVsZXRlSXRlbSh4KSlcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogT3BlbnMgY29uZmlnIGRpYWxvZyAqL1xyXG5cdFx0aWYgKHRoaXMuY29uZmlndXJhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGNvbmZpZ3VyZVRhYmxlOkNvbmZpZ3VyZSB0YWJsZWAsXHJcblx0XHRcdFx0aWNvbjogJ3NldHRpbmdzJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5vcGVuQ29uZmlnRGlhbG9nKClcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMudG9vbGJhck1lbnVJdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdC8qIFNvcnQgdGhlIG1lbnUgaXRlbXMgYnkgaW5kZXggKi9cclxuXHRcdFx0VXRpbHMuc29ydEFycmF5KHRoaXMudG9vbGJhck1lbnVJdGVtcywgJ2luZGV4Jyk7XHJcblxyXG5cdFx0XHQvKiBBZGQgdGhlIHRvb2xiYXIgbWVudSBpdGVtcyB0byB0aGUgdGhlIHRvb2xiYXIgYWN0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJBY3Rpb25zLnB1c2goeyBpY29uOiAnbW9yZV92ZXJ0JywgaXRlbXM6IHRoaXMudG9vbGJhck1lbnVJdGVtcyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRSb3dNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgY2hlY2tib3ggY29sdW1uICovXHJcblx0XHRpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcblx0XHRcdHRoaXMuY29sdW1ucy51bnNoaWZ0KG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0bmFtZTogJ3NlbGVjdCcsXHJcblx0XHRcdFx0Y29sdW1uU2V0czogWydzZWxlY3QnLCAnY29tbW9uJ10sXHJcblx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkNoZWNrYm94LFxyXG5cdFx0XHRcdGRpc2FibGU6IChyb3c/OiBURW50aXR5KSA9PiAhdGhpcy5jYW5TZWxlY3RJdGVtKHJvdyksXHJcblx0XHRcdFx0Y2VsbE5nQ2xhc3M6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuc2VsZWN0Um93TmdDbGFzcyhyb3cpLFxyXG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcblx0XHRcdFx0c3RpY2t5OiB0cnVlXHJcblx0XHRcdH0pKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZHVwbGljYXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmR1cGxpY2FibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkdXBsaWNhdGU6RHVwbGljYXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9jb3B5JyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZHVwbGljYXRlKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkR1cGxpY2F0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZG93bmxvYWQgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZG93bmxvYWRhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZG93bmxvYWQ6RG93bmxvYWRgLFxyXG5cdFx0XHRcdGljb246ICdmaWxlX2Rvd25sb2FkJyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZG93bmxvYWQocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRG93bmxvYWRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRlbGV0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUgJiYgdGhpcy5jYW5EZWxldGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5kZWxldGVJdGVtKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkRlbGV0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZWRpdCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLmNhblVwZGF0ZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGVkaXQ6RWRpdGAsXHJcblx0XHRcdFx0aWNvbjogJ2VkaXRfbm90ZScsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtYmx1ZS00MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5lZGl0KHJvdywgdGhpcyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkVkaXRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBpdGVtIGNhbiBiZSBzZWxlY3RlZC5cclxuXHQgKiBcclxuXHQgKiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgc2VsZWN0YWJsZSBpZjpcclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBzZWxlY3RhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBpc1NlbGVjdGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIGl0ZW0gdG8gY2hlY2suXHJcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGFibGU7IG90aGVyd2lzZSwgYGZhbHNlYC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuU2VsZWN0SXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gKCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdzZWxlY3RhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydzZWxlY3RhYmxlJ10pICYmXHJcblx0XHRcdCghZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnaXNTZWxlY3RhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydpc1NlbGVjdGFibGUnXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBpdGVtIGNhbiBiZSBkZWxldGVkLlxyXG5cdCAqIFxyXG5cdCAqIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBkZWxldGFibGUgaWY6XHJcblx0ICogLSBUaGUgYGNhbkRlbGV0ZWAgZmxhZyBpcyBgdHJ1ZWAuXHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgZGVsZXRhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBpc0RlbGV0YWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgaXRlbSB0byBjaGVjay5cclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gaXMgZGVsZXRhYmxlOyBvdGhlcndpc2UsIGBmYWxzZWAuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkRlbGV0ZUl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FuRGVsZXRlICYmXHJcblx0XHRcdCghZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZGVsZXRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydkZWxldGFibGUnXSkgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdpc0RlbGV0YWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnaXNEZWxldGFibGUnXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBpdGVtIGNhbiBiZSBlZGl0ZWQuXHJcblx0ICogXHJcblx0ICogQW4gaXRlbSBpcyBjb25zaWRlcmVkIGVkaXRhYmxlIGlmOlxyXG5cdCAqIC0gVGhlIGBjYW5VcGRhdGVgIGZsYWcgaXMgYHRydWVgLlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGVkaXRhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBpc0VkaXRhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZW50aXR5IFRoZSBpdGVtIHRvIGNoZWNrLlxyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSBpcyBlZGl0YWJsZTsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FZGl0SXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYW5VcGRhdGUgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdlZGl0YWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnZWRpdGFibGUnXSkgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdpc0VkaXRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydpc0VkaXRhYmxlJ10pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gaXRlbSBjYW4gYmUgZG93bmxvYWRlZC5cclxuXHQgKiBcclxuXHQgKiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgZG93bmxvYWRhYmxlIGlmOlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGRvd25sb2FkYWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgaXNEb3dubG9hZGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIGl0ZW0gdG8gY2hlY2suXHJcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIGlzIGRvd25sb2FkYWJsZTsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5Eb3dubG9hZEl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZG93bmxvYWRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydkb3dubG9hZGFibGUnXSkgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdpc0Rvd25sb2FkYWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnaXNEb3dubG9hZGFibGUnXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBpdGVtIGNhbiBiZSBkdXBsaWNhdGVkLlxyXG5cdCAqIFxyXG5cdCAqIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBkdXBsaWNhYmxlIGlmOlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGR1cGxpY2FibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGlzRHVwbGljYWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgaXRlbSB0byBjaGVjay5cclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gaXMgZHVwbGljYWJsZTsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5EdXBsaWNhdGVJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2R1cGxpY2FibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2R1cGxpY2FibGUnXSkgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdpc0R1cGxpY2FibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2lzRHVwbGljYWJsZSddKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgTmdDbGFzcyBvYmplY3QgZm9yIHNlbGVjdCBjb2x1bW5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VsZWN0Um93TmdDbGFzcyhfOiBURW50aXR5KTogYW55IHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgdGhlcmUgYW55IHNlbGVjdGVkIHJvd1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYXNTZWxlY3RlZFJvd3MoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5oYXNWYWx1ZSgpIH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXR5IGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtRGVsZXRlZChpdGVtOiBJRW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdGllcyBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbXNEZWxldGVkKGlkczogbnVtYmVyW10pOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgY2FuIHBlcmZvcm0gbXVsdGlwbGUgb3BlcmF0aW9ucyAoTGlrZSAnZGVsZXRlIHNlbGVjdGVkJykuXHJcblx0ICogQHBhcmFtIGFjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucyhhY3Rpb24/OiBGdW5jdGlvbik6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRSb3dzKCkgJiYgKGFjdGlvbiA/IHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/LnNlbGVjdGVkPy5ldmVyeSgoeDogYW55KSA9PiBhY3Rpb24oeCkpIDogdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBxdWVyeS5cclxuXHQgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0eSwgd2hpY2ggY2FuIGJlIGRlbGltaXRlZCBieSBhIGN1c3RvbSBjaGFyYWN0ZXIgKGUuZy4sIGRvdCwgc2xhc2gpLlxyXG5cdCAqIEBwYXJhbSBkZWxpbWl0ZXIgLSBUaGUgZGVsaW1pdGVyIHVzZWQgdG8gc2VwYXJhdGUgbGV2ZWxzIGluIHRoZSBwcm9wZXJ0eSBwYXRoIChkZWZhdWx0IGlzICcuJykuXHJcblx0ICogQHJldHVybnMgLSBUaGUgdmFsdWUgb2YgdGhlIG5lc3RlZCBwcm9wZXJ0eSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nLCBkZWxpbWl0ZXI6IHN0cmluZyA9ICcuJyk6IGFueSB7XHJcblx0XHQvKiBTcGxpdCB0aGUgcGF0aCBpbnRvIGFuIGFycmF5IG9mIGtleXMgdXNpbmcgdGhlIHNwZWNpZmllZCBkZWxpbWl0ZXIgKi9cclxuXHRcdGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KGRlbGltaXRlcik7XHJcblxyXG5cdFx0LyogVHJhdmVyc2UgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgYXJyYXkgb2Yga2V5cyAqL1xyXG5cdFx0cmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4gYWNjICYmIGFjY1trZXldLCBvYmopO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVzcG9uZHMgdG8gdXNlci1pbml0aWF0ZWQgZXZlbnRzXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG5cdHB1YmxpYyBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gYWRkIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdhJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuXHRcdFx0c3dpdGNoIChldmVudC5rZXkpIHtcclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnUGFnZVVwJzpcclxuXHRcdFx0XHRcdHRoaXMucGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIG5leHQgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ1BhZ2VEb3duJzpcclxuXHRcdFx0XHRcdHRoaXMucGFnaW5hdG9yLm5leHRQYWdlKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayB1c2VkIGZvciBhbnkgY3VzdG9tIGNsZWFudXAgdGhhdCBuZWVkcyB0byBvY2N1ciBcclxuXHQgKiB3aGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHRcdGlmICh0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgU3ltYm9sLnRvU3RyaW5nVGFnIHdlbGwta25vd24gc3ltYm9sIGlzIGEgc3RyaW5nIHZhbHVlZCBwcm9wZXJ0eSB0aGF0IGlzIHVzZWQgXHJcblx0ICogaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBkZWZhdWx0IHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3RcclxuXHQgKi9cclxuXHRnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAnR2VuZXJpY0xpc3RDb21wb25lbnQnOyB9XHJcbn0iXX0=
|
|
966
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0s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QkFEZixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBVWxDLElBQUk7c0JBRFYsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWlHN0IsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMkk3QyxVQUFVO3NCQURoQixLQUFLO2dCQTZ2QkMsbUJBQW1CO3NCQUR6QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwU3RvcmFnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXJzL2FwcC1zdG9yYWdlJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi90YWJsZS9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3RhYmxlL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUvdGFibGUuZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IElHZW5lcmljTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWdlbmVyaWMtbGlzdC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXRhYmxlLWNvbmZpZy1kaWFsb2cvZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudDxcclxuXHRURW50aXR5IGV4dGVuZHMgSUVudGl0eSB8IGFueSxcclxuXHRUU2VydmljZSBleHRlbmRzIEdlbmVyaWNTZXJ2aWNlPFRFbnRpdHk+XHJcbj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHk+LCBPbkRlc3Ryb3kge1xyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBwYWdpbmF0b3JcclxuXHQgKiBAZGVzY3JpcHRpb24gQSByZWZlcmVuY2UgdG8gdGhlIE1hdFBhZ2luYXRvciBlbGVtZW50LiBcclxuXHQgKiAgICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGZvciBoYW5kbGluZyBwYWdpbmF0aW9uIGluIHRoZSBkYXRhIHRhYmxlLlxyXG5cdCAqIEB0eXBlIHtNYXRQYWdpbmF0b3IgfCB1bmRlZmluZWR9XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHBhZ2luYXRvcj86IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHNvcnRcclxuXHQgKiBAZGVzY3JpcHRpb24gQSByZWZlcmVuY2UgdG8gdGhlIE1hdFNvcnQgZWxlbWVudC4gXHJcblx0ICogICAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgaGFuZGxpbmcgc29ydGluZyBmdW5jdGlvbmFsaXR5IGluIHRoZSBkYXRhIHRhYmxlLlxyXG5cdCAqIEB0eXBlIHtNYXRTb3J0IHwgdW5kZWZpbmVkfVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc29ydD86IE1hdFNvcnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBwYWdlU2l6ZU9wdGlvbnNcclxuXHQgKiBAZGVzY3JpcHRpb24gQW4gYXJyYXkgb2YgYXZhaWxhYmxlIHBhZ2Ugc2l6ZSBvcHRpb25zIGZvciB0aGUgZGF0YSB0YWJsZS5cclxuXHQgKiBAdHlwZSB7bnVtYmVyW119XHJcblx0ICovXHJcblx0cHVibGljIHBhZ2VTaXplT3B0aW9uczogQXJyYXk8bnVtYmVyPiA9IFs1LCAxMCwgMTUsIDIwLCAzMCwgNTAsIDEwMCwgMjAwXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGluY2x1ZGVzXHJcblx0ICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB0aGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZSB3aGVuIGZldGNoaW5nIGRhdGEuXHJcblx0ICogQHR5cGUge3N0cmluZ1tdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpbmNsdWRlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgcHJvamVjdGlvblxyXG5cdCAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIHByb2plY3Rpb24ocykgdG8gYXBwbHkgd2hlbiBmZXRjaGluZyBkYXRhLlxyXG5cdCAqICAgICAgICAgICAgICBDYW4gYmUgYSBzaW5nbGUgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXHJcblx0ICogQHR5cGUge3N0cmluZyB8IHN0cmluZ1tdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZXhjbHVkZWRDb2x1bW5zXHJcblx0ICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB0aGUgY29sdW1ucyB0byBleGNsdWRlIGZyb20gdGhlIGRhdGEgdGFibGUuXHJcblx0ICogQHR5cGUge3N0cmluZ1tdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBleGNsdWRlZENvbHVtbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHF1ZXJ5XHJcblx0ICogQGRlc2NyaXB0aW9uIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciBmZXRjaGluZyBkYXRhIGZyb20gdGhlIHNlcnZlci5cclxuXHQgKiBAdHlwZSB7YW55fVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBxdWVyeTogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBkYXRhU291cmNlXHJcblx0ICogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGRhdGEgdGFibGUsIG1hbmFnaW5nIHRoZSBkYXRhIGRpc3BsYXllZC5cclxuXHQgKiBAdHlwZSB7VGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPiB8IGFueX1cclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZT86IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBUU2VydmljZT4gfCBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBpdGVtc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgaXRlbXMgYXJyYXkgYXMgYW4gb3B0aW9uYWwgYXJyYXkgb2YgZW50aXRpZXMuXHJcblx0ICogQHR5cGUge1RFbnRpdHlbXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgaXRlbXM/OiBURW50aXR5W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHNvcnRBY3RpdmVcclxuXHQgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnRseSBhY3RpdmUgc29ydCBjb2x1bW4gaW4gdGhlIGRhdGEgdGFibGUuXHJcblx0ICogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH1cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZT86IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHNvcnREaXJlY3Rpb25cclxuXHQgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24gZm9yIHRoZSBkYXRhIHRhYmxlLiBEZWZhdWx0IGlzICdhc2MnLlxyXG5cdCAqIEB0eXBlIHtTb3J0RGlyZWN0aW9ufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBjbGFzc0luc3RhbmNlXHJcblx0ICogQGRlc2NyaXB0aW9uIEFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdGFibGUgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBlbnRpdHkuXHJcblx0ICogQHR5cGUge2FueX1cclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NJbnN0YW5jZTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgY29sdW1uc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBBbiBhcnJheSBkZWZpbmluZyB0aGUgdGFibGUgY29sdW1ucyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAdHlwZSB7VGFibGVDb2x1bW5bXX1cclxuXHQgKi9cclxuXHRwdWJsaWMgY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgY29sdW1uU2V0c1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBVc2VkIHRvIGRpc3BsYXkgc3BlY2lmaWMgY29sdW1ucyBpbiB0aGUgdGFibGUuIFxyXG5cdCAqICAgICAgICAgICAgICBUaGlzIGFycmF5IGRlZmluZXMgc2V0cyBvZiBjb2x1bW5zIHRoYXQgY2FuIGJlIHNob3duIFxyXG5cdCAqICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24sIGFsbG93aW5nIGZvciBkeW5hbWljIHRhYmxlIFxyXG5cdCAqICAgICAgICAgICAgICBjb2x1bW4gY3VzdG9taXphdGlvbi5cclxuXHQgKiBAdHlwZSB7c3RyaW5nW119XHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtblNldHM/OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZHluYW1pY1RhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIEEgcmVmZXJlbmNlIHRvIHRoZSBkeW5hbWljIHRhYmxlIGNvbXBvbmVudC5cclxuXHQgKiBAdHlwZSB7VmREeW5hbWljVGFibGVDb21wb25lbnR9XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgZHluYW1pY1RhYmxlPzogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSB0YWJsZUNvbmZpZ1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIHRhYmxlLCBpbmNsdWRpbmcgcXVlcnkgYW5kIGNvbHVtbiBzZXR0aW5ncy5cclxuXHQgKiBAdHlwZSB7VGFibGVDb25maWd9XHJcblx0ICovXHJcblx0cHVibGljIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IG5ldyBUYWJsZUNvbmZpZygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgYWRkRGlhbG9nVHlwZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgZGlhbG9nIHVzZWQgZm9yIGNyZWF0aW5nIG5ldyBlbnRyaWVzIGluIHRoZSB0YWJsZS5cclxuXHQgKiBAdHlwZSB7YW55fVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGREaWFsb2dUeXBlOiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgc2VsZWN0YWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzaG93IHRoZSBjb2x1bW4gJ0NoZWNrYm94Jy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBhZGRhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNob3cgdGhlIGJ1dHRvbiAnQWRkJy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBlZGl0YWJsZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdFZGl0Jy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZGVsZXRhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZScuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBkb3dubG9hZGFibGVcclxuXHQgKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRG93bmxvYWQnLlxyXG5cdCAqIEB0eXBlIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IGR1cGxpY2FibGVcclxuXHQgKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRHVwbGljYXRlJy5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRwdWJsaWMgZHVwbGljYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgY29uZmlndXJhYmxlXHJcblx0ICogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0NvbmZpZ3VyZSB0YWJsZScuXHJcblx0ICogQHR5cGUge2Jvb2xlYW59XHJcblx0ICovXHJcblx0cHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHN0aWNreVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBGbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIHRhYmxlIGhlYWRlcnMgb3IgY29sdW1ucyBzaG91bGQgc3RpY2sgXHJcblx0ICogICAgICAgICAgICAgIHRvIHRoZSB2aWV3cG9ydCBkdXJpbmcgc2Nyb2xsaW5nLlxyXG5cdCAqIEB0eXBlIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGlja3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHRhYmxlV2lkdGhcclxuXHQgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgb3ZlcmFsbCB3aWR0aCBvZiB0aGUgdGFibGUuXHJcblx0ICogQHR5cGUge251bWJlcn1cclxuXHQgKi9cclxuXHRwdWJsaWMgdGFibGVXaWR0aD86IG51bWJlcjtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHJvd05nQ2xhc3NcclxuXHQgKiBAZGVzY3JpcHRpb24gQSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIGR5bmFtaWMgQ1NTIGNsYXNzIGZvciB0YWJsZSByb3dzLlxyXG5cdCAqIEB0eXBlIHsoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueX1cclxuXHQgKi9cclxuXHRwdWJsaWMgcm93TmdDbGFzcz86ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgcm93Q2xpY2tcclxuXHQgKiBAZGVzY3JpcHRpb24gQSBmdW5jdGlvbiB0byBoYW5kbGUgcm93IGNsaWNrIGV2ZW50cy5cclxuXHQgKiBAdHlwZSB7KHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnl9XHJcblx0ICovXHJcblx0cHVibGljIHJvd0NsaWNrPzogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBvbkVkaXRcclxuXHQgKiBAZGVzY3JpcHRpb24gQSBmdW5jdGlvbiB0byBoYW5kbGUgZWRpdCBhY3Rpb25zIGZvciBhIHJvdy5cclxuXHQgKiBAdHlwZSB7KHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnl9XHJcblx0ICovXHJcblx0cHVibGljIG9uRWRpdD86ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgZGV0YWlsc1RlbXBsYXRlXHJcblx0ICogQGRlc2NyaXB0aW9uIFRlbXBsYXRlIHN0cmluZyBmb3IgZGlzcGxheWluZyByb3cgZGV0YWlscy5cclxuXHQgKiBAdHlwZSB7c3RyaW5nfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZXRhaWxzVGVtcGxhdGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSB0b29sYmFyQWN0aW9uc1xyXG5cdCAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiB0b29sYmFyIGFjdGlvbiBpdGVtcy5cclxuXHQgKiBAdHlwZSB7QWN0aW9uSXRlbVtdfVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW3tcclxuXHRcdGljb246ICdyZWZyZXNoJyxcclxuXHRcdHRvb2x0aXA6ICRsb2NhbGl6ZWA6QEByZWZyZXNoTGlzdDpSZWZyZXNoIHRoZSBsaXN0YCxcclxuXHRcdGV2ZW50OiAoKSA9PiB0aGlzLmxvYWRMaXN0KClcclxuXHR9XTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5IHRvb2xiYXJNZW51SXRlbXNcclxuXHQgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgdG9vbGJhciBtZW51IGl0ZW1zIGZvciBhY3Rpb25zLlxyXG5cdCAqIEB0eXBlIHtBY3Rpb25JdGVtPFRFbnRpdHk+W119XHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgcm93TWVudUl0ZW1zXHJcblx0ICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIG1lbnUgaXRlbXMgZm9yIGFjdGlvbnMgcmVsYXRlZCB0byB0YWJsZSByb3dzLlxyXG5cdCAqIEB0eXBlIHtBY3Rpb25JdGVtPFRFbnRpdHk+W119XHJcblx0ICovXHJcblx0cHVibGljIHJvd01lbnVJdGVtczogQWN0aW9uSXRlbTxURW50aXR5PltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBiYWNrQnV0dG9uXHJcblx0ICogQGRlc2NyaXB0aW9uIEFkZHMgYSBiYWNrIGJ1dHRvbiB0byB0aGUgdG9vbGJhci5cclxuXHQgKiBAdHlwZSB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBiYWNrQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eSBkYXRhTG9hZGVkU3Vic2NyaXB0aW9uXHJcblx0ICogQGRlc2NyaXB0aW9uIFN1YnNjcmlwdGlvbiB0byB0aGUgRGF0YUxvYWRlZCBldmVudC5cclxuXHQgKiBAdHlwZSB7U3Vic2NyaXB0aW9ufVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkYXRhTG9hZGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHkgY29uZmlnc0tleVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBUaGUga2V5IHVzZWQgZm9yIHN0b3JpbmcgdGFibGUgY29uZmlndXJhdGlvbnMuXHJcblx0ICogQHR5cGUge3N0cmluZ31cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY29uZmlnc0tleTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yIGZvciB0aGUgdGFibGUgY29tcG9uZW50LlxyXG5cdCAqIEBwYXJhbSBzZXJ2aWNlIFRoZSBzZXJ2aWNlIHVzZWQgZm9yIG1hbmFnaW5nIHRhYmxlIGRhdGEuXHJcblx0ICogQHBhcmFtIHJvdXRlIEFjdGl2YXRlZFJvdXRlIGZvciByZXRyaWV2aW5nIHJvdXRlIGluZm9ybWF0aW9uLlxyXG5cdCAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBDaGFuZ2VEZXRlY3RvclJlZiBmb3IgbWFuYWdpbmcgdmlldyB1cGRhdGVzLlxyXG5cdCAqIEBwYXJhbSBjbGFzc1R5cGUgVGhlIGNsYXNzIHR5cGUgb2YgdGhlIHRhYmxlIGVudGl0eS5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGNsYXNzVHlwZT86IHsgbmV3KCk6IFRFbnRpdHkgfVxyXG5cdCkge1xyXG5cdFx0c3VwZXIocm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkluaXQoKTtcclxuXHJcblx0XHQvKiBBc3NlbWJsZSB0aGUgY29uZmlnIGtleSAqL1xyXG5cdFx0dGhpcy5jb25maWdzS2V5ID0gW3RoaXMucHJvamVjdE5hbWUsICdsaXN0LWNvbmZpZy52MicsIHdpbmRvdy5idG9hKHRoaXMuY3VycmVudEJhc2VSb3V0ZSA/PyAnJyksIHRoaXMubWVudT8udGl0bGVdLmpvaW4oJy4nKTtcclxuXHJcblx0XHQvKiBMb2FkIGxpc3QgY29uZmlncyAqL1xyXG5cdFx0dGhpcy50YWJsZUNvbmZpZyA9IEFwcFN0b3JhZ2UuZ2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIG5ldyBUYWJsZUNvbmZpZygpKTtcclxuXHJcblx0XHR0aGlzLnN0aWNreSA9IHRoaXMudGFibGVDb25maWcuc3RpY2t5ID8/IGZhbHNlO1xyXG5cclxuXHRcdC8qIFNldCBiYWNrIGJ1dHRvbiBmcm9tIHJvdXRlIHBhcmFtcyAqL1xyXG5cdFx0dGhpcy5iYWNrQnV0dG9uID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ2JhY2tCdXR0b24nKSA9PSAndHJ1ZSc7XHJcblxyXG5cdFx0LyogUmVhZCBzb21lIHBhcmFtcyBmcm9tIHJvdXRpbmcgZGF0YSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgZGF0YS5xdWVyeSB8fCB7fSk7XHJcblx0XHRcdHRoaXMuY2xhc3NUeXBlIHx8PSBkYXRhLmNsYXNzVHlwZTtcclxuXHJcblx0XHRcdGlmIChkYXRhLmNsYXNzTmFtZSkge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gZGF0YS5jbGFzc05hbWU7XHJcblxyXG5cdFx0XHRcdC8qIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSwgdXBkYXRlIGFuZCBkZWxldGUgYmFzZWQgb24gdGhlIGNsYXNzIG5hbWUgKi9cclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgQ3JlYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhbkRlbGV0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgRGVsZXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuY29sdW1ucykge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi4oZGF0YS5jb2x1bW5zIHx8IFtdKV07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuaW5jbHVkZXMpIHtcclxuXHRcdFx0XHR0aGlzLmluY2x1ZGVzID0gZGF0YS5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSAmJiB4ICE9ICdjb2x1bW5zJykge1xyXG5cdFx0XHRcdFx0KHRoaXMgYXMgYW55KVt4XSA9IGRhdGFbeF07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjb2x1bW5zIGZyb20gY2xhc3MgKi9cclxuXHRcdGlmICh0aGlzLmNsYXNzVHlwZSkge1xyXG5cdFx0XHR0aGlzLmNsYXNzSW5zdGFuY2UgPSBuZXcgdGhpcy5jbGFzc1R5cGUoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgdGFibGUgZGVmaW5pdGlvbiB1c2luZyB0aGUgY2xhc3MgdHlwZSAqL1xyXG5cdFx0XHR2YXIgdGFibGVEZWZpbml0aW9uID0gZ2V0VGFibGVEZWZpbml0aW9uKHRoaXMuY2xhc3NUeXBlKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgcHJvcHMgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IGZyb20gdGhlIHRhYmxlIGRlZmluaXRpb24gKi9cclxuXHRcdFx0T2JqZWN0LmtleXModGFibGVEZWZpbml0aW9uIHx8IHt9KS5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmhhc093blByb3BlcnR5KHgpKSB7XHJcblx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSgodGhpcyBhcyBhbnkpW3hdKSAmJiBBcnJheS5pc0FycmF5KCh0YWJsZURlZmluaXRpb24gYXMgYW55KVt4XSkpIHtcclxuXHRcdFx0XHRcdFx0KHRoaXMgYXMgYW55KVt4XSA9ICh0YWJsZURlZmluaXRpb24gYXMgYW55KVt4XS5jb25jYXQoKHRoaXMgYXMgYW55KVt4XSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSAodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8qIFNldCBlbmRwb2ludCBmcm9tIHRhYmxlIGRlZmluaXRpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQ7XHJcblxyXG5cdFx0XHRcdC8qIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSwgdXBkYXRlIGFuZCBkZWxldGUgYmFzZWQgb24gdGhlIGFwaSBlbmRwb2ludCAqL1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlIHx8PSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKGBDcmVhdGUke3RoaXMuc2VydmljZS5lbmRwb2ludH1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgVXBkYXRlJHt0aGlzLnNlcnZpY2UuZW5kcG9pbnR9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5EZWxldGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYERlbGV0ZSR7dGhpcy5zZXJ2aWNlLmVuZHBvaW50fWApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgZnJvbSB0aGUgdGFibGUgZGVmaW50aW9uICovXHJcblx0XHRcdGlmICh0YWJsZURlZmluaXRpb24/LmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0YWJsZURlZmluaXRpb24uY29sdW1ucy5tYXAoeCA9PiB7IHJldHVybiB7IC4uLnggfSB9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogSGFuZGxlIGV2ZW50cyAqL1xyXG5cdFx0XHR0aGlzLmNvbHVtbnM/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uKSA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB4LmV2ZW50ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0bGV0IGV2ZW50TmFtZTogc3RyaW5nID0gKCh4LmV2ZW50KSBhcyBzdHJpbmcpO1xyXG5cdFx0XHRcdFx0eC5ldmVudCA9IChyb3c6IGFueSkgPT4gKHguZXZlbnRBcmdzID8gKHRoaXMgYXMgYW55KVtldmVudE5hbWVdKHJvdywgeC5ldmVudEFyZ3MpIDogKHRoaXMgYXMgYW55KVtldmVudE5hbWVdKHJvdykpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBIaWRlIGNvbHVtbnMgdXNpbmcgcm91dGUgZGF0YSAqL1xyXG5cdFx0XHR0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF4LmhpZGUgfHwgIXguaGlkZShkYXRhLCB1bmRlZmluZWQsIHRoaXMpKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBHZXQgY3VzdG9tIGFjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdHZhciBhY3Rpb25zID0gdGFibGVEZWZpbml0aW9uPy5hY3Rpb25zO1xyXG5cdFx0XHRpZiAoYWN0aW9ucyAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9ucy5mb3JFYWNoKHkgPT4gdGhpcy5yb3dNZW51SXRlbXM/LnB1c2goeSkpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogRmlsdGVyIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBpbmRpdmlkdWFsIGNvbHVtbidzIGNvbHVtblNldHMgcHJvcGVydHkgYW5kIHRoZSBnbG9iYWwgY29sdW1uU2V0cyAqL1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRDb2x1bW5zID0gKHRoaXMuY29sdW1uU2V0cz8ubGVuZ3RoID8/IDApID4gMFxyXG5cdFx0XHQ/IHRoaXMuY29sdW1ucz8uZmlsdGVyKGMgPT4gdGhpcy5jb2x1bW5TZXRzPy5zb21lKHNldCA9PiBjLmNvbHVtblNldHM/LmluY2x1ZGVzKHNldCkpKVxyXG5cdFx0XHQ6IHRoaXMuY29sdW1ucztcclxuXHJcblx0XHQvKiBIaWRlIGV4Y2x1ZGVkIGNvbHVtbnMgKi9cclxuXHRcdHRoaXMuY29sdW1ucyA9IHNlbGVjdGVkQ29sdW1ucz8uZmlsdGVyKCh4OiBUYWJsZUNvbHVtbikgPT4gIXRoaXMuZXhjbHVkZWRDb2x1bW5zPy5pbmNsdWRlcyh4Lm5hbWUpKTtcclxuXHJcblx0XHQvKiBBZGQgbGlzdCBtbmV1IGl0ZW1zICovXHJcblx0XHR0aGlzLmFkZFRvb2xiYXJNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0LyogQWRkIG1lbnUgaXRlbXMgZm9yIGVhY2ggcm93ICovXHJcblx0XHRcdHRoaXMuYWRkUm93TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0XHQvKiBDaGVjayBpZiB0aGUgYWN0aW9uIGNvbHVtbiBhbHJlYWR5IGV4aXN0cyAqL1xyXG5cdFx0XHR2YXIgYWN0aW9uQ29sbXVuID0gKHRoaXMuY29sdW1ucyBhcyBUYWJsZUNvbHVtbltdKT8uZmluZCh4ID0+IHgubmFtZSA9PSAnYWN0aW9uJyk7XHJcblxyXG5cdFx0XHQvKiBJZiBzbywganVzdCBhZGQgdGhlIG1lbnUgaXRlbXMgdG8gaXQgKi9cclxuXHRcdFx0aWYgKGFjdGlvbkNvbG11bikge1xyXG5cdFx0XHRcdGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgPz89IFtdO1xyXG5cdFx0XHRcdHRoaXMucm93TWVudUl0ZW1zLmZvckVhY2goeSA9PiBhY3Rpb25Db2xtdW4hLnJvd01lbnVJdGVtcyEudW5zaGlmdCh5KSk7XHJcblxyXG5cdFx0XHRcdC8qIENyZWF0ZSBhIHRhYmxlIG1lbnUgKi9cclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ubWVudSA9IG5ldyBBY3Rpb25JdGVtKHtcclxuXHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIE90aGVyd2lzZSBhZGQgYSBuZXcgb25lICovXHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucy5wdXNoKG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0XHRpbmRleDogMjAwMCxcclxuXHRcdFx0XHRcdG5hbWU6ICdhY3Rpb24nLFxyXG5cdFx0XHRcdFx0Y29sdW1uU2V0czogWydhY3Rpb24nLCAnY29tbW9uJ10sXHJcblx0XHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQWN0aW9uLFxyXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXHJcblx0XHRcdFx0XHRtZW51OiBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0cm93TWVudUl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtcyxcclxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcblx0XHRcdFx0XHRzdGlja3lFbmQ6IHRydWVcclxuXHRcdFx0XHR9KSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1ucyh0cnVlKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcXVlcnkgcGFyYW1zIGludG8gcXVlcnkgb2JqZWN0ICovXHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSh4ID0+IE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgeCB8fCB7fSwgeyByZXR1cm5Vcmw6IG51bGwgfSkpO1xyXG5cclxuXHRcdC8qIEluaXRpbGlhbGl6ZSB0aGUgZGF0YSBzb3VyY2Ugd2l0aCB0aGUgY3VycmVudCBzZXJ2aWNlLCBwYWdpbmF0b3IgYW5kIHNvcnQgKi9cclxuXHRcdHRoaXMuc29ydCA9IHRoaXMuZHluYW1pY1RhYmxlPy5tYXRTb3J0IHx8ICh0aGlzLnNvcnQgPyB0aGlzLnNvcnQgOiBuZXcgTWF0U29ydCgpKTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBUYWJsZURhdGFTb3VyY2U8VEVudGl0eSwgVFNlcnZpY2U+KHRoaXMuc2VydmljZSEsIHRoaXMucGFnaW5hdG9yLCB0aGlzLnNvcnQpO1xyXG5cclxuXHRcdC8qIFNldCBpbmNsdWRlcyAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmluY2x1ZGVzID0gdGhpcy5pbmNsdWRlcztcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cclxuXHRcdC8qIExvYWQgcXVlcnkgZnJvbSBicm93c2VyIHN0b3JhZ2UgKi9cclxuXHRcdHZhciBzdG9ycmVkUXVlcnkgPSB0aGlzLnRhYmxlQ29uZmlnPy5xdWVyeTtcclxuXHRcdGlmIChzdG9ycmVkUXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyA9IHRoaXMuY2xlYW4oc3RvcnJlZFF1ZXJ5LmZpZWxkRmlsdGVycykgfHwge307XHJcblx0XHRcdHRoaXMuc29ydEFjdGl2ZSA9IHN0b3JyZWRRdWVyeS5zb3J0Qnk7XHJcblx0XHRcdHRoaXMuc29ydERpcmVjdGlvbiA9IHN0b3JyZWRRdWVyeS5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgPSBzdG9ycmVkUXVlcnkucGFnZVNpemU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlSW5kZXggPSBzdG9ycmVkUXVlcnkucGFnZUluZGV4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBzb21lIGZpbHRlciBmcm9tIHJvdXRlciAqL1xyXG5cdFx0aWYgKHRoaXMucXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHRoaXMucXVlcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVtZW1iZXIgdGhlIGZpbHRlcnMgKi9cclxuXHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFMb2FkZWQuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0dGhpcy50YWJsZUNvbmZpZyA/Pz0gbmV3IFRhYmxlQ29uZmlnKCk7XHJcblx0XHRcdFx0dGhpcy50YWJsZUNvbmZpZy5xdWVyeSA9IHtcclxuXHRcdFx0XHRcdGZpZWxkRmlsdGVyczogdGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyxcclxuXHRcdFx0XHRcdHNvcnRCeTogdGhpcy5zb3J0Py5hY3RpdmUsXHJcblx0XHRcdFx0XHRzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnQ/LmRpcmVjdGlvbiA/PyAnYXNjJyxcclxuXHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTUsXHJcblx0XHRcdFx0XHRwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMSxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvKiBTYXZlIHRoZSBzZXR0aW5ncyAqL1xyXG5cdFx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMudGFibGVDb25maWcpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBtZXRob2QgY29ubmVjdFxyXG5cdCAqIEBkZXNjcmlwdGlvbiBDb25uZWN0cyBhIGNvbGxlY3Rpb24gdmlld2VyIChzdWNoIGFzIGEgZGF0YSB0YWJsZSkgdG8gdGhlIGRhdGEgc291cmNlLiBcclxuXHQgKiAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIGRhdGEgc291cmNlIHdpdGggc3RhdGljIGZpZWxkIGZpbHRlcnMgYW5kIGFuIG9wdGlvbmFsIHBhdGguIFxyXG5cdCAqICAgICAgICAgICAgICBJdCBhbHNvIHN1YnNjcmliZXMgdG8gdGhlIGRhdGEgc291cmNlIHRvIHVwZGF0ZSB0aGUgZGlzcGxheWVkIGl0ZW1zIGluIHRoZSB0YWJsZS5cclxuXHQgKiBAcGFyYW0ge2FueX0gc3RhdGljRmllbGRGaWx0ZXJzIC0gT3B0aW9uYWwgc3RhdGljIGZpZWxkIGZpbHRlcnMgdG8gYXBwbHkgd2hlbiBjb25uZWN0aW5nIHRoZSBkYXRhIHNvdXJjZS5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gT3B0aW9uYWwgcGF0aCBmb3IgdGhlIGRhdGEgc291cmNlIGNvbm5lY3Rpb24uXHJcblx0ICogQHJldHVybnMge3ZvaWR9XHJcblx0ICovXHJcblx0cHVibGljIGNvbm5lY3Qoc3RhdGljRmllbGRGaWx0ZXJzOiBhbnkgPSBudWxsLCBwYXRoPzogc3RyaW5nKTogdm9pZCB7XHJcblx0XHQvKiBTZXQgdGhlIG9wdGlvbmFsIHBhdGggZm9yIHRoZSBkYXRhIHNvdXJjZSAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnBhdGggPSBwYXRoO1xyXG5cclxuXHRcdC8qIEFwcGx5IHN0YXRpYyBmaWVsZCBmaWx0ZXJzICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2Uuc3RhdGljRmllbGRGaWx0ZXJzID0gc3RhdGljRmllbGRGaWx0ZXJzIHx8IHt9O1xyXG5cclxuXHRcdC8qIFVwZGF0ZSBpdGVtcyBmcm9tIHRoZSBkYXRhIHNvdXJjZSAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmNvbm5lY3QodW5kZWZpbmVkKS5zdWJzY3JpYmUoKHg6IFRFbnRpdHlbXSkgPT4gdGhpcy5pdGVtcyA9IHgpO1xyXG5cclxuXHRcdC8qIEFkZCByb3cgbWVudSBpdGVtcyBpZiB0aGUgdGFibGUgaXMgbm90IGR5bmFtaWMgKi9cclxuXHRcdGlmICghdGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0dGhpcy5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlQ29sdW1ucyhsb2FkQ29uZmlnPzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0LyogR2V0IGNvbmZpZyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cclxuXHRcdGlmIChsb2FkQ29uZmlnKSB7XHJcblx0XHRcdHRoaXMubG9hZENvbHVtbkNvbmZpZ3MoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTb3J0IHRoZSBjb2x1bW5zIGJ5IGluZGV4ICovXHJcblx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy5jb2x1bW5zIHx8IFtdLCAnaW5kZXgnKTtcclxuXHJcblx0XHQvKiBUcmlnZ2VyIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMuZHluYW1pY1RhYmxlPy51cGRhdGVDb2x1bW5zKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWxvYWRzIGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRMaXN0KHJlc2V0U2VsZWN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0dGhpcz8uZGF0YVNvdXJjZT8ucmVsb2FkKHJlc2V0U2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlYXJjaFxyXG5cdCAqIEBwYXJhbSBmaWx0ZXIgXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaChmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlcjtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5hZGREaWFsb2dUeXBlKSB7XHJcblx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuYWRkRGlhbG9nVHlwZSwgeyB3aWR0aDogJzY1MHB4JywgZGF0YTogdGhpcy5jbGFzc0luc3RhbmNlIH0pXHJcblx0XHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9hZExpc3QoZmFsc2UpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHZhciBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuXHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9hZGRgXSxcclxuXHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgZWRpdCBwYWdlLlxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRvIGJlIGVkaXRlZC5cclxuXHQgKiBAcGFyYW0gY29udGV4dCAtIEFkZGl0aW9uYWwgY29udGV4dCBkYXRhLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0KGVudGl0eT86IFRFbnRpdHksIGNvbnRleHQ/OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIENoZWNrIGlmIGVudGl0eSBpcyBudWxsICovXHJcblx0XHRpZiAoZW50aXR5ID09PSBudWxsIHx8IGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignRW50aXR5IG11c3QgYmUgZGVmaW5lZCBmb3IgZWRpdGluZy4nKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDaGVjayBpZiB0ZXh0IGlzIHNlbGVjdGVkICovXHJcblx0XHRpZiAoIXRoaXMuaXNUZXh0U2VsZWN0ZWQoKSkge1xyXG5cdFx0XHQvKiBJZiBhIGN1c3RvbSBvbkVkaXQgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGNhbGwgaXQgKi9cclxuXHRcdFx0aWYgKHRoaXMub25FZGl0KSB7XHJcblx0XHRcdFx0LyogQ2FsbCB0aGUgY3VzdG9tIG9uRWRpdCBmdW5jdGlvbiB3aXRoIHRoZSBlbnRpdHkgYW5kIGNvbnRleHQgKi9cclxuXHRcdFx0XHR0aGlzLm9uRWRpdChlbnRpdHksIGNvbnRleHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIElmIG9uRWRpdCBpcyBub3QgcHJvdmlkZWQsIGNvbnN0cnVjdCB0aGUgZWRpdCByb3V0ZSBhbmQgbmF2aWdhdGUgKi9cclxuXHRcdFx0XHRjb25zdCBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byB0aGUgZWRpdCBwYWdlIHdpdGggdGhlIGVudGl0eSdzIGlkIGFuZCBvcHRpb25hbCBxdWVyeSBwYXJhbWV0ZXJzICovXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcblx0XHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9lZGl0YCwgKGVudGl0eSBhcyBhbnkpPy5pZF0sXHJcblx0XHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5fcGF0Y2goaWQsIGZpZWxkcywgdmFsdWUsIGluY2x1ZGVzLCAoXzogYW55KSA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHBhdGNoXHJcblx0ICogQHBhcmFtIHZhbHVlIFRoZSAob3B0aW9uYWwpIHZhbHVlIHRvIGNoYW5nZVxyXG5cdCAqIEBwYXJhbSBpbmNsdWRlcyBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGUgY2FsbGVkIG9uIHN1Y2Nlc3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3BhdGNoKGlkOiBudW1iZXIsIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM/OiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IEZ1bmN0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuXHJcblx0XHQvKiBHZXQgZW50aXR5IGJ5IElEICovXHJcblx0XHRsZXQgZW50aXR5ID0gdGhpcy5kYXRhU291cmNlLml0ZW1zPy5maWx0ZXIoKHg6IGFueSkgPT4gKDxhbnk+eCkuaWQgPT09IGlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0XHQucGF0Y2goaWQsIHBhdGNoZXMsIHVuZGVmaW5lZCwgeyBoZWFkZXJzOiB7ICdTaG93LU1lc3NhZ2UnOiAnWWVzJyB9LCBwYXJhbXM6IGluY2x1ZGVzID8gVXRpbHMudG9IdHRwUGFyYW1zKHsgaW5jbHVkZXM6IGluY2x1ZGVzIH0pIDogbnVsbCB9KVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKHgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc0NhbGxiYWNrKHgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCBlcnJvcjogKF8pID0+IHRoaXMuaXNTYXZpbmcgPSBmYWxzZVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGVJdGVtKGVudGl0eT86IFRFbnRpdHkpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmRlbGV0ZSgoZW50aXR5IGFzIGFueSkuaWQpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbURlbGV0ZWQoPGFueT5lbnRpdHkpLFxyXG5cdFx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGVJdGVtcygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmRhdGFTb3VyY2Uuc2VsZWN0aW9uTW9kZWwuaGFzVmFsdWUoKSkge1xyXG5cdFx0XHR0aGlzLnNob3dEZWxldGVJdGVtc0RpYWxvZygpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0bGV0IGlkcyA9IHRoaXMuZGF0YVNvdXJjZS5nZXRTZWxlY3RlZElkcygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXJ2aWNlLmRlbGV0ZUxpc3QoaWRzKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbXNEZWxldGVkKGlkcyksXHJcblx0XHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRvZ2dsZXMgYSBwcm9wZXJ0eS5cclxuXHQgKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBib3RoIGRpcmVjdCBhbmQgbmVzdGVkIHByb3BlcnRpZXMuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGl0ZW0gLSBUaGUgb2JqZWN0IHdob3NlIHByb3BlcnR5IHdpbGwgYmUgdG9nZ2xlZC5cclxuXHQgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcGF0aCB0byB0aGUgcHJvcGVydHkgdG8gdG9nZ2xlLCB3aGljaCBjYW4gYmUgYSBuZXN0ZWQgcHJvcGVydHkgKGUuZy4sICdwcm9maWxlLm5hbWUnKS5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9nZ2xlKGl0ZW06IFRFbnRpdHksIHByb3BlcnR5OiBzdHJpbmcgPSAnZW5hYmxlZCcpOiB2b2lkIHtcclxuXHRcdC8qIFJlc29sdmUgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSAqL1xyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGl0ZW0sIHByb3BlcnR5LCAnLycpO1xyXG5cclxuXHRcdC8qIFByZXBhcmUgdGhlIHBhdGNoIG9wZXJhdGlvbiAqL1xyXG5cdFx0Y29uc3QgcGF0Y2hPcGVyYXRpb24gPSB7XHJcblx0XHRcdG9wOiAncmVwbGFjZScsXHJcblx0XHRcdHBhdGg6IGAvJHsocHJvcGVydHkuc3RhcnRzV2l0aCgnLycpID8gcHJvcGVydHkuc3Vic3RyaW5nKDEpIDogcHJvcGVydHkpfWAsXHJcblx0XHRcdHZhbHVlOiB2YWx1ZVxyXG5cdFx0fTtcclxuXHJcblx0XHQvKiBBcHBseSB0aGUgcGF0Y2ggb3BlcmF0aW9uICovXHJcblx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0LnBhdGNoKCg8YW55Pml0ZW0pLmlkLCBbcGF0Y2hPcGVyYXRpb25dKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9hZExpc3QoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGxvYWRzIHRhcm5zZmVycyBjc3YgZmlsZXNcclxuXHQgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byB1cGxvYWRcclxuXHQgKiBAcGFyYW0gcmVsb2FkIElmIHRydWUsIHJlbG9hZCBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWQoZmlsZTogRmlsZSwgcmVsb2FkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLnVwbG9hZChmaWxlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHRyZXNwb25zZSA9IHJlc3BvbnNlLmpzb24oKTtcclxuXHJcblx0XHRcdFx0LyogUmVsb2FkIGxpc3QgKi9cclxuXHRcdFx0XHRpZiAocmVsb2FkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRMaXN0KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LCBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRG93bmxvYWRzIGEgZG9jdW1lbnRcclxuXHQgKiBAcGFyYW0gZW50aXR5IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZChlbnRpdHk/OiBURW50aXR5LCBwYXRoOiBzdHJpbmcgPSAnZG93bmxvYWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYCR7cGF0aH0vJHsoZW50aXR5IGFzIElFbnRpdHkpLmlkfWApLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7fSksIHguZmlsZW5hbWUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEdXBsaWNhdGVzIGEgcmVjb3JkXHJcblx0ICogQHBhcmFtIGVudGl0eSBcclxuXHQgKi9cclxuXHRwdWJsaWMgZHVwbGljYXRlKGVudGl0eT86IFRFbnRpdHkpIHtcclxuXHRcdHRoaXMuc2VydmljZS5kdXBsaWNhdGUoKGVudGl0eSBhcyBhbnkpLmlkKS5zdWJzY3JpYmUoXyA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBpbmZvcm1zIHRoZSB0YWJsZSBob3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgcm93cyB0byBcclxuXHQgKiB0cmFjayBob3cgdGhlIGRhdGEgY2hhbmdlcyB3aXRoIGVhY2ggdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdHJhY2tCeUlkKF86IG51bWJlciwgaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gaXRlbS5pZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wZW5zIHRoZSBjb25maWcgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5Db25maWdEaWFsb2coKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiAnMTA4MHB4JyxcclxuXHRcdFx0aGVpZ2h0OiAnODMwcHgnLFxyXG5cdFx0XHRkYXRhOiB0aGlzLFxyXG5cdFx0XHRkaXNhYmxlQ2xvc2U6IHRydWUsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZmxhdC1kaWFsb2cnLCAnZGlhbG9nLWZ1bGwtc2NyZWVuJywgJ2RpYWxvZy1yZXNpemFibGUnXVxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoXyA9PiB0aGlzLnJlbG9hZFBhZ2UoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyB0aGUgdGFibGUgY29uZmlnXHJcblx0ICogQHBhcmFtIHRhYmxlQ29uZmlnXHJcblx0ICovXHJcblx0cHVibGljIHNhdmVDb25maWdzKHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyk6IHZvaWQge1xyXG5cdFx0aWYgKHRhYmxlQ29uZmlnKSB7XHJcblx0XHRcdC8qIFNldCB0aGUgY29uZmlnIGluIHRoZSBsaXN0IGNvbmZpZyAqL1xyXG5cdFx0XHR0aGlzLnRhYmxlQ29uZmlnID8/PSBuZXcgVGFibGVDb25maWcoKTtcclxuXHRcdFx0dGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zID0gdGFibGVDb25maWcuY29sdW1ucyA/PyBbXTtcclxuXHRcdFx0dGhpcy50YWJsZUNvbmZpZy5zdGlja3kgPSB0YWJsZUNvbmZpZy5zdGlja3k7XHJcblx0XHRcdHRoaXMudGFibGVDb25maWcudGFibGVXaWR0aCA9IHRhYmxlQ29uZmlnLnRhYmxlV2lkdGg7XHJcblxyXG5cdFx0XHQvKiBTYXZlIHRoZSBjb25maWdzICovXHJcblx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMudGFibGVDb25maWcpO1xyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zICovXHJcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1ucygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhbmQgYXBwbGllcyB0aGUgdGFibGUgY29sdW1uIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZENvbHVtbkNvbmZpZ3MoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy50YWJsZUNvbmZpZz8uY29sdW1ucykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdCh0aGlzLnRhYmxlQ29uZmlnPy5jb2x1bW5zID8/IFtdKT8uZm9yRWFjaCgoeDogVGFibGVDb2x1bW5Db25maWcpID0+IHtcclxuXHRcdFx0XHRcdHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKCh5OiBUYWJsZUNvbHVtbikgPT4geS5uYW1lID09IHgubmFtZSlbMF07XHJcblx0XHRcdFx0XHRpZiAoY29sdW1uKSB7XHJcblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oY29sdW1uLCB4KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBpbmMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluY2x1ZGUoLi4uaW5jOiBzdHJpbmdbXSkge1xyXG5cdFx0aW5jPy5mb3JFYWNoKHggPT4gdGhpcy5pbmNsdWRlcy5wdXNoKHgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCB0b29sYmFyIG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYWRkVG9vbGJhck1lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCAnRGVsZXRlIHNlbGVjdGVkJyBtZW51IGl0ZW0gKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMucHVzaCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGVTZWxlY3RlZDpEZWxldGUgc2VsZWN0ZWRgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6ICgpID0+IHRoaXMuZGVsZXRlSXRlbXMoKSxcclxuXHRcdFx0XHRoaWRlOiAoKSA9PiAhdGhpcy5jYW5EZWxldGUsXHJcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gIXRoaXMuY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucygoeDogVEVudGl0eSkgPT4gdGhpcy5jYW5EZWxldGVJdGVtKHgpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBPcGVucyBjb25maWcgZGlhbG9nICovXHJcblx0XHRpZiAodGhpcy5jb25maWd1cmFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAY29uZmlndXJlVGFibGU6Q29uZmlndXJlIHRhYmxlYCxcclxuXHRcdFx0XHRpY29uOiAnc2V0dGluZ3MnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLm9wZW5Db25maWdEaWFsb2coKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy50b29sYmFyTWVudUl0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0LyogU29ydCB0aGUgbWVudSBpdGVtcyBieSBpbmRleCAqL1xyXG5cdFx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy50b29sYmFyTWVudUl0ZW1zLCAnaW5kZXgnKTtcclxuXHJcblx0XHRcdC8qIEFkZCB0aGUgdG9vbGJhciBtZW51IGl0ZW1zIHRvIHRoZSB0aGUgdG9vbGJhciBhY3Rpb25zICovXHJcblx0XHRcdHRoaXMudG9vbGJhckFjdGlvbnMucHVzaCh7IGljb246ICdtb3JlX3ZlcnQnLCBpdGVtczogdGhpcy50b29sYmFyTWVudUl0ZW1zIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFJvd01lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGVja2JveCBjb2x1bW4gKi9cclxuXHRcdGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuXHRcdFx0dGhpcy5jb2x1bW5zLnVuc2hpZnQobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRuYW1lOiAnc2VsZWN0JyxcclxuXHRcdFx0XHRjb2x1bW5TZXRzOiBbJ3NlbGVjdCcsICdjb21tb24nXSxcclxuXHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQ2hlY2tib3gsXHJcblx0XHRcdFx0ZGlzYWJsZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhblNlbGVjdEl0ZW0ocm93KSxcclxuXHRcdFx0XHRjZWxsTmdDbGFzczogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5zZWxlY3RSb3dOZ0NsYXNzKHJvdyksXHJcblx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcclxuXHRcdFx0XHRzdGlja3k6IHRydWVcclxuXHRcdFx0fSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBkdXBsaWNhdGUgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZHVwbGljYWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGR1cGxpY2F0ZTpEdXBsaWNhdGVgLFxyXG5cdFx0XHRcdGljb246ICdmaWxlX2NvcHknLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5kdXBsaWNhdGUocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRHVwbGljYXRlSXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBkb3dubG9hZCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kb3dubG9hZGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkb3dubG9hZDpEb3dubG9hZGAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfZG93bmxvYWQnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5kb3dubG9hZChyb3cpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c/OiBURW50aXR5KSA9PiAhdGhpcy5jYW5Eb3dubG9hZEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZGVsZXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSAmJiB0aGlzLmNhbkRlbGV0ZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c/OiBURW50aXR5KSA9PiB0aGlzLmRlbGV0ZUl0ZW0ocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRGVsZXRlSXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBlZGl0IG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmVkaXRhYmxlICYmIHRoaXMuY2FuVXBkYXRlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZWRpdDpFZGl0YCxcclxuXHRcdFx0XHRpY29uOiAnZWRpdF9ub3RlJyxcclxuXHRcdFx0XHRpY29uQ2xhc3M6ICd0Yy1ibHVlLTQwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c/OiBURW50aXR5KSA9PiB0aGlzLmVkaXQocm93LCB0aGlzKSxcclxuXHRcdFx0XHRoaWRlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRWRpdEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGl0ZW0gY2FuIGJlIHNlbGVjdGVkLlxyXG5cdCAqIFxyXG5cdCAqIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBzZWxlY3RhYmxlIGlmOlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYHNlbGVjdGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGlzU2VsZWN0YWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgaXRlbSB0byBjaGVjay5cclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0YWJsZTsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5TZWxlY3RJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ3NlbGVjdGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ3NlbGVjdGFibGUnXSkgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdpc1NlbGVjdGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2lzU2VsZWN0YWJsZSddKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGl0ZW0gY2FuIGJlIGRlbGV0ZWQuXHJcblx0ICogXHJcblx0ICogQW4gaXRlbSBpcyBjb25zaWRlcmVkIGRlbGV0YWJsZSBpZjpcclxuXHQgKiAtIFRoZSBgY2FuRGVsZXRlYCBmbGFnIGlzIGB0cnVlYC5cclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBkZWxldGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGlzRGVsZXRhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZW50aXR5IFRoZSBpdGVtIHRvIGNoZWNrLlxyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSBpcyBkZWxldGFibGU7IG90aGVyd2lzZSwgYGZhbHNlYC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRGVsZXRlSXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYW5EZWxldGUgJiZcclxuXHRcdFx0KCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkZWxldGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2RlbGV0YWJsZSddKSAmJlxyXG5cdFx0XHQoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2lzRGVsZXRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydpc0RlbGV0YWJsZSddKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGl0ZW0gY2FuIGJlIGVkaXRlZC5cclxuXHQgKiBcclxuXHQgKiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgZWRpdGFibGUgaWY6XHJcblx0ICogLSBUaGUgYGNhblVwZGF0ZWAgZmxhZyBpcyBgdHJ1ZWAuXHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgZWRpdGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIC0gSXQgZG9lcyBub3QgaGF2ZSB0aGUgYGlzRWRpdGFibGVgIHByb3BlcnR5LCBvciB0aGUgcHJvcGVydHkgaXMgYHRydWVgLlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIGl0ZW0gdG8gY2hlY2suXHJcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIGlzIGVkaXRhYmxlOyBvdGhlcndpc2UsIGBmYWxzZWAuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkVkaXRJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmNhblVwZGF0ZSAmJlxyXG5cdFx0XHQoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2VkaXRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydlZGl0YWJsZSddKSAmJlxyXG5cdFx0XHQoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2lzRWRpdGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2lzRWRpdGFibGUnXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBpdGVtIGNhbiBiZSBkb3dubG9hZGVkLlxyXG5cdCAqIFxyXG5cdCAqIEFuIGl0ZW0gaXMgY29uc2lkZXJlZCBkb3dubG9hZGFibGUgaWY6XHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgZG93bmxvYWRhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiAtIEl0IGRvZXMgbm90IGhhdmUgdGhlIGBpc0Rvd25sb2FkYWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgaXRlbSB0byBjaGVjay5cclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gaXMgZG93bmxvYWRhYmxlOyBvdGhlcndpc2UsIGBmYWxzZWAuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkRvd25sb2FkSXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gKCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkb3dubG9hZGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2Rvd25sb2FkYWJsZSddKSAmJlxyXG5cdFx0XHQoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2lzRG93bmxvYWRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydpc0Rvd25sb2FkYWJsZSddKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGl0ZW0gY2FuIGJlIGR1cGxpY2F0ZWQuXHJcblx0ICogXHJcblx0ICogQW4gaXRlbSBpcyBjb25zaWRlcmVkIGR1cGxpY2FibGUgaWY6XHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgZHVwbGljYWJsZWAgcHJvcGVydHksIG9yIHRoZSBwcm9wZXJ0eSBpcyBgdHJ1ZWAuXHJcblx0ICogLSBJdCBkb2VzIG5vdCBoYXZlIHRoZSBgaXNEdXBsaWNhYmxlYCBwcm9wZXJ0eSwgb3IgdGhlIHByb3BlcnR5IGlzIGB0cnVlYC5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZW50aXR5IFRoZSBpdGVtIHRvIGNoZWNrLlxyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSBpcyBkdXBsaWNhYmxlOyBvdGhlcndpc2UsIGBmYWxzZWAuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkR1cGxpY2F0ZUl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZHVwbGljYWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnZHVwbGljYWJsZSddKSAmJlxyXG5cdFx0XHQoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2lzRHVwbGljYWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnaXNEdXBsaWNhYmxlJ10pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJucyBOZ0NsYXNzIG9iamVjdCBmb3Igc2VsZWN0IGNvbHVtblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZWxlY3RSb3dOZ0NsYXNzKF86IFRFbnRpdHkpOiBhbnkgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSB0aGVyZSBhbnkgc2VsZWN0ZWQgcm93XHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGhhc1NlbGVjdGVkUm93cygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/Lmhhc1ZhbHVlKCkgfTtcclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdHkgaGFzIGJlZW4gZGVsZXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckl0ZW1EZWxldGVkKGl0ZW06IElFbnRpdHkpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0aWVzIGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtc0RlbGV0ZWQoaWRzOiBudW1iZXJbXSk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkTGlzdCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgdXNlciBjYW4gcGVyZm9ybSBtdWx0aXBsZSBvcGVyYXRpb25zIChMaWtlICdkZWxldGUgc2VsZWN0ZWQnKS5cclxuXHQgKiBAcGFyYW0gYWN0aW9uIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FeGVjdXRlTXVsdGlwbGVPcGVyYXRpb25zKGFjdGlvbj86IEZ1bmN0aW9uKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5oYXNTZWxlY3RlZFJvd3MoKSAmJiAoYWN0aW9uID8gdGhpcy5kYXRhU291cmNlPy5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0ZWQ/LmV2ZXJ5KCh4OiBhbnkpID0+IGFjdGlvbih4KSkgOiB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxyXG5cdCAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIHByb3BlcnR5LCB3aGljaCBjYW4gYmUgZGVsaW1pdGVkIGJ5IGEgY3VzdG9tIGNoYXJhY3RlciAoZS5nLiwgZG90LCBzbGFzaCkuXHJcblx0ICogQHBhcmFtIGRlbGltaXRlciAtIFRoZSBkZWxpbWl0ZXIgdXNlZCB0byBzZXBhcmF0ZSBsZXZlbHMgaW4gdGhlIHByb3BlcnR5IHBhdGggKGRlZmF1bHQgaXMgJy4nKS5cclxuXHQgKiBAcmV0dXJucyAtIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldE5lc3RlZFByb3BlcnR5KG9iajogYW55LCBwYXRoOiBzdHJpbmcsIGRlbGltaXRlcjogc3RyaW5nID0gJy4nKTogYW55IHtcclxuXHRcdC8qIFNwbGl0IHRoZSBwYXRoIGludG8gYW4gYXJyYXkgb2Yga2V5cyB1c2luZyB0aGUgc3BlY2lmaWVkIGRlbGltaXRlciAqL1xyXG5cdFx0Y29uc3Qga2V5cyA9IHBhdGguc3BsaXQoZGVsaW1pdGVyKTtcclxuXHJcblx0XHQvKiBUcmF2ZXJzZSB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBhcnJheSBvZiBrZXlzICovXHJcblx0XHRyZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiBhY2MgJiYgYWNjW2tleV0sIG9iaik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcblx0cHVibGljIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcclxuXHRcdFx0c3dpdGNoIChldmVudC5rZXkpIHtcclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBhZGQgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ2EnOlxyXG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdHRoaXMuYWRkKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIHByZXZpb3VzIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlVXAnOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IucHJldmlvdXNQYWdlKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gbmV4dCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnUGFnZURvd24nOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IubmV4dFBhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyIFxyXG5cdCAqIHdoZW4gdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cdFx0aWYgKHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBTeW1ib2wudG9TdHJpbmdUYWcgd2VsbC1rbm93biBzeW1ib2wgaXMgYSBzdHJpbmcgdmFsdWVkIHByb3BlcnR5IHRoYXQgaXMgdXNlZCBcclxuXHQgKiBpbiB0aGUgY3JlYXRpb24gb2YgdGhlIGRlZmF1bHQgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIGFuIG9iamVjdFxyXG5cdCAqL1xyXG5cdGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICdHZW5lcmljTGlzdENvbXBvbmVudCc7IH1cclxufSJdfQ==
|