@rangertechnologies/ngnxt 2.1.204 → 2.1.205
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/environments/version.mjs +2 -2
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +3 -3
- package/esm2022/lib/components/datatable/datatable.component.mjs +7 -7
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +3 -3
- package/esm2022/lib/components/nxt-input/nxt-input.component.mjs +4 -10
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +3 -3
- package/esm2022/lib/components/search-box/search-box.component.mjs +3 -3
- package/esm2022/lib/pages/booklet/booklet.component.mjs +3 -3
- package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +1 -1
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +3 -3
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +3 -3
- package/fesm2022/rangertechnologies-ngnxt.mjs +27 -33
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/nxt-input/nxt-input.component.d.ts +1 -3
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.205.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.204.tgz +0 -0
|
@@ -270,11 +270,11 @@ export class NxtDatatable {
|
|
|
270
270
|
this.sortColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.sort === true).map(column => column.fieldName) : this.sortColumns;
|
|
271
271
|
this.hyperLinkColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.hyperLink === true).map(column => column.fieldName) : this.hyperLinkColumns;
|
|
272
272
|
this.editColumn = this.from !== 'formBuilder' ? this.columns.filter(column => column.edit === true).map(column => column.fieldName) : this.editColumn;
|
|
273
|
-
this.dateColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.
|
|
274
|
-
this.timeColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.
|
|
275
|
-
this.objectColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.
|
|
276
|
-
this.fileColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.
|
|
277
|
-
this.booleanColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.
|
|
273
|
+
this.dateColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'date').map(column => column.fieldName) : this.dateColumns;
|
|
274
|
+
this.timeColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'time').map(column => column.fieldName) : this.timeColumns;
|
|
275
|
+
this.objectColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'object').map(column => column.fieldName) : this.objectColumns;
|
|
276
|
+
this.fileColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'file').map(column => column.fieldName) : this.fileColumns;
|
|
277
|
+
this.booleanColumns = this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'boolean').map(column => column.fieldName) : this.booleanColumns;
|
|
278
278
|
this.currentFilterColumns = this.filterColumns;
|
|
279
279
|
this.currentSortColumns = this.sortColumns;
|
|
280
280
|
this.inlineElement = Object.fromEntries(this.displayedColumns.map(key => [key, ""]));
|
|
@@ -919,7 +919,7 @@ export class NxtDatatable {
|
|
|
919
919
|
}
|
|
920
920
|
else {
|
|
921
921
|
this.dataSource.data = this.originalData.filter(item => this.displayedColumns.some(column => {
|
|
922
|
-
const value = item
|
|
922
|
+
const value = this.getValue(item, column)?.toString().toLowerCase() || '';
|
|
923
923
|
return value.includes(filterValue);
|
|
924
924
|
}));
|
|
925
925
|
}
|
|
@@ -1564,4 +1564,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1564
1564
|
type: HostListener,
|
|
1565
1565
|
args: ['document:click', ['$event']]
|
|
1566
1566
|
}] } });
|
|
1567
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQXFELE1BQU0sZUFBZSxDQUFDO0FBQy9KLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQs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VUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0csSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FB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LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOeHRCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vbnh0LWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnh0UGFnaW5hdGlvbiB9IGZyb20gJy4uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoRmlsdGVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLnBpcGUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlL2RhdGUvZGF0ZS5waXBlJztcbmltcG9ydCB7IFRpbWVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS90aW1lL3RpbWUucGlwZSc7XG5pbXBvcnQgeyBFZGl0Q29sdW1uQ2hlY2tQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS9lZGl0Q29sdW1uQ2hlY2svZWRpdC1jb2x1bW4tY2hlY2sucGlwZSc7XG5pbXBvcnQgeyBFZGl0Q29sdW1uRHJvcGRvd25QaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS9lZGl0Q29sdW1uRHJvcGRvd24vZWRpdC1jb2x1bW4tZHJvcGRvd24ucGlwZSc7XG5pbXBvcnQgeyBFZGl0Q29sdW1uVHlwZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlL2VkaXRDb2x1bW5UeXBlL2VkaXQtY29sdW1uLXR5cGUucGlwZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGltZXRhJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdldFZhbHVlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvZ2V0LXZhbHVlLnBpcGUnO1xuaW1wb3J0IHsgTGlzdFZpZXdGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9saXN0LXZpZXctZmlsdGVyL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnh0LWRhdGF0YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOeHRCdXR0b25Db21wb25lbnQsXG4gICAgTnh0UGFnaW5hdGlvbixcbiAgICBTZWFyY2hGaWx0ZXJQaXBlLFxuICAgIERhdGVQaXBlLFxuICAgIFRpbWVQaXBlLFxuICAgIEVkaXRDb2x1bW5DaGVja1BpcGUsXG4gICAgRWRpdENvbHVtbkRyb3Bkb3duUGlwZSxcbiAgICBFZGl0Q29sdW1uVHlwZVBpcGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBHZXRWYWx1ZVBpcGUsXG4gICAgTGlzdFZpZXdGaWx0ZXJDb21wb25lbnRcbiAgICAvLyBSb3dSZXNpemVyRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YXRhYmxlLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE54dERhdGF0YWJsZSB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107ICAvLyAgZ2V0IGRhdGEgdGhhdCB0byBiZSBkaXNwbGF5ZWQgaW4gYSBhcnJheVxuICBASW5wdXQoKSB0YWJsZUZpbHRlckRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgLy8gQ29sdW1ucyBoYXZlIGEgbGFiZWwsIGEgY29sdW1uIHR5cGUsIGFuZCBmaWx0ZXIgZGV0YWlscy5cbiAgQElucHV0KCkgd2l0aENoZWNrQm94OiBib29sZWFuOyAgLy8gZ2V0IGlmIHdpdGggb3Igd2l0aG91dCBjaGVja2JveCBpbiB0YWJsZVxuICBASW5wdXQoKSBzZWFyY2hCYXI6IGJvb2xlYW47IC8vIGlmIGl0IGlzIHRydWUsIHRoZSBzZWFyY2ggYmFyIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRhYmxlXG4gIEBJbnB1dCgpIHRhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlOyAvLyBzYXZlIGJ1dHRvbiBmb3IgZWRpdGluZyBMT1AgaW4gcGF5cm9sbCB0YWJsZSwgIGNoYW5nZWQgbmFtZSBmcm9tICdzYXZlTE9QJ1xuICBASW5wdXQoKSBzdGlja3lDb2x1bW4gPSBmYWxzZTsgLy8gaWYgdGhlIGxhc3QgY29sdW1uIHNob3VsZCBiZSBzdGlja3ksIGl0IHNob3VsZCBiZSBzZW50IGFzIGJvb2xlYW4gdmFsdWVcbiAgQElucHV0KCkgdGFibGVXaWR0aCA9ICcxMDAlJzsgLy8gd2lkdGggb2YgdGFibGUgY2FuIGJlIGFkanVzdGVkIGZyb20gcGFyZW50LCBieSBkZWZhdWx0IGl0IGlzIDEwMCVcbiAgQElucHV0KCkgYWN0aW9uQ29sdW1IZWFkZXIgPSAnQWN0aW9uJzsgIC8vIHRvIGNoYW5nZSB0aGUgaGVhZGVyIGZvciBhY3Rpb24gY29sdW1uXG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbjogYm9vbGVhbjsgIC8vdG8gc2hvdyBidXR0b24gY29sdW0gYXMgYWN0aW9uXG4gIEBJbnB1dCgpIHRpdGxlOiBhbnk7Ly8gdGhlIHRpdGxlIGZvciB0aGUgdGFibGU7XG4gIEBJbnB1dCgpIGlzQnV0dG9uczogYm9vbGVhbjsvLyBpcyBidXR0b24gcHJlc2VudCBpbiB0YWJsZTtcbiAgQElucHV0KCkgYnV0dG9uQXJyYXk6IGFueTsvLyBidXR0b25zIHRvIGJlIGRpc3BsYXllZDtcbiAgQElucHV0KCkgdGFibGVJZDogYW55OyAvLyBpZCBvZiB0YWJsZVxuICBASW5wdXQoKSBpc0VkaXRSb3c6IGJvb2xlYW47IC8vIGlmIGl0IGlzIHRydWUsIHRoZSByb3cgY2FuIGJlIGVkaXRlZFxuICBASW5wdXQoKSBpc0RlbGV0ZVJvdzogYm9vbGVhbjsgLy8gaWYgaXQgaXMgdHJ1ZSwgdGhlIHJvdyBjYW4gYmUgZGVsZXRlZFxuICBASW5wdXQoKSBhZGRJbmxpbmVSZWNvcmQ6IGJvb2xlYW47IC8vIGlmIGl0IGlzIHRydWUsIHRoZSByb3cgY2FuIGJlIGFkZGVkIGlubGluZVxuICBASW5wdXQoKSBzZWFyY2hDb25maWdzOiBhbnk7IC8vIHNlYXJjaCBjb25maWd1cmF0aW9uc1xuICBASW5wdXQoKSBkaXJlY3Rpb246ICdydGwnIHwgJ2x0cicgPSAnbHRyJzsgLy8gZGlyZWN0aW9uIG9mIHRhYmxlXG4gIEBJbnB1dCgpIHBhZ2luYXRpb246IGFueTsgLy8gcGFnaW5hdGlvbiBjb25maWd1cmF0aW9uc1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25BcnJheTogYW55OyAvLyBhY3Rpb24gYnV0dG9uIGNvbmZpZ3VyYXRpb25zXG4gIEBJbnB1dCgpIG11bHRpcGxlRmlsdGVyOiBhbnk7IC8vIGlmIHBhZ2luYXRpb24gdHJ1ZSB0aGVuIHRoaXMgd2lsbCBiZSB1c2VkXG4gIEBJbnB1dCgpIGlzUGFnaW5hdGlvbjogYW55OyAvLyBwYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb25zIGlmIHRydWUgdGhlbiBwYWdpbmF0aW9uIHdpbGwgYmUgZW5hYmxlZFxuICBASW5wdXQoKSBpc05vc0luZGljYXRvcjogYW55OyAvLyBpZiB0cnVlIHRoZW4gbm8gZGF0YSBpbmRpY2F0b3Igd2lsbCBiZSBzaG93blxuICBASW5wdXQoKSBpc0VkaXRhYmxlOiBhbnk7IC8vIGlmIHRydWUgdGhlbiB0YWJsZSB3aWxsIGJlIGVkaXRhYmxlXG4gIEBJbnB1dCgpIGZyb206IGFueTsgLy8gZnJvbSBkYXRlIHBhbHRmb3JtIGJhc2VkIGluaXRpYWxpemUgaW5wdXRzIGV4Oi0gJ2Zvcm1CdWlsZGVyJ1xuICBASW5wdXQoKSBxdWVzdGlvbjogYW55OyAvLyBxdWVzdGlvbiBpcyB1c2VkIGZvciBueHQgZm9ybSBidWlsZGVyIHRhYmxlIHByZXZpZXdcbiAgQElucHV0KCkgcm93VGV4dFNpemU6IGFueTsgLy8gc2l6ZSBvZiByb3cgdGV4dFxuICBASW5wdXQoKSByb3dUZXh0Q29sb3I6IGFueTsgLy8gY29sb3Igb2Ygcm93IHRleHRcbiAgQElucHV0KCkgYXBpTWV0YTogc3RyaW5nOyAvLyBhcGkgbWV0YSBpcyB1c2VkIGZvciBueHQgZm9ybSBidWlsZGVyIHRhYmxlIHByZXZpZXdcbiAgQElucHV0KCkgc3VtbWFyeVJvd3M6IGFueTsgLy8gSW5wdXQgZm9yIGNvbmZpZ3VyYWJsZSBzdW1tYXJ5IHJvd3NcbiAgQElucHV0KCkgc3VtbWFyeUNvbHVtbnM6IGFueTsgLy8gSW5wdXQgZm9yIHN1bW1hcnkgY29sdW1ucyBjb25maWdcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBhbnk7IC8vU0tTMjhNQVIyNSBJbnB1dCBmb3IgbG9hZGluZyBpbmRpY2F0b3JcbiAgQElucHV0KCkgdGFibGVDb25maWc6IGFueTsgLy8gdGFibGUgY29uZmlnIGZvciBueHQgZm9ybSBidWlsZGVyIHRhYmxlXG4gIEBJbnB1dCgpIHRhYmxlUGFyYW1zOiBhbnk7IC8vU0tTMTdBUFIyNSBSZWNlaXZlcyB0YWJsZVBhcmFtcyBpbmZvcm1hdGlvbiBmcm9tIHBhcmVudCBjb21wb25lbnRcbiAgQElucHV0KCkgbGlzdFZpZXdzOiBhbnlbXSA9IFtdOyAvL1NLUzI2QVBSMjUgUHJlZGVmaW5lZCBsaXN0IHZpZXdzXG4gIEBJbnB1dCgpIG1vZGU6ICd2aWV3JyB8ICdlZGl0JyB8ICdwcmludCcgPSAnZWRpdCc7IC8vIFNLUzExSlVOMjUgTmV3IG1vZGUgaW5wdXRcblxuICBAT3V0cHV0KCkgdGFibGVSb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy8gZGF0YXMgdG8gYmUgcGFzc2VkIHdoZW4gdGFibGUgcm93IGlzIGNsaWNrZWRcbiAgQE91dHB1dCgpIG9uRWRpdERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47IC8vIGlmIGVkaXQgYnV0dG9uIGlzIGNsaWNrZWQsIHRoZSBkYXRhIG9mIHRoYXQgcm93IHdpbGwgYmUgcGFzc2VkXG4gIEBPdXRwdXQoKSBzYXZlQnV0dG9uRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy8gZWRpdGVkIHJvd3MgZGF0YSB3aWxsIGJlIHBhc3NlZFxuICBAT3V0cHV0KCkgb25EZWxldGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAgLy8gd2hlbiBkZWxldGUgYnV0dG9uIGNsaWNrZWQgcGFzcyB0aGUgZGF0YVxuICBAT3V0cHV0KCkgYnV0dG9uRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy8gdGhpcyB3aWxsIGVtaXQgYSB0YWJsZSB0b3AgYnV0dG9uIGNsaWNrIGV2ZW50XG4gIEBPdXRwdXQoKSBoeXBlckxpbmtFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvLyBoeXBlciBsaW5rIGNsaWNrIGV2ZW50XG4gIEBPdXRwdXQoKSBzaWRlTmF2RW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBhbnksIGNvbDogYW55LCBjb25maWc6IGFueSB9PjsgLy8gcmlnaHRuYXYgY29sdW1uIGVtaXRcbiAgQE91dHB1dCgpIGFjdGlvbkJ1dHRvbkVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47IC8vIGRhdGFzIHRvIGJlIHBhc3NlZCB3aGVuIHRhYmxlIHJvdyBhY3RpdmUgYnV0dG9uIGlzIGNsaWNrZWRcbiAgQE91dHB1dCgpIGNvbHVtblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbHVtbjogc3RyaW5nLCBkYXRhOiBhbnlbXSB9PigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlQ29sdW1uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbHVtbjogc3RyaW5nLCBkYXRhOiBhbnlbXSB9PigpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7IC8vIHRvIHBhc3MgdGhlIHNlbGVjdGVkIGNoZWNrYm94IHZhbHVlc1xuICBAT3V0cHV0KCkgZmlsZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy8gdG8gcGFzcyB0aGUgZmlsZVxuICBAT3V0cHV0KCkgTnh0VGFibGVQYXJhbXNFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvL1NLUzE3QVBSMjUgdG8gcGFzcyB0aGUgdGFibGVQYXJhbXMgaW5mb3JtYXRpb25cbiAgQE91dHB1dCgpIE54dFRhYmxlRmlsdGVyRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy9TS1MzTUFZMjUgZmlsdGVyIGNvbHVtbiB2YWwgZ2V0IGVtaXQgXG4gIEBPdXRwdXQoKSBOeHRUYWJsZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47XG4gIC8vIHtcbiAgLy8gICBcInBhZ2luYXRpb25cIjogeyAgICAgICAvLyA0XG4gIC8vICAgICAgIFwicGFnZVNpemVcIjogMTAsXG4gIC8vICAgICAgIFwicGFnZUluZGV4XCI6IDEwXG4gIC8vICAgfSxcbiAgLy8gICBcInRhYmxlU2VhcmNoXCI6IHsgICAgICAvLyAxXG4gIC8vICAgICAgIFwiZmllbGRzXCIgOiBbXG4gIC8vICAgICAgICAgICBcImxpZ2h0VHlwZVwiLFxuICAvLyAgICAgICAgICAgXCJzeXN0ZW1cIixcbiAgLy8gICAgICAgICAgIFwic3RhdHVzXCJcbiAgLy8gICAgICAgXSAsXG4gIC8vICAgICAgIFwidmFsdWVcIjogJ3ItMDAxJyBcbiAgLy8gICB9LCAgXG4gIC8vICAgXCJzZWFyY2hGaWx0ZXJEYXRhXCI6IHsgIC8vIDJcbiAgLy8gICAgICAgXCJsaWdodFR5cGVcIjogW1xuICAvLyAgICAgICAgICAgXCJBQVwiLFxuICAvLyAgICAgICAgICAgXCJCQlwiIFxuICAvLyAgICAgICBdXG4gIC8vICAgfSxcbiAgLy8gICBcInNvcnRcIjogeyAgICAgICAgICAgICAgLy8gM1xuICAvLyAgICAgICBcImNvbHVtblwiOiBcImFzc2V0Q29kZVwiLFxuICAvLyAgICAgICBcImRpcmVjdGlvblwiOiBcImFzY1wiXG4gIC8vICAgfVxuICAvLyB9XG5cbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHNlbGVjdGlvbjogYW55OyAvLyB0byBnZXQgdGhlIHNlbGVjdGVkIHJvd1xuICBzdGlja3lDb25kaXRpb24hOiBudW1iZXI7IC8vIHRvIGdldCB0aGUgc3RpY2t5IGNvbHVtbiBpbmRleFxuICBzZWFyY2hGaWx0ZXIgPSBmYWxzZTsgLy8gdG8gZ2V0IHRoZSBzZWFyY2ggZmlsdGVyXG4gIGZpbHRlckFycmF5OiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZmlsdGVyIGFycmF5XG4gIHNlbGVjdGVkRmlsdGVyOiBhbnk7IC8vIHRvIGdldCB0aGUgc2VsZWN0ZWQgZmlsdGVyXG4gIHJlbmRlckNvbHVtbnM6IHN0cmluZyA9ICdkaXNwbGF5ZWRDb2x1bW5zJzsgLy8gdG8gZ2V0IHRoZSByZW5kZXJlZCBjb2x1bW5zXG4gIHBhZ2VTaXplT3B0aW9uczogQXJyYXk8YW55PiAgLy8gZm9yIHBhZ2luYXRpb24gZ2V0IHRoZSBwYWdlIHNpemUgb3B0aW9uc1xuICBkYXRhU291cmNlOiBhbnk7ICAvLyBmb3IgdGFibGUgZGF0YSBzb3VyY2VcbiAgdG90YWxDb3VudCE6IG51bWJlciAvLyBjb3VudCBvZiB0b3RhbCByZWNvcmRzXG4gIHNlYXJjaEJveFZhbHVlOiBhbnk7IC8vIHRvIGdldCB0aGUgc2VhcmNoIGJveCB2YWx1ZVxuICBwcmV2U2VhcmNoOiBhbnk7IC8vIHRvIGdldCB0aGUgcHJldmlvdXMgc2VhcmNoIHZhbHVlXG4gIGFjdGl2ZUNvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIFRyYWNrIHRoZSBhY3RpdmUgY29sdW1uXG4gIGlzU2Nyb2xsZWQgPSBmYWxzZTsgLy8gQm9vbGVhbiBmbGFnIHRvIHRyYWNrIHNjcm9sbCBzdGF0ZVxuICBpc1NoYWRvd0hpZGRlbiA9IGZhbHNlOyAvLyBCb29sZWFuIGZsYWcgdG8gdHJhY2sgc2hhZG93IHN0YXRlXG4gIGN1cnJlbnRTb3J0Q29sdW1uOiBzdHJpbmcgPSAnJzsgLy8gdG8gZ2V0IHRoZSBjdXJyZW50IHNvcnQgY29sdW1uXG4gIGN1cnJlbnRTb3J0RGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8ICdub25lJyA9ICdub25lJzsgLy8gdG8gZ2V0IHRoZSBjdXJyZW50IHNvcnQgZGlyZWN0aW9uXG4gIG9yaWdpbmFsRGF0YTogYW55OyAvLyBTdG9yZSBvcmlnaW5hbCBkYXRhIGZvciBzb3J0aW5nXG4gIGhvdmVyZWRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyBUcmFjayB0aGUgaG92ZXJlZCBjb2x1bW5cbiAgc2VhcmNoVGV4dDogYW55OyAvLyB0byBnZXQgdGhlIHNlYXJjaCB0ZXh0XG4gIG11bHRpcGxlRmlsdGVyQXJyYXk6IGFueTsgLy8gdG8gZ2V0IHRoZSBtdWx0aXBsZSBmaWx0ZXIgYXJyYXlcbiAgdGFibGVGaWx0ZXJBcnJheTogYW55OyAvLyB0byBnZXQgdGhlIHRhYmxlIGZpbHRlciBhcnJheVxuICBmaWx0ZXJEYXRhQXJyYXk6IGFueSA9IHt9IC8vIHRvIGdldCB0aGUgZmlsdGVyIGRhdGEgYXJyYXlcbiAgaXNSZXNpemVkOiBib29sZWFuID0gZmFsc2U7IC8vIGZvciB0YWJsZSBjb2x1bW4gcmVzaXplXG4gIHNGaWx0ZXJEYXRhOiBhbnk7IC8vIHRvIGdldCB0aGUgc2VhcmNoIGZpbHRlciBkYXRhXG4gIGhlYWRlckxhYmVsczogQXJyYXk8YW55PiA9IFtdOyAvLyB0byBnZXQgdGhlIGhlYWRlciBsYWJlbHNcbiAgZGlzcGxheWVkQ29sdW1uczogQXJyYXk8YW55PiA9IFtdOyAvLyB0byBnZXQgdGhlIGRpc3BsYXllZCBjb2x1bW5zXG4gIGZpbHRlckNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgLy8gdG8gZ2V0IHRoZSBmaWx0ZXIgY29sdW1uc1xuICBjdXJyZW50RmlsdGVyQ29sdW1uczogQXJyYXk8YW55PiA9IFtdOyAvLyB0byBnZXQgdGhlIGZpbHRlciBjb2x1bW5zXG4gIHNvcnRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZmlsdGVyIGNvbHVtbnNcbiAgY3VycmVudFNvcnRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZmlsdGVyIGNvbHVtbnNcbiAgaHlwZXJMaW5rQ29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdOyAvLyB0byBnZXQgdGhlIGh5cGVyIGxpbmsgY29sdW1uc1xuICBlZGl0Q29sdW1uOiBBcnJheTxhbnk+ID0gW107ICAvLyB0byBnZXQgdGhlIGVkaXQgY29sdW1uXG4gIGRhdGVDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZGF0ZSBjb2x1bW5zXG4gIHRpbWVDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107ICAvLyB0byBnZXQgdGhlIHRpbWUgY29sdW1uc1xuICBvYmplY3RDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107ICAvLyB0byBnZXQgdGhlIG9iamVjdCBjb2x1bW5zXG4gIGZpbGVDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107ICAvLyB0byBnZXQgdGhlIGZpbGUgY29sdW1uc1xuICBib29sZWFuQ29sdW1ucyA6IEFycmF5PGFueT4gPSBbXTsgIC8vIHRvIGdldCB0aGUgYm9vbGVhbiBjb2x1bW5zXG4gIGlubGluZUVsZW1lbnQ6IGFueSAvLyBmb3IgYWRkIGEgbmV3IHJvdyBvbiB0YWJsZVxuICBwYWdlU2l6ZTogYW55ICAvLyBmb3IgcGFnaW5hdGlvbiBnZXQgdGhlIHBhZ2Ugc2l6ZVxuICBwYWdlSW5kZXg6IGFueSAvLyBmb3IgcGFnaW5hdGlvbiBnZXQgdGhlIHBhZ2UgaW5kZXhcbiAgdG90YWxSZWNvcmRzOiBudW1iZXI7IC8vIGZvciBwYWdpbmF0aW9uIGdldCB0aGUgdG90YWwgcmVjb3Jkc1xuICBjb25maWdQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7IC8vIGZsYWcgZm9yIGNvbmZpZyBwYWdpbmF0aW9uXG4gIGRlbGV0ZURhdGE6IGFueTsgLy8gdG8gZ2V0IHRoZSBkZWxldGUgcm93XG4gIGRlbGV0ZU1vZGFsID0gZmFsc2U7IC8vIGZvciBjb25mb3JtYXRpb24gcG9wdXBcbiAgZHJvcGRvd25BY3Rpb25CdXR0b246IGFueTsgLy8gZm9yIGFjdGlvbiBjb2x1bW4gZHJvcGRvd24gYnV0dG9uXG4gIGN1cnJlbnRPcGVuSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsOyAvLyB0cmFjayB0aGUgY3VycmVudCBvcGVuIGFjdGlvbiBkcm9wZG93biBpY29uIGluZGV4XG4gIGNsaWNrTGlzdGVuZXI6IGFueTsgLy8gYWN0aW9uIGNvbHVtbiBkcm9wZG93biBidXR0b24gY2xpY2sgbGlzdGVuZXIgZm9yIGNsb3NlIGEgZHJvcGRvd24gYnV0dG9uXG4gIHNlbGVjdGVkQ29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gdG8gZ2V0IHRoZSBzZWxlY3RlZCBjb2x1bW5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247ICAvLyBmb3IgdGFibGUgZGF0YSBzdWJzY3JpcHRpb25cbiAgZGVsZXRlSW5kZXg6IG51bWJlcjsgLy8gdG8gZ2V0IHRoZSBkZWxldGUgaW5kZXhcbiAgc2hvd1BvcG92ZXIgPSB0cnVlO1xuICBzdW1tYXJ5VmFsdWVzOiB7IFtsYWJlbDogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTsgLy8gU0tTMjBNQVIyNSBPYmplY3QgdG8gc3RvcmUgc3VtbWFyeSByb3cgdmFsdWVzXG4gIGlzU3VtbWFyeUNvbHVtbjogYm9vbGVhbiA9IGZhbHNlOyAvLyBTS1MyME1BUjI1IEZsYWcgdG8gY2hlY2sgaWYgdGhlIGNvbHVtbiBpcyBpbiB0aGUgZGlzcGx5Y29sdW1ucyBhcnJheVxuICBpc1N1bW1hcnlTdGFydENvbHVtbjogYW55W107XG4gIGlzU3VtbWFyeUVuZENvbHVtbjogYW55W107XG4gIGZpbHRlckJveERhdGE6IGFueTtcbiAgZmlsdGVyVGFibGVOb3M6IGFueTtcbiAgc2VsZWN0ZWRWaWV3OiBhbnkgPSAnJzsgICAgICAgICAvLyBTZWxlY3RlZCBsaXN0IHZpZXcgbmFtZVxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlOyAvLyBUcmFja3MgZHJvcGRvd24gdmlzaWJpbGl0eVxuICBjdXJyZW50Vmlld0ZpbHRlcjogYW55XG4gIGN1cnJlbnRIZWFkZXJMYWJlbHM6IGFueVtdO1xuICBjdXJyZW50RGlzcGxheWVkQ29sdW1uczogYW55W107XG4gIGlzRnVsbFRhYmxlU3VtbWFyeVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyBTS1MxM0pVTjI1IEZsYWcgdG8gY2hlY2sgaWYgdGhlIHRhYmxlIGhhcyBmdWxsIHN1bW1hcnkgcm93XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5kYXRhU291cmNlID0geyBkYXRhOiBbXSB9OyAvLyBvciB1c2UgYSBwcm9wZXIgZGF0YSBzdHJ1Y3R1cmVcbiAgICAvLyBjb25zb2xlLmxvZyhcIm5nT25DaGFuZ2VzIGlzIHJ1bm5pbmdcIilcbiAgICBpZiAodGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLnF1ZXN0aW9uPy5pbnB1dCA/IHRoaXMucXVlc3Rpb24/LmlucHV0IDogdGhpcy5kYXRhID8gdGhpcy5kYXRhIDogW11cbiAgICAgIGNvbnN0IHBhcnNlZE1ldGEgPSB0eXBlb2YgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddID09PSAnb2JqZWN0JyA/IHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSA6IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKTtcbiAgICAgIGlmICggcGFyc2VkTWV0YSA9PT0gbnVsbCB8fCAgcGFyc2VkTWV0YSA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBhcnNlZE1ldGEpIHx8IHBhcnNlZE1ldGE/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05vIHZhbGlkIG1ldGFkYXRhIHByb3ZpZGVkJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudGFibGVDb25maWc7XG4gICAgICAgIHRoaXMuaXNOb3NJbmRpY2F0b3IgPSBjb25maWc/LmlzTm9zSW5kaWNhdG9yICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRJbmxpbmVSZWNvcmQgPSBjb25maWcuYWRkSW5saW5lUmVjb3JkICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1BhZ2luYXRpb24gPSBjb25maWcuaXNQYWdpbmF0aW9uICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBjb25maWcuYWN0aW9uQnV0dG9uICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0RlbGV0ZVJvdyA9IGNvbmZpZy5pc0RlbGV0ZVJvdyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0Um93ID0gY29uZmlnLmlzRWRpdFJvdyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoQmFyID0gY29uZmlnLnNlYXJjaEJhciAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNCdXR0b25zID0gY29uZmlnLmlzQnV0dG9ucyAhPT0gZmFsc2U7IC8vc3VtbWFyeUNvbHVtblxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gY29uZmlnLml0ZW1zUGVyUGFnZSB8fCA1O1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkZXJMYWJlbHMgPSBwYXJzZWRNZXRhXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Q29sdW1uICE9PSB0cnVlICYmIGNvbHVtbi5zdW1tYXJ5Um93ICE9PSB0cnVlICYmIGNvbHVtbi5sYWJlbCkgLy8gRXhjbHVkZSBvbmx5IHdoZW4gZXhwbGljaXRseSB0cnVlXG4gICAgICAgIC5tYXAoY29sdW1uID0+IGNvbHVtbi5sYWJlbCk7XG4gICAgICB0aGlzLmN1cnJlbnRIZWFkZXJMYWJlbHMgPSB0aGlzLmhlYWRlckxhYmVsc1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeUNvbHVtbiAhPT0gdHJ1ZSAmJiBjb2x1bW4uc3VtbWFyeVJvdyAhPT0gdHJ1ZSAmJiBjb2x1bW4uYXBpTmFtZSkgLy8gRXhjbHVkZSBvbmx5IHdoZW4gZXhwbGljaXRseSB0cnVlXG4gICAgICAgIC5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5zb3J0Q29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc29ydCA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuaHlwZXJMaW5rQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaHlwZXJMaW5rID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5lZGl0Q29sdW1uID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5yZWFkT25seSA9PT0gZmFsc2UpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmRhdGVDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnRGF0ZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLnRpbWVDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnVGltZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLm9iamVjdENvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdPYmplY3QnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5maWxlQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ0ZpbGUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5ib29sZWFuQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ0Jvb2xlYW4nKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcblxuICAgICAgdGhpcy5zdW1tYXJ5Q29sdW1ucyA9IHBhcnNlZE1ldGFcbiAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnN1bW1hcnlDb2x1bW4gPT09IHRydWUpXG4gICAgICAgIC5tYXAoKHsgYXBpTmFtZSwgZmxkVHlwZSwgLi4ucmVzdCB9KSA9PiAoe1xuICAgICAgICAgIGZpZWxkTmFtZTogYXBpTmFtZSxcbiAgICAgICAgICB0eXBlOiBmbGRUeXBlLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSkpO1xuICAgICAgdGhpcy5zdW1tYXJ5Um93cyA9IHBhcnNlZE1ldGFcbiAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnN1bW1hcnlSb3cgPT09IHRydWUpXG4gICAgICAgIC5tYXAoKHsgYXBpTmFtZSwgZmxkVHlwZSwgLi4ucmVzdCB9KSA9PiAoe1xuICAgICAgICAgIGZpZWxkTmFtZTogYXBpTmFtZSxcbiAgICAgICAgICB0eXBlOiBmbGRUeXBlLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgYHRoaXMuZGF0YWAgaXMgYW4gYXJyYXlcbiAgICBpZiAoIXRoaXMuZGF0YSB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0RhdGEgaXMgbm90IGluaXRpYWxpemVkIG9yIGlzIG5vdCBhbiBhcnJheScpO1xuICAgICAgdGhpcy5kYXRhID0gW107ICAvLyBJbml0aWFsaXplIGFzIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IHZhbGlkXG4gICAgfVxuICAgIC8vIEVuc3VyZSBgdGhpcy5kYXRhU291cmNlLmRhdGFgIGlzIGluaXRpYWxpemVkXG4gICAgLy9TS1MxNUZFQjI1IEluaXRpYWxpemUgdGhpcyBpbiB5b3VyIGRhdGEgZmV0Y2ggbWV0aG9kXG4gICAgdGhpcy5vcmlnaW5hbERhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICB0aGlzLnNGaWx0ZXJEYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YTtcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZSA/IHRoaXMucGFnaW5hdGlvblsncGFnZVNpemUnXSA6IHRoaXMucGFnZVNpemUgfHwgMTA7XG4gICAgdGhpcy5wYWdlSW5kZXggPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VJbmRleCA/IHRoaXMucGFnaW5hdGlvblsncGFnZUluZGV4J10gOiB0aGlzLnBhZ2VJbmRleCB8fCAxO1xuICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wYWdpbmF0aW9uPy50b3RhbFJlY29yZHMgPyB0aGlzLnBhZ2luYXRpb25bJ3RvdGFsUmVjb3JkcyddIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZU9wdGlvbnMgPyB0aGlzLnBhZ2luYXRpb25bJ3BhZ2VTaXplT3B0aW9ucyddIDogWyc1JywgJzEwJywgJzI1JywgJzUwJywgJzEwMCcsICcyMDAnXTtcbiAgICB0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPSAhISh0aGlzLnBhZ2luYXRpb24gJiYgT2JqZWN0LmtleXModGhpcy5wYWdpbmF0aW9uKS5sZW5ndGggPiAwKTtcbiAgICB0aGlzLmlzUGFnaW5hdGlvbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNQYWdpbmF0aW9uID09PSB0cnVlID8gdGhpcy5pc1BhZ2luYXRpb24gPSB0cnVlIDogdGhpcy5pc1BhZ2luYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmlzTm9zSW5kaWNhdG9yID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc05vc0luZGljYXRvciA9PT0gdHJ1ZSA/IHRoaXMuaXNOb3NJbmRpY2F0b3IgPSB0cnVlIDogdGhpcy5pc05vc0luZGljYXRvciA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0YWJsZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNFZGl0YWJsZSA9PT0gZmFsc2UgPyB0aGlzLmlzRWRpdGFibGUgPSBmYWxzZSA6IHRoaXMuaXNFZGl0YWJsZSA9IHRydWVcblxuXG4gICAgdGhpcy5oZWFkZXJMYWJlbHMgPSB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnM/Lm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKSA6IHRoaXMuaGVhZGVyTGFiZWxzO1xuICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zPy5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zO1xuICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG4gICAgLy8gU0tTMjBNQVIyNSBDaGVjayBpZiB0aGUgZGlzcGx5Y29sdW1uJ3MgaGF2ZSBhIHN1bW1hcnkgY29sdW1uXG4gICAgaWYgKHRoaXMuc3VtbWFyeUNvbHVtbnMgJiYgdGhpcy5zdW1tYXJ5Q29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbLi4udGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCAuLi50aGlzLnN1bW1hcnlDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSldO1xuICAgICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcbiAgICAgIHRoaXMuaGVhZGVyTGFiZWxzID0gWy4uLnRoaXMuaGVhZGVyTGFiZWxzLCAuLi50aGlzLnN1bW1hcnlDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKV07XG4gICAgICB0aGlzLmN1cnJlbnRIZWFkZXJMYWJlbHMgPSB0aGlzLmhlYWRlckxhYmVsc1xuICAgIH1cbiAgICBpZiAodGhpcy5zdW1tYXJ5Um93cyAmJiB0aGlzLnN1bW1hcnlSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXNGdWxsVGFibGVTdW1tYXJ5Um93ID0gdGhpcy5zdW1tYXJ5Um93c1swXS50eXBlID09PSAnZnVsbFJvdycgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLmlzU3VtbWFyeUNvbHVtbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gdGhpcy5zdW1tYXJ5Um93c1swXS5jb2x1bW4pO1xuICAgICAgaWYgKHRoaXMuaXNTdW1tYXJ5Q29sdW1uICYmICF0aGlzLmlzRnVsbFRhYmxlU3VtbWFyeVJvdykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKHRoaXMuc3VtbWFyeVJvd3NbMF0uY29sdW1uKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuaXNTdW1tYXJ5U3RhcnRDb2x1bW4gPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuc2xpY2UoMCwgaW5kZXggLSAxKTtcbiAgICAgICAgICB0aGlzLmlzU3VtbWFyeUVuZENvbHVtbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zbGljZShpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5maWx0ZXJDb2x1bW5zO1xuICAgIHRoaXMuc29ydENvbHVtbnMgPSAgdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnNvcnQgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLnNvcnRDb2x1bW5zO1xuICAgIHRoaXMuaHlwZXJMaW5rQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaHlwZXJMaW5rID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5oeXBlckxpbmtDb2x1bW5zO1xuICAgIHRoaXMuZWRpdENvbHVtbiA9IHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5lZGl0ID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5lZGl0Q29sdW1uO1xuICAgIHRoaXMuZGF0ZUNvbHVtbnMgPSAgdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdkYXRlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuZGF0ZUNvbHVtbnM7XG4gICAgdGhpcy50aW1lQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmxkVHlwZSA9PT0gJ3RpbWUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy50aW1lQ29sdW1ucztcbiAgICB0aGlzLm9iamVjdENvbHVtbnMgPSAgdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdvYmplY3QnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5vYmplY3RDb2x1bW5zO1xuICAgIHRoaXMuZmlsZUNvbHVtbnMgPSAgdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdmaWxlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuZmlsZUNvbHVtbnM7XG4gICAgdGhpcy5ib29sZWFuQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmxkVHlwZSA9PT0gJ2Jvb2xlYW4nKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5ib29sZWFuQ29sdW1ucztcbiAgICBcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zID0gdGhpcy5maWx0ZXJDb2x1bW5zXG4gICAgdGhpcy5jdXJyZW50U29ydENvbHVtbnMgPSB0aGlzLnNvcnRDb2x1bW5zXG4gICAgdGhpcy5pbmxpbmVFbGVtZW50ID0gT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuZGlzcGxheWVkQ29sdW1ucy5tYXAoa2V5ID0+IFtrZXksIFwiXCJdKSk7XG5cbiAgICB0aGlzLmRyb3Bkb3duQWN0aW9uQnV0dG9uID0gKHRoaXMuYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5ICYmIHRoaXMuYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5Py5sZW5ndGggPiAwKSA/IHRoaXMuYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5Py5zbGljZSh0aGlzLmFjdGlvbkJ1dHRvbkFycmF5Py5zaXplKSA6IFtdO1xuICAgIFxuICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xuICAgIGlmICghdGhpcy50b3RhbFJlY29yZHMgJiYgdGhpcy5kYXRhICYmIHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IE51bWJlcih0aGlzLnBhZ2VTaXplKSB8fCAxMDtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2VJbmRleCAtIDEpICogcGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2VTaXplO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKHN0YXJ0LCBlbmQpIHx8IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVxuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIH0sIDEwMClcbiAgICB0aGlzLnRvdGFsQ291bnQgPSB0aGlzLnRvdGFsUmVjb3JkcyB8fCB0aGlzLmRhdGE/Lmxlbmd0aFxuICAgIHRoaXMuZmlsdGVyVGFibGVOb3MgPSB0aGlzLnRvdGFsUmVjb3JkcyB8fCB0aGlzLmRhdGE/Lmxlbmd0aFxuICAgIGlmICh0aGlzLnN0aWNreUNvbHVtbiA9PT0gdHJ1ZSAmJiB0aGlzLmRpc3BsYXllZENvbHVtbnMpIHtcbiAgICAgIHRoaXMuc3RpY2t5Q29uZGl0aW9uID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RpY2t5Q29uZGl0aW9uID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGggKyAxO1xuICAgIH1cbiAgICBpZiAodGhpcy53aXRoQ2hlY2tCb3ggJiYgdGhpcy5hY3Rpb25CdXR0b24pIHtcbiAgICAgIHRoaXMucmVuZGVyQ29sdW1ucyA9ICdib3RoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMud2l0aENoZWNrQm94KSB7XG4gICAgICB0aGlzLnJlbmRlckNvbHVtbnMgPSAnc2VsZWN0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aW9uQnV0dG9uKSB7XG4gICAgICB0aGlzLnJlbmRlckNvbHVtbnMgPSAnYWN0aW9uJztcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VhcmNoQ29uZmlncz8uc2VhcmNoRmlsdGVyVmFsKSB7XG4gICAgICB0aGlzLnNlYXJjaEJveFZhbHVlID0gdGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWw7IC8vIFNob3cgdmFsdWUgaW4gdGhlIHNlYXJjaCBib3hcbiAgICAgIHRoaXMucHJldlNlYXJjaCA9IHRoaXMuc2VhcmNoQ29uZmlncz8uc2VhcmNoRmlsdGVyVmFsO1xuICAgIH1cbiAgICBpZih0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50Vmlld0ZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jdXJyZW50Vmlld0ZpbHRlciA9IHRoaXMubGlzdFZpZXdzICYmIHRoaXMubGlzdFZpZXdzLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RWaWV3c1swXSA6IG51bGw7XG4gICAgfVxuICAgIGlmKHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyICE9PSBudWxsKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jdXJyZW50Vmlld0ZpbHRlci5maWx0ZXJOYW1lO1xuICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY3VycmVudFZpZXdGaWx0ZXI/LmNvbHVtbnMgfHwgW107XG4gICAgICBpZihjb2x1bW5zLmxlbmd0aCA+IDApe1xuICAgICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoY29sID0+IGNvbC5uYW1lKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SGVhZGVyTGFiZWxzID0gdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucy5tYXAobmFtZSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgICByZXR1cm4gaW5kZXggIT09IC0xID8gdGhpcy5oZWFkZXJMYWJlbHNbaW5kZXhdIDogbmFtZTsgLy8gZmFsbGJhY2sgdG8gbmFtZSBpZiBubyBsYWJlbCBmb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZmlsdGVyYWJsZSA9PT0gdHJ1ZSkubWFwKGNvbCA9PiBjb2wubmFtZSk7XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnRDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5zb3J0YWJsZSA9PT0gdHJ1ZSkubWFwKGNvbCA9PiBjb2wubmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zPy5sZW5ndGggPiAwICYmIHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheSA9IHt9O1xuICAgICAgY29uc3QgZmlsdE9ianM6IGFueSA9IHt9O1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5W2VsZW1lbnRdID0gbnVsbDtcbiAgICAgICAgZmlsdE9ianNbZWxlbWVudF0gPSBbXTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwga2V5KTsgIC8vIDwtIGdldCBuZXN0ZWQgdmFsdWVcbiAgICBcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZmlsdE9ianNba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheVtrZXldID0gbmV3IFNldChmaWx0T2Jqc1trZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXkgPSB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheSA9IHRoaXMubXVsdGlwbGVGaWx0ZXI7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWx0ZXJlZCBhcnJheSB0aGF0IGV4Y2x1ZGVzIGFueSBjb2x1bW4gd2l0aCAnWydcbiAgICBjb25zdCB0ZW1wRmlsdGVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+ICFjb2wuZmllbGROYW1lLmluY2x1ZGVzKCdbJykpO1xuICAgIFxuICAgIGlmICh0ZW1wRmlsdGVyQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdE9ianM6IGFueSA9IHt9O1xuICAgIFxuICAgICAgLy8gU0tTMjZNQVkyNSBJbml0aWFsaXplIHNldHMgdG8gY29sbGVjdCB1bmlxdWUgdmFsdWVzIGZvciBlYWNoIGNvbHVtblxuICAgICAgdGVtcEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcbiAgICAgICAgZmlsdE9ianNbY29sLmZpZWxkTmFtZV0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIC8vIFNLUzI2TUFZMjUgQ29sbGVjdCB1bmlxdWUgdmFsdWVzIGZyb20gdGFibGVGaWx0ZXJEYXRhXG4gICAgICB0aGlzLnRhYmxlRmlsdGVyRGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIHRlbXBGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGNvbC5maWVsZE5hbWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmaWx0T2Jqc1tjb2wuZmllbGROYW1lXS5hZGQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIC8vIFNLUzI2TUFZMjUgQXBwZW5kIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBlYWNoIGNvbHVtbiBvYmplY3Qgd2l0aCB0aGUgYXJyYXkgb2YgdW5pcXVlIHZhbHVlc1xuICAgICAgdGhpcy50YWJsZUZpbHRlckFycmF5ID0gWy4uLnRlbXBGaWx0ZXJDb2x1bW5zLm1hcCgoY29sOiBhbnkpID0+ICh7XG4gICAgICAgIC4uLmNvbCxcbiAgICAgICAgdmFsdWU6IEFycmF5LmZyb20oZmlsdE9ianNbY29sLmZpZWxkTmFtZV0pXG4gICAgICB9KSldO1xuICAgIH0gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLWJvZHknKTtcbiAgICAgICAgaWYgKHRhYmxlQm9keSAmJiB0aGlzLmlzUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuaXNTaGFkb3dIaWRkZW4gPSAhKHRhYmxlQm9keS5zY3JvbGxIZWlnaHQgPCA0NTApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxNTAwKTsgLy8gV2FpdHMgMTAwbXMgZm9yIHJlbmRlcmluZ1xuICAgIC8vIFNLUzIwTUFSMjUgSW5pdGlhbGl6ZSBzdW1tYXJ5VmFsdWVzIGZvciBpbnB1dCByb3dzIGFuZCBjb21wdXRlIHZhbHVlc1xuICAgIGlmIChjaGFuZ2VzWydzdW1tYXJ5Um93cyddIHx8IGNoYW5nZXNbJ3N1bW1hcnlDb2x1bW5zJ10gfHwgY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICB0aGlzLmNvbXB1dGVTdW1tYXJ5Q29sdW1ucygpOyAvLyBDb21wdXRlIHBlci1yb3cgc3VtbWFyeSBjb2x1bW5zIGZpcnN0XG4gICAgICB0aGlzLnN1bW1hcnlSb3dzPy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIGlmIChyb3cudHlwZSA9PT0gJ2lucHV0JyAmJiB0aGlzLnN1bW1hcnlWYWx1ZXNbcm93LmZpZWxkTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSA9IDA7IC8vIERlZmF1bHQgdG8gMCBmb3IgaW5wdXRzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21wdXRlU3VtbWFyeVZhbHVlcygnb25DaGFuZ2UnKTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hDb25maWdzICYmIHRoaXMuc2VhcmNoQm94VmFsdWUgPyB0aGlzLmVtcHR5U2VhcmNoKHRoaXMuc2VhcmNoQm94VmFsdWUpIDogdGhpcy5hcHBseUZpbHRlcih0aGlzLnRhYmxlUGFyYW1zPy50YWJsZVNlYXJjaCwnb25DaGFuZ2UnKSAvLyBTS1MxN0FQUjI1IHVwZGF0ZSBzZWFyY2ggYm94IHZhbHVlXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSB7IGRhdGE6IFtdIH07IC8vIG9yIHVzZSBhIHByb3BlciBkYXRhIHN0cnVjdHVyZVxuICAgIC8vIFNLUzEzTUFSMjUgZ2V0IGRhdGEgZnJvbSBxdWVzdGlvbiBpZiBmcm9tIGZvcm1CdWlsZGVyXG4gICAgaWYgKHRoaXMuZnJvbSA9PT0gJ2Zvcm1CdWlsZGVyJykge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5xdWVzdGlvbj8uaW5wdXQgPyB0aGlzLnF1ZXN0aW9uPy5pbnB1dCA6IHRoaXMuZGF0YSA/IHRoaXMuZGF0YSA6IFtdXG4gICAgICBjb25zdCBwYXJzZWRNZXRhID0gdHlwZW9mIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSA9PT0gJ29iamVjdCcgPyB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10gfHwgW10gOiBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSk7XG4gICAgICBpZiAoIHBhcnNlZE1ldGEgPT09IG51bGwgfHwgIHBhcnNlZE1ldGEgPT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShwYXJzZWRNZXRhKSB8fCBwYXJzZWRNZXRhPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyB2YWxpZCBtZXRhZGF0YSBwcm92aWRlZCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50YWJsZUNvbmZpZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnRhYmxlQ29uZmlnO1xuICAgICAgICB0aGlzLmlzTm9zSW5kaWNhdG9yID0gY29uZmlnPy5pc05vc0luZGljYXRvciAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkSW5saW5lUmVjb3JkID0gY29uZmlnLmFkZElubGluZVJlY29yZCAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNQYWdpbmF0aW9uID0gY29uZmlnLmlzUGFnaW5hdGlvbiAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uID0gY29uZmlnLmFjdGlvbkJ1dHRvbiAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNEZWxldGVSb3cgPSBjb25maWcuaXNEZWxldGVSb3cgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRWRpdFJvdyA9IGNvbmZpZy5pc0VkaXRSb3cgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLnNlYXJjaEJhciA9IGNvbmZpZy5zZWFyY2hCYXIgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQnV0dG9ucyA9IGNvbmZpZy5pc0J1dHRvbnMgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gY29uZmlnLml0ZW1zUGVyUGFnZSB8fCA1O1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkZXJMYWJlbHMgPSBwYXJzZWRNZXRhXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Q29sdW1uICE9PSB0cnVlICYmIGNvbHVtbi5zdW1tYXJ5Um93ICE9PSB0cnVlICYmIGNvbHVtbi5sYWJlbCkgLy8gRXhjbHVkZSBvbmx5IHdoZW4gZXhwbGljaXRseSB0cnVlXG4gICAgICAgIC5tYXAoY29sdW1uID0+IGNvbHVtbi5sYWJlbCk7XG4gICAgICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG5cbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHBhcnNlZE1ldGFcbiAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnN1bW1hcnlDb2x1bW4gIT09IHRydWUgJiYgY29sdW1uLnN1bW1hcnlSb3cgIT09IHRydWUgJiYgY29sdW1uLmFwaU5hbWUpIC8vIEV4Y2x1ZGUgb25seSB3aGVuIGV4cGxpY2l0bHkgdHJ1ZVxuICAgICAgICAubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLnNvcnRDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zb3J0ID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5oeXBlckxpbmtDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5oeXBlckxpbmsgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmVkaXRDb2x1bW4gPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnJlYWRPbmx5ID09PSBmYWxzZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuZGF0ZUNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdEYXRlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMudGltZUNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdUaW1lJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMub2JqZWN0Q29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmxkVHlwZSA9PT0gJ09iamVjdCcpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmZpbGVDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5mbGRUeXBlID09PSAnRmlsZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmJvb2xlYW5Db2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5mbGRUeXBlID09PSAnQm9vbGVhbicpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuXG4gICAgICB0aGlzLnN1bW1hcnlDb2x1bW5zID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeUNvbHVtbiA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoeyBhcGlOYW1lLCBmbGRUeXBlLCAuLi5yZXN0IH0pID0+ICh7XG4gICAgICAgICAgZmllbGROYW1lOiBhcGlOYW1lLFxuICAgICAgICAgIHR5cGU6IGZsZFR5cGUsXG4gICAgICAgICAgLi4ucmVzdFxuICAgICAgICB9KSk7XG4gICAgICB0aGlzLnN1bW1hcnlSb3dzID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeVJvdyA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoeyBhcGlOYW1lLCBmbGRUeXBlLCAuLi5yZXN0IH0pID0+ICh7XG4gICAgICAgICAgZmllbGROYW1lOiBhcGlOYW1lLFxuICAgICAgICAgIHR5cGU6IGZsZFR5cGUsXG4gICAgICAgICAgLi4ucmVzdFxuICAgICAgICB9KSk7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxldCBvcHRpb25zID0gW107XG4gICAgICAgICAgLy8gQVAtMjZNQVIyNSBFbnN1cmUgdGhhdCB0aGlzLmFwaU1ldGEgaXMgYWx3YXlzIGFuIG9iamVjdC4gIFxuICAgICAgICAgLy9BUC0yNk1BUjI1IElmIGl0J3MgYWxyZWFkeSBhbiBvYmplY3QsIGtlZXAgaXQgYXMgaXM7IG90aGVyd2lzZSwgcGFyc2UgaXQgZnJvbSBhIEpTT04gc3RyaW5nLlxuICAgICAgICAgIHRoaXMuYXBpTWV0YSA9IHR5cGVvZiB0aGlzLmFwaU1ldGEgPT09ICdvYmplY3QnID8gdGhpcy5hcGlNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgICAgICAgIGxldCBhcGlPYmo6IGFueSA9IHRoaXMuYXBpTWV0YTtcbiAgICAgICAgICBpZiAoYXBpT2JqICYmIGFwaU9iai5lbmRwb2ludCkge1xuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoYXBpT2JqLmVuZHBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgLy8gVkQgMjJNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSwgYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgLy8gSEEgMTlKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3IgaW4gY29uc29sZVxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzcCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3B0aW9ucyA9IHJlc3VsdHM7XG4gICAgICAgICAgICB9IGVsc2UgeyAgLy8gVkQgMTlKQU4yNCAtIGlmIHJlc3BvbnNlIGhhcyB2YWx1ZSh3aGljaCBpcyBhcnJheSkgb25seVxuICAgICAgICAgICAgICByZXNwb25zZXMgPSBhcGlSZXNwb25zZTtcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IHJlc3BvbnNlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gb3B0aW9ucztcblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICAgIGxldCBzb3VyY2VJZCA9IGFwaU9iaj8uc291cmNlUXVlc3Rpb25JZDtcbiAgICAgICAgbGV0IGZpZWxkID0gYXBpT2JqPy5maWVsZDsgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBkeW5hbWljIGZpZWxkIGNoYW5nZXNcbiAgICAgICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICAgICAgLy8gLy8gVkQgMTBNYXkyNCBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xuICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgLy8gVkQgMTNNQVkyNCAtIGJpbmQgZHluYW1pYyBmaWVsZFxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFZEIDI2SnVuMjQgLSB0byBoYW5kbGUgbXVsdGlwbGUgb2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakVsZW1lbnRWYWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZWxlbWVudCwgZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakl0ZW1WYWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoaXRlbSwgZmllbGQpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9iakVsZW1lbnRWYWx1ZSA9PSBvYmpJdGVtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkSXRlbSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvL1JTIDE0RkVCMjAyNVxuICAgICAgICAgICAgICAgICAgLy9VcGRhdGUgUGFnaW5hdGlvbiBiZWZvcmUgZW1pdFxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbLi4udGhpcy5kYXRhLCBpdGVtXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUoe2RhdGE6IHRoaXMuZGF0YSwgc3VtbWFyeVZhbHVlczogdGhpcy5zdW1tYXJ5VmFsdWVzfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNLUzIwTUFSMjUgTWFudWFsbHkgdHJpZ2dlciBuZ09uQ2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nT25DaGFuZ2VzKHt9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNvbmZpcm1DaGFuZ2UoYXBpT2JqPy5zb3VyY2VRdWVzdGlvbklkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWFyY2hCYXIgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnNlYXJjaEJhciA9PT0gdHJ1ZSA/IHRoaXMuc2VhcmNoQmFyID0gdHJ1ZSA6IHRoaXMuc2VhcmNoQmFyID0gZmFsc2U7XG4gICAgdGhpcy53aXRoQ2hlY2tCb3ggPT09IHVuZGVmaW5lZCB8fCB0aGlzLndpdGhDaGVja0JveCA9PT0gZmFsc2UgPyB0aGlzLndpdGhDaGVja0JveCA9IGZhbHNlIDogdGhpcy53aXRoQ2hlY2tCb3ggPSB0cnVlO1xuICAgIHRoaXMuaXNFZGl0Um93ID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc0VkaXRSb3cgPT09IGZhbHNlID8gdGhpcy5pc0VkaXRSb3cgPSBmYWxzZSA6IHRoaXMuaXNFZGl0Um93ID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGVsZXRlUm93ID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc0RlbGV0ZVJvdyA9PT0gZmFsc2UgPyB0aGlzLmlzRGVsZXRlUm93ID0gZmFsc2UgOiB0aGlzLmlzRGVsZXRlUm93ID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuYWN0aW9uQnV0dG9uID09PSBmYWxzZSA/IHRoaXMuYWN0aW9uQnV0dG9uID0gZmFsc2UgOiB0aGlzLmFjdGlvbkJ1dHRvbiA9IHRydWU7XG4gICAgdGhpcy5pc0J1dHRvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlzQnV0dG9ucyA9PT0gZmFsc2UgPyB0aGlzLmlzQnV0dG9ucyA9IGZhbHNlIDogdGhpcy5pc0J1dHRvbnMgPSB0cnVlO1xuICAgIHRoaXMuYWRkSW5saW5lUmVjb3JkID09PSB1bmRlZmluZWQgfHwgdGhpcy5hZGRJbmxpbmVSZWNvcmQgPT09IGZhbHNlID8gdGhpcy5hZGRJbmxpbmVSZWNvcmQgPSBmYWxzZSA6IHRoaXMuYWRkSW5saW5lUmVjb3JkID0gdHJ1ZTtcbiAgICB0aGlzLmlzUGFnaW5hdGlvbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNQYWdpbmF0aW9uID09PSB0cnVlID8gdGhpcy5pc1BhZ2luYXRpb24gPSB0cnVlIDogdGhpcy5pc1BhZ2luYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmlzTm9zSW5kaWNhdG9yID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc05vc0luZGljYXRvciA9PT0gdHJ1ZSA/IHRoaXMuaXNOb3NJbmRpY2F0b3IgPSB0cnVlIDogdGhpcy5pc05vc0luZGljYXRvciA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0YWJsZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNFZGl0YWJsZSA9PT0gZmFsc2UgPyB0aGlzLmlzRWRpdGFibGUgPSBmYWxzZSA6IHRoaXMuaXNFZGl0YWJsZSA9IHRydWVcblxuXG4gICAgdGhpcy5oZWFkZXJMYWJlbHMgPSB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnM/Lm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKSA6IHRoaXMuaGVhZGVyTGFiZWxzO1xuICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zPy5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zO1xuICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG4gICAgaWYgKHRoaXMuc3VtbWFyeUNvbHVtbnMgJiYgdGhpcy5zdW1tYXJ5Q29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbLi4udGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCAuLi50aGlzLnN1bW1hcnlDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSldO1xuICAgICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcbiAgICAgIHRoaXMuaGVhZGVyTGFiZWxzID0gWy4uLnRoaXMuaGVhZGVyTGFiZWxzLCAuLi50aGlzLnN1bW1hcnlDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKV07XG4gICAgICB0aGlzLmN1cnJlbnRIZWFkZXJMYWJlbHMgPSB0aGlzLmhlYWRlckxhYmVsc1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyQ29sdW1ucyA9dGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpbHRlciA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuZmlsdGVyQ29sdW1ucztcbiAgICB0aGlzLnNvcnRDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc29ydCA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuc29ydENvbHVtbnM7XG4gICAgdGhpcy5oeXBlckxpbmtDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaHlwZXJMaW5rID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5oeXBlckxpbmtDb2x1bW5zO1xuICAgIHRoaXMuZWRpdENvbHVtbiA9IHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5lZGl0ID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5lZGl0Q29sdW1uO1xuICAgIHRoaXMuZGF0ZUNvbHVtbnMgPXRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnZGF0ZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSk6IHRoaXMuZGF0ZUNvbHVtbnM7XG4gICAgdGhpcy50aW1lQ29sdW1ucyA9dGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICd0aW1lJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMudGltZUNvbHVtbnM7XG4gICAgdGhpcy5vYmplY3RDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ29iamVjdCcpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLm9iamVjdENvbHVtbnM7XG4gICAgdGhpcy5maWxlQ29sdW1ucyA9dGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdmaWxlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuZmlsZUNvbHVtbnM7XG4gICAgdGhpcy5ib29sZWFuQ29sdW1ucyA9dGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdib29sZWFuJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuYm9vbGVhbkNvbHVtbnM7XG5cbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zID0gdGhpcy5maWx0ZXJDb2x1bW5zXG4gICAgdGhpcy5jdXJyZW50U29ydENvbHVtbnMgPSB0aGlzLnNvcnRDb2x1bW5zXG4gICAgdGhpcy5pbmxpbmVFbGVtZW50ID0gT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuZGlzcGxheWVkQ29sdW1ucy5tYXAoa2V5ID0+IFtrZXksIFwiXCJdKSk7XG5cbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZSA/IHRoaXMucGFnaW5hdGlvblsncGFnZVNpemUnXSA6IHRoaXMudGFibGVQYXJhbXM/LnBhZ2luYXRpb24/LnBhZ2VTaXplIHx8MTA7XG4gICAgdGhpcy5wYWdlSW5kZXggPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VJbmRleCA/IHRoaXMucGFnaW5hdGlvblsncGFnZUluZGV4J10gOiB0aGlzLnRhYmxlUGFyYW1zPy5wYWdpbmF0aW9uPy5wYWdlSW5kZXggfHwxO1xuICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wYWdpbmF0aW9uPy50b3RhbFJlY29yZHMgPyB0aGlzLnBhZ2luYXRpb25bJ3RvdGFsUmVjb3JkcyddIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZU9wdGlvbnMgPyB0aGlzLnBhZ2luYXRpb25bJ3BhZ2VTaXplT3B0aW9ucyddIDogWyc1JywgJzEwJywgJzI1JywgJzUwJywgJzEwMCcsICcyMDAnXTtcbiAgICB0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPSAhISh0aGlzLnBhZ2luYXRpb24gJiYgT2JqZWN0LmtleXModGhpcy5wYWdpbmF0aW9uKS5sZW5ndGggPiAwKTtcblxuICAgIHRoaXMuZHJvcGRvd25BY3Rpb25CdXR0b24gPSB0aGlzLmFjdGlvbkJ1dHRvbkFycmF5Py5idXR0b25BcnJheT8uc2xpY2UodGhpcy5hY3Rpb25CdXR0b25BcnJheT8uc2l6ZSk7XG5cbiAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IFsuLi50aGlzLmRhdGFdO1xuICAgIHRoaXMuc0ZpbHRlckRhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9PT0gZmFsc2UgJiYgdGhpcy5kYXRhICYmIHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IE51bWJlcih0aGlzLnBhZ2VTaXplKSB8fCAxMDtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2VJbmRleCAtIDEpICogcGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2VTaXplO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKHN0YXJ0LCBlbmQpIHx8IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVxuICAgIH1cbiAgICBpZih0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50Vmlld0ZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jdXJyZW50Vmlld0ZpbHRlciA9IHRoaXMubGlzdFZpZXdzICYmIHRoaXMubGlzdFZpZXdzLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RWaWV3c1swXSA6IG51bGw7XG4gICAgfVxuICAgIGlmKHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyICE9PSBudWxsKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jdXJyZW50Vmlld0ZpbHRlci5maWx0ZXJOYW1lO1xuICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY3VycmVudFZpZXdGaWx0ZXI/LmNvbHVtbnMgfHwgW107XG4gICAgICBpZihjb2x1bW5zLmxlbmd0aCA+IDApe1xuICAgICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoY29sID0+IGNvbC5uYW1lKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SGVhZGVyTGFiZWxzID0gdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucy5tYXAobmFtZSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgICByZXR1cm4gaW5kZXggIT09IC0xID8gdGhpcy5oZWFkZXJMYWJlbHNbaW5kZXhdIDogbmFtZTsgLy8gZmFsbGJhY2sgdG8gbmFtZSBpZiBubyBsYWJlbCBmb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZmlsdGVyYWJsZSA9PT0gdHJ1ZSApLm1hcChjb2wgPT4gY29sLm5hbWUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuc29ydGFibGUgPT09IHRydWUpLm1hcChjb2wgPT4gY29sLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucz8ubGVuZ3RoID4gMCAmJiB0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXkgPSB7fTtcbiAgICAgIGNvbnN0IGZpbHRPYmpzOiBhbnkgPSB7fTtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheVtlbGVtZW50XSA9IG51bGw7XG4gICAgICAgIGZpbHRPYmpzW2VsZW1lbnRdID0gW107XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGtleTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGtleSk7ICAvLyA8LSBnZXQgbmVzdGVkIHZhbHVlXG4gICAgXG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpbHRPYmpzW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXlba2V5XSA9IG5ldyBTZXQoZmlsdE9ianNba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5ID0gdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXkgPSB0aGlzLm11bHRpcGxlRmlsdGVyO1xuICAgIH1cbiAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsdGVyZWQgYXJyYXkgdGhhdCBleGNsdWRlcyBhbnkgY29sdW1uIHdpdGggJ1snXG4gICAgY29uc3QgdGVtcEZpbHRlckNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiAhY29sLmZpZWxkTmFtZS5pbmNsdWRlcygnWycpKTtcbiAgICBcbiAgICBpZiAodGVtcEZpbHRlckNvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRPYmpzOiBhbnkgPSB7fTtcbiAgICBcbiAgICAgIC8vIFNLUzI2TUFZMjUgSW5pdGlhbGl6ZSBzZXRzIHRvIGNvbGxlY3QgdW5pcXVlIHZhbHVlcyBmb3IgZWFjaCBjb2x1bW5cbiAgICAgIHRlbXBGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgIGZpbHRPYmpzW2NvbC5maWVsZE5hbWVdID0gbmV3IFNldCgpO1xuICAgICAgfSk7XG4gICAgXG4gICAgICAvLyBTS1MyNk1BWTI1IENvbGxlY3QgdW5pcXVlIHZhbHVlcyBmcm9tIHRhYmxlRmlsdGVyRGF0YVxuICAgICAgdGhpcy50YWJsZUZpbHRlckRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICB0ZW1wRmlsdGVyQ29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBjb2wuZmllbGROYW1lKTtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZmlsdE9ianNbY29sLmZpZWxkTmFtZV0uYWRkKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgXG4gICAgICAvLyBTS1MyNk1BWTI1IEFwcGVuZCBcInZhbHVlXCIgcHJvcGVydHkgdG8gZWFjaCBjb2x1bW4gb2JqZWN0IHdpdGggdGhlIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXNcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJBcnJheSA9IFsuLi50ZW1wRmlsdGVyQ29sdW1ucy5tYXAoKGNvbDogYW55KSA9PiAoe1xuICAgICAgICAuLi5jb2wsXG4gICAgICAgIHZhbHVlOiBBcnJheS5mcm9tKGZpbHRPYmpzW2NvbC5maWVsZE5hbWVdKVxuICAgICAgfSkpXVxuICAgIH0gICAgICAgICAgXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICB9LCAwKVxuICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMudG90YWxSZWNvcmRzIHx8IHRoaXMuZGF0YT8ubGVuZ3RoXG4gICAgdGhpcy5maWx0ZXJUYWJsZU5vcyA9IHRoaXMudG90YWxSZWNvcmRzIHx8IHRoaXMuZGF0YT8ubGVuZ3RoXG4gICAgY29uc3QgTnh0RGF0YVRhYmxlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnTnh0RGF0YVRhYmxlJykpO1xuICAgIHRoaXMuY3VycmVudFNvcnRDb2x1bW4gPSBOeHREYXRhVGFibGU/LmN1cnJlbnRTb3J0Q29sdW1uO1xuICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSBOeHREYXRhVGFibGU/LmN1cnJlbnRTb3J0RGlyZWN0aW9uO1xuICAgIGlmIChOeHREYXRhVGFibGU/LmFkZFJlY29yZCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IE54dERhdGFUYWJsZT8ucGFnZVNpemVcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gTnh0RGF0YVRhYmxlPy5wYWdlSW5kZXhcbiAgICAgIHZhciBvYmo6IGFueSA9IHt9O1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaW5saW5lRWxlbWVudCk7XG4gICAgICBrZXlzLmZvckVhY2goKGVsZW1lbnRLZXk6IGFueSkgPT4ge1xuICAgICAgICBvYmpbZWxlbWVudEtleV0gPSAnJztcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhLnB1c2gob2JqKTtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZGF0YTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0pO1xuICAgICAgdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXS5lZGl0Um93ID0gdHJ1ZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdOeHREYXRhVGFibGUnLCBKU09OLnN0cmluZ2lmeSh7IGFkZFJlY29yZDogZmFsc2UsIHBhZ2VTaXplOiAxMCwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgY3VycmVudFNvcnRDb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGN1cnJlbnRTb3J0RGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uIH0pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RpY2t5Q29sdW1uID09PSB0cnVlICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucykge1xuICAgICAgdGhpcy5zdGlja3lDb25kaXRpb24gPSB0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGlja3lDb25kaXRpb24gPSB0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLndpdGhDaGVja0JveCAmJiB0aGlzLmFjdGlvbkJ1dHRvbikge1xuICAgICAgdGhpcy5yZW5kZXJDb2x1bW5zID0gJ2JvdGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy53aXRoQ2hlY2tCb3gpIHtcbiAgICAgIHRoaXMucmVuZGVyQ29sdW1ucyA9ICdzZWxlY3QnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3Rpb25CdXR0b24pIHtcbiAgICAgIHRoaXMucmVuZGVyQ29sdW1ucyA9ICdhY3Rpb24nO1xuICAgIH1cblxuICAgIC8vIFNLUzE5TUFSMjUgYWRkIGZpcnN0IGxpbmUgZm9yIGZvcm1idWlsZGVyIHRhYmxlXG4gICAgaWYgKHRoaXMuaXNFZGl0YWJsZSAmJiB0aGlzLmRhdGEubGVuZ3RoID09PSAwKSB7IHRoaXMuYWRkVGFibGVSZWNvcmQoIHRoaXMuaW5saW5lRWxlbWVudCwgXCJvbkluaXRcIikgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLWJvZHknKTtcbiAgICAgICAgaWYgKHRhYmxlQm9keSAmJiB0aGlzLmlzUGFnaW5hdGlvbikge1xuICAgICAgICAgIHRoaXMuaXNTaGFkb3dIaWRkZW4gPSAhKHRhYmxlQm9keS5zY3JvbGxIZWlnaHQgPCA0NTApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxNTAwKTsgLy8gV2FpdHMgMTAwbXMgZm9yIHJlbmRlcmluZ1xuICAgIC8vIFNLUzE3QVBSMjUgdGFibGUgcGFyZW1zIGRhdGEgdXBkYXRlXG4gICAgaWYgKHRoaXMuc2VhcmNoQ29uZmlncz8uc2VhcmNoRmlsdGVyVmFsKSB7XG4gICAgICB0aGlzLnNlYXJjaEJveFZhbHVlID0gdGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWw7IC8vIFNob3cgdmFsdWUgaW4gdGhlIHNlYXJjaCBib3hcbiAgICAgIHRoaXMucHJldlNlYXJjaCA9IHRoaXMuc2VhcmNoQ29uZmlncz8uc2VhcmNoRmlsdGVyVmFsO1xuICAgIH0gZWxzZSBpZih0aGlzLnRhYmxlUGFyYW1zPy50YWJsZVNlYXJjaCl7XG4gICAgICB0aGlzLnNlYXJjaEJveFZhbHVlID0gdGhpcy50YWJsZVBhcmFtcz8udGFibGVTZWFyY2g7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoQ29uZmlncyAmJiB0aGlzLnNlYXJjaEJveFZhbHVlID8gdGhpcy5lbXB0eVNlYXJjaCh0aGlzLnNlYXJjaEJveFZhbHVlKSA6ICcnXG4gICAgdGhpcy5maWx0ZXJEYXRhQXJyYXkgPSB0aGlzLnRhYmxlUGFyYW1zPy5zZWFyY2hGaWx0ZXJEYXRhID8gdGhpcy50YWJsZVBhcmFtcz8uc2VhcmNoRmlsdGVyRGF0YSA6IHt9O1xuICAgIHRoaXMuc29ydERhdGEodGhpcy50YWJsZVBhcmFtcz8uc29ydD8uY29sdW1uLCB0aGlzLnRhYmxlUGFyYW1zPy5zb3J0Py5kaXJlY3Rpb24sdHJ1ZSlcbiAgfVxuXG4gIC8vIFNLUzIwTUFSMjUgc3VtbWFyeSBjb2x1bW5zIGNhbGNcbiAgY29tcHV0ZVN1bW1hcnlDb2x1bW5zKCkge1xuICAgIGlmICh0aGlzLnN1bW1hcnlDb2x1bW5zICYmIHRoaXMuc3VtbWFyeUNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcChyb3cgPT4ge1xuICAgICAgICBjb25zdCBuZXdSb3cgPSB7IC4uLnJvdyB9O1xuICAgICAgICB0aGlzLnN1bW1hcnlDb2x1bW5zLmZvckVhY2goc3VtbWFyeUNvbCA9PiB7XG4gICAgICAgICAgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ3N1bScgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcykge1xuICAgICAgICAgICAgY29uc3Qgc3VtID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5yZWR1Y2UoKGFjYywgb3BlcmFuZCkgPT4gYWNjICsgKE51bWJlcihuZXdSb3dbb3BlcmFuZF0pIHx8IDApLCAwKTtcbiAgICAgICAgICAgIG5ld1Jvd1tzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBzdW07XG4gICAgICAgICAgfSBlbHNlIGlmIChzdW1tYXJ5Q29sLnR5cGUgPT09ICdjYWxjdWxhdGlvbicgJiYgc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdzdWJ0cmFjdCcgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcykge1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0T3BlcmFuZCwgLi4ucmVzdE9wZXJhbmRzXSA9IHN1bW1hcnlDb2wub3BlcmFuZHM7XG4gICAgICAgICAgICBsZXQgc3VtID0gTnVtYmVyKG5ld1Jvd1tmaXJzdE9wZXJhbmRdKSB8fCAwOyAvLyBTdGFydCB3aXRoIHRoZSBmaXJzdCBvcGVyYW5kXG4gICAgICAgICAgICBzdW0gPSByZXN0T3BlcmFuZHMucmVkdWNlKChhY2MsIG9wZXJhbmQpID0+IGFjYyAtIChOdW1iZXIobmV3Um93W29wZXJhbmRdKSB8fCAwKSwgc3VtKTtcbiAgICAgICAgICAgIG5ld1Jvd1tzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBzdW07XG4gICAgICAgICAgfSBlbHNlIGlmIChzdW1tYXJ5Q29sLnR5cGUgPT09ICdjYWxjdWxhdGlvbicgJiYgc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdtdWx0aXBseScgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcykge1xuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKChhY2MsIG9wZXJhbmQpID0+IGFjYyAqIChOdW1iZXIobmV3Um93W29wZXJhbmRdKSB8fCAwKSwgMSk7IC8vIFN0YXJ0IHdpdGggMVxuICAgICAgICAgICAgbmV3Um93W3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHByb2R1Y3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGE7IC8vIFVwZGF0ZSBkYXRhU291cmNlXG4gICAgICBpZiAoIXRoaXMudG90YWxSZWNvcmRzICYmIHRoaXMuZGF0YSAmJiB0aGlzLmlzUGFnaW5hdGlvbikge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIHx8IDA7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplID0gTnVtYmVyKHRoaXMucGFnZVNpemUpIHx8IDEwO1xuICAgICAgICBjb25zdCBzdGFydCA9IChwYWdlSW5kZXggLSAxKSAqIHBhZ2VTaXplO1xuICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2VTaXplO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCkgfHwgW107XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzUGFnaW5hdGlvbikge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBTS1MyME1BUjI1IENvbXB1dGUgdmFsdWVzIGZvciBzdW1tYXJ5IHJvd3NcbiAgY29tcHV0ZVN1bW1hcnlWYWx1ZXMoZnJvbT8pIHtcbiAgICB0aGlzLnN1bW1hcnlSb3dzPy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBpZiAocm93LnR5cGUgPT09ICdjYWxjdWxhdGlvbicpIHtcbiAgICAgICAgaWYgKHJvdy5vcGVyYXRpb24gPT09ICdzdW0nICYmIHJvdy5jb2x1bW4pIHtcbiAgICAgICAgICAvLyBDb3JyZWN0IHN1bSBvcGVyYXRpb25cbiAgICAgICAgICB0aGlzLnN1bW1hcnlWYWx1ZXNbcm93LmZpZWxkTmFtZV0gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBkYXRhUm93KSA9PiBhY2MgKyAoTnVtYmVyKGRhdGFSb3dbcm93LmNvbHVtbl0pIHx8IDApLFxuICAgICAgICAgICAgMFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ3N1YnRyYWN0JyAmJiByb3cuY29sdW1uKSB7XG4gICAgICAgICAgLy8gU3VidHJhY3Qgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGZpcnN0IHZhbHVlXG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gdGhpcy5kYXRhU291cmNlLmRhdGEucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgZGF0YVJvdywgaW5kZXgpID0+IGluZGV4ID09PSAwID8gTnVtYmVyKGRhdGFSb3dbcm93LmNvbHVtbl0pIHx8IDAgOiBhY2MgLSAoTnVtYmVyKGRhdGFSb3dbcm93LmNvbHVtbl0pIHx8IDApLFxuICAgICAgICAgICAgMFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5JyAmJiByb3cuY29sdW1uKSB7XG4gICAgICAgICAgLy8gTXVsdGlwbHkgc2hvdWxkIHN0YXJ0IHdpdGggMVxuICAgICAgICAgIHRoaXMuc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIGRhdGFSb3cpID0+IGFjYyAqIChOdW1iZXIoZGF0YVJvd1tyb3cuY29sdW1uXSkgfHwgMCksIC8vIFVzZSAxIGluc3RlYWQgb2YgMFxuICAgICAgICAgICAgMVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ3N1YnRyYWN0JyAmJiByb3cub3BlcmFuZHMpIHtcbiAgICAgICAgICAvLyBTdWJ0cmFjdCBiYXNlZCBvbiBvcGVyYW5kc1xuICAgICAgICAgIGNvbnN0IFtvcDEsIG9wMl0gPSByb3cub3BlcmFuZHM7XG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDFdIHx8IDApIC0gKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDJdIHx8IDApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvdy5vcGVyYXRpb24gPT09ICdzdW0nICYmIHJvdy5vcGVyYW5kcykge1xuICAgICAgICAgIC8vIFN1bSBiYXNlZCBvbiBvcGVyYW5kc1xuICAgICAgICAgIGNvbnN0IFtvcDEsIG9wMl0gPSByb3cub3BlcmFuZHM7XG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDFdIHx8IDApICsgKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDJdIHx8IDApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvdy5vcGVyYXRpb24gPT09ICdtdWx0aXBseScgJiYgcm93Lm9wZXJhbmRzKSB7XG4gICAgICAgICAgLy8gTXVsdGlwbHkgYmFzZWQgb24gb3BlcmFuZHNcbiAgICAgICAgICBjb25zdCBbb3AxLCBvcDJdID0gcm93Lm9wZXJhbmRzO1xuICAgICAgICAgIHRoaXMuc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSA9ICh0aGlzLnN1bW1hcnlWYWx1ZXNbb3AxXSB8fCAwKSAqICh0aGlzLnN1bW1hcnlWYWx1ZXNbb3AyXSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU0tTMTNKVU4yNSBTdW0gdGhlIHZhbHVlcyBieSBkZWZhdWx0LlxuICAgICAgaWYocm93LnR5cGUgPT09ICdmdWxsUm93Jyl7XG4gICAgICAgIHJvdz8uY29sdW1ucz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICB0aGlzLnN1bW1hcnlWYWx1ZXNbZWxlbWVudF0gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBkYXRhUm93KSA9PiBhY2MgKyAoTnVtYmVyKGRhdGFSb3dbZWxlbWVudF0pIHx8IDApLFxuICAgICAgICAgICAgMFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChmcm9tICE9PSAnb25DaGFuZ2UnICYmIGZyb20gIT09ICdvbkluaXQnICYmIHRoaXMuZnJvbSA9PT0gJ2Zvcm1CdWlsZGVyJykge1xuICAgICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUoe2RhdGE6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLCBzdW1tYXJ5VmFsdWVzOiB0aGlzLnN1bW1hcnlWYWx1ZXN9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MyME1BUjI1IEhhbmRsZSBtYW51YWwgaW5wdXQgY2hhbmdlcyBpbiBzdW1tYXJ5IHJvd3MgXG4gIG9uU3VtbWFyeUlucHV0Q2hhbmdlKCkge1xuICAgIHRoaXMuY29tcHV0ZVN1bW1hcnlWYWx1ZXMoKTtcbiAgfVxuICAvLyBTS1MxNUZFQjI1IEN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gIHNvcnREYXRhKGNvbHVtbjogc3RyaW5nLCBzb3J0aW5nU3RhdGU/OiBhbnkgfCB1bmRlZmluZWQsIGN1cnJlbnRTdGF0ZT86YW55IHx1bmRlZmluZWQsIGZyb20/OmFueSkge1xuICAgIC8vIERlZmluZSBzb3J0aW5nIHN0YXRlc1xuICAgIGNvbnN0IHNvcnRpbmdTdGF0ZXMgPSBbJ2FzYycsICdkZXNjJywgJ25vbmUnXTtcbiAgICBpZiAodGhpcy5jb25maWdQYWdpbmF0aW9uID09PSBmYWxzZSB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IHRoaXMudG90YWxSZWNvcmRzKSB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgc29ydGluZyBzdGF0ZVxuICAgICAgaWYgKHRoaXMuY3VycmVudFNvcnRDb2x1bW4gPT09IGNvbHVtbiAmJiAhc29ydGluZ1N0YXRlKSB7XG4gICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgc29ydGluZyBzdGF0ZVxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzb3J0aW5nU3RhdGVzLmluZGV4T2YodGhpcy5jdXJyZW50U29ydERpcmVjdGlvbik7XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSBzb3J0aW5nU3RhdGVzWyhjdXJyZW50SW5kZXggKyAxKSAlIHNvcnRpbmdTdGF0ZXMubGVuZ3RoXSBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfCBcIm5vbmVcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGEgbmV3IGNvbHVtbiBpcyBzZWxlY3RlZCwgc3RhcnQgd2l0aCBhc2NlbmRpbmcgc29ydFxuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gc29ydGluZ1N0YXRlIHx8ICdhc2MnO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmlsdGVyQm94RGF0YSAmJiB0aGlzLmZpbHRlckJveERhdGEubGVuZ3RoID4gMCA/IHRoaXMuZmlsdGVyQm94RGF0YSA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgLy8gT25seSBzb3J0IGlmIHRoZSBkaXJlY3Rpb24gaXMgJ2FzYycgb3IgJ2Rlc2MnXG4gICAgICBpZiAodGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgfHwgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgIGRhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZUEgPSB0aGlzLmdldFZhbHVlKGEsIGNvbHVtbik7XG4gICAgICAgICAgbGV0IHZhbHVlQiA9IHRoaXMuZ2V0VmFsdWUoYiwgY29sdW1uKTtcbiAgICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkIG9yIG51bGwgdmFsdWVzXG4gICAgICAgICAgaWYgKHZhbHVlQSA9PSBudWxsICYmIHZhbHVlQiA9PSBudWxsKSByZXR1cm4gMDsgLy8gQm90aCBhcmUgbnVsbC91bmRlZmluZWRcbiAgICAgICAgICBpZiAodmFsdWVBID09IG51bGwpIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IDEgOiAtMTsgLy8gdmFsdWVBIGlzIG51bGxcbiAgICAgICAgICBpZiAodmFsdWVCID09IG51bGwpIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IC0xIDogMTsgLy8gdmFsdWVCIGlzIG51bGxcbiAgICAgICAgICAvLyBIYW5kbGUgZGF0ZSBzb3J0aW5nXG4gICAgICAgICAgaWYgKHRoaXMuaXNEYXRlQ29sdW1uKGNvbHVtbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVBID0gbmV3IERhdGUodmFsdWVBKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVCID0gbmV3IERhdGUodmFsdWVCKTtcbiAgICAgICAgICAgIHZhbHVlQSA9IGRhdGVBLmdldFRpbWUoKTtcbiAgICAgICAgICAgIHZhbHVlQiA9IGRhdGVCLmdldFRpbWUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZUEgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZUIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgbnVtYmVyIHNvcnRpbmdcbiAgICAgICAgICAgIHZhbHVlQSA9IE51bWJlcih2YWx1ZUEpO1xuICAgICAgICAgICAgdmFsdWVCID0gTnVtYmVyKHZhbHVlQik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWVBID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIHN0cmluZyBjb21wYXJpc29uXG4gICAgICAgICAgICB2YWx1ZUEgPSB2YWx1ZUEudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHZhbHVlQiA9IHZhbHVlQi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBDb21wYXJlIHZhbHVlc1xuICAgICAgICAgIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IC0xIDogMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlQSA+IHZhbHVlQikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB2YWx1ZXMgYXJlIHRoZSBzYW1lLCByZXR1cm4gMCB0byBtYWludGFpbiBvcmlnaW5hbCBvcmRlclxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbLi4uZGF0YV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIHx8IDA7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplID0gTnVtYmVyKHRoaXMucGFnZVNpemUpIHx8IDEwO1xuICAgICAgICBjb25zdCBzdGFydCA9IChwYWdlSW5kZXggLSAxKSAqIHBhZ2VTaXplO1xuICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2VTaXplO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZmlsdGVyQm94RGF0YSA/IHRoaXMuZmlsdGVyQm94RGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCkgfHwgW10gOiB0aGlzLmRhdGE/LnNsaWNlKHN0YXJ0LCBlbmQpIHx8IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgc29ydGluZyBzdGF0ZVxuICAgICAgaWYgKHRoaXMuY3VycmVudFNvcnRDb2x1bW4gPT09IGNvbHVtbikge1xuICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHNvcnRpbmcgc3RhdGVcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gc29ydGluZ1N0YXRlcy5pbmRleE9mKHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gc29ydGluZ1N0YXRlc1soY3VycmVudEluZGV4ICsgMSkgJSBzb3J0aW5nU3RhdGVzLmxlbmd0aF0gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIHwgXCJub25lXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBhIG5ldyBjb2x1bW4gaXMgc2VsZWN0ZWQsIHN0YXJ0IHdpdGggYXNjZW5kaW5nIHNvcnRcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgfVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ054dERhdGFUYWJsZScsIEpTT04uc3RyaW5naWZ5KHsgYWRkUmVjb3JkOiBmYWxzZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsIGN1cnJlbnRTb3J0Q29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBjdXJyZW50U29ydERpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiB9KSk7XG4gICAgICAvLyBPbmx5IHNvcnQgaWYgdGhlIGRpcmVjdGlvbiBpcyAnYXNjJyBvciAnZGVzYydcbiAgICAgIGlmKGN1cnJlbnRTdGF0ZSAhPT0gdHJ1ZSAmJiBmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sIHRhYmxlU2VhcmNoOiB7IGZpZWxkczogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB2YWx1ZTogdGhpcy5zZWFyY2hCb3hWYWx1ZSB9LCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbixsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9IH0pXG4gICAgfVxuICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZVBhcmFtc0VtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSx0YWJsZVNlYXJjaDogdGhpcy5zZWFyY2hCb3hWYWx1ZSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld319KVxuICAgIGlmKGZyb20gPT09ICdvbkNoYW5nZScpIHRoaXMucGFnZVBhcmFtcyh0aGlzLnRhYmxlUGFyYW1zPy5wYWdpbmF0aW9uLCdvbkNoYW5nZScpXG4gICAgdGhpcy5vblN1bW1hcnlJbnB1dENoYW5nZSgpXG4gIH1cblxuICBvblNjcm9sbCh0YWJsZUNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmlzU2Nyb2xsZWQgPSB0YWJsZUNvbnRhaW5lci5zY3JvbGxUb3AgPiAwO1xuICAgIGNvbnN0IHRhYmxlQm9keUhlaWdodCA9IHRhYmxlQ29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gdGFibGVCb2R5SGVpZ2h0IC0gdGFibGVDb250YWluZXIuc2Nyb2xsVG9wIDw9IHRhYmxlQ29udGFpbmVyLmNsaWVudEhlaWdodCArIDE7XG4gICAgLy9TS1MxNUZFQjI1IEVuc3VyZSBzaGFkb3cgaXMgaGlkZGVuIG9ubHkgaWYgdGFibGUgYm9keSBoZWlnaHQgaXMgZ3JlYXRlciB0aGFuIDQwMHB4XG4gICAgaWYgKHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLmlzU2hhZG93SGlkZGVuID0gIShpc0F0Qm90dG9tIHx8IHRhYmxlQm9keUhlaWdodCA8IDQ1MCk7XG4gICAgfVxuICB9XG5cbiAgLy9TS1MxNUZFQjI1IGxvc2luZyB0aGUgZmlsdGVyIGNvbXBvbmVudCB3aGVuIHRoZSBtb3VzZSBpcyBjbGlja2VkIG91dHNpZGUgdGFibGVcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gZmFsc2U7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHByZXZlbnRzIGFueSBvdGhlciBkZWZhdWx0IGFjdGlvblxuICB9XG5cbiAgLy9TS1MxNUZFQjI1IGZpbHRlciBkYXRhIHRoYXQgdG8gYmUgZGlzcGxheWVkIGluIGhlYWRlciBmaWx0ZXIgaWNvbiBpcyBwYXNzZWQgaW4gJ2ZpbHRlckFycmF5JyBhcnJheVxuICBmaWx0ZXIoZGF0YXM6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyQXJyYXkgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyID0gZGF0YXM7XG4gICAgdGhpcy5maWx0ZXJBcnJheSA9IHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheT8uW2RhdGFzXTtcbiAgICB0aGlzLnNlYXJjaEZpbHRlciA9ICF0aGlzLnNlYXJjaEZpbHRlcjtcbiAgICB0aGlzLmlzUmVzaXplZCA9IHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdPy5sZW5ndGggPiAwXG4gIH1cblxuICAvLyBTS1MxNUZFQjI1ICBlbWl0dGluZyBwYWdyIHNpemUgYW5kIGluZGV4IHRvIHBhcmVudCBvbiBwYWdpbmF0aW5nXG4gIHBhZ2VQYXJhbXMoZXZlbnQ6IGFueSwgZnJvbT86YW55KSB7XG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudD8ucGFnZUluZGV4IHx8IHRoaXMucGFnZUluZGV4XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50Py5wYWdlU2l6ZSB8fCB0aGlzLnBhZ2VTaXplXG4gICAgdGhpcy5maWx0ZXJUYWJsZU5vcyA9IHRoaXMuZmlsdGVyQm94RGF0YT8ubGVuZ3RoXG4gICAgaWYgKHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9PT0gZmFsc2UgfHwgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSB0aGlzLnRvdGFsUmVjb3Jkcykge1xuICAgICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLmFwcGx5RmlsdGVyKHRoaXMuc2VhcmNoQm94VmFsdWUgLCAncGFnZVBhcmFtcycpXG4gICAgICBjb25zdCBzdGFydCA9IChOdW1iZXIodGhpcy5wYWdlSW5kZXgpIC0gMSkgKiBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5maWx0ZXJCb3hEYXRhPy5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIHRoaXMub25TdW1tYXJ5SW5wdXRDaGFuZ2UoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sIHRhYmxlU2VhcmNoOiB7IGZpZWxkczogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB2YWx1ZTogdGhpcy5zZWFyY2hCb3hWYWx1ZSB9LCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fSB9KVxuICAgIH1cbiAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVQYXJhbXNFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sdGFibGVTZWFyY2g6IHRoaXMuc2VhcmNoQm94VmFsdWUsIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9fSlcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgYXBwbHkgc2VhcmNoIGJhciBmaWx0ZXIgdXNpbmcgbWF0XG4gIGFwcGx5RmlsdGVyKGV2ZW50OiBhbnksIGZyb20/OiBhbnkpIHtcbiAgICBsZXQgZmlsdGVyVmFsdWUgPSBldmVudDtcbiAgICBmaWx0ZXJWYWx1ZSA/IGZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgOiBmaWx0ZXJWYWx1ZSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoQm94VmFsdWUgPSBmaWx0ZXJWYWx1ZVxuICAgIGlmICghZmlsdGVyVmFsdWUpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGFcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YS5maWx0ZXIoaXRlbSA9PlxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMuc29tZShjb2x1bW4gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtjb2x1bW5dPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKGZpbHRlclZhbHVlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmKGZyb20gIT09ICdwYWdlUGFyYW1zJyAmJiBmcm9tICE9PSAnb25DaGFuZ2UnKSB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLnNGaWx0ZXJEYXRhID0gdGhpcy5kYXRhU291cmNlLmRhdGFcbiAgICB0aGlzLmZpbHRlclRhYmxlTm9zID0gdGhpcy5zRmlsdGVyRGF0YT8ubGVuZ3RoXG4gICAgdGhpcy50b3RhbENvdW50ID0gdGhpcy5kYXRhLmxlbmd0aFxuICAgIGNvbnN0IHN0YXJ0ID0gKE51bWJlcih0aGlzLnBhZ2VJbmRleCkgLSAxKSAqIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhPy5zbGljZShzdGFydCwgZW5kKTtcbiAgICB0aGlzLmZpbHRlclJldGFpbihmcm9tID09PSAnb25DaGFuZ2UnID8gdGhpcy50YWJsZVBhcmFtcz8uc2VhcmNoRmlsdGVyRGF0YSB8fCB0aGlzLmZpbHRlckRhdGFBcnJheSA6IHRoaXMuZmlsdGVyRGF0YUFycmF5LGZyb20gKVxuICB9XG5cbiAgLyoqIFNLUzE1RkVCMjUgV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIC8vIGNoZWNrIGlmIGFsbCByb3dzIGFyZSBzZWxlY3RlZFxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICB9XG5cbiAgLyoqIFNLUzE1RkVCMjUgU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgLy8gaWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24gdGhlbiBjbGVhciB0aGF0IHNlbGVjdGlvblxuICAgIC8vIGVtaXQgdGhlIHNlbGVjdGVkIHZhbHVlIG9ubHkgdG8gcGFyZW50XG4gICAgaWYgKHRoaXMuaXNTb21lU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gICB0byByZW1vdmUgdGhlIGVkaXRSb3csIGlmIHRoZSBjaGVja2JveCBpcyB1bmNoZWNrZWRcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudD8uZWRpdFJvdykgZWxlbWVudC5lZGl0Um93ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyBpdGVtcyBhcmUgc2VsZWN0ZWQsIGVpdGhlciBzZWxlY3QgYWxsIGl0ZW1zIG9yIGNsZWFyIHRoZSBzZWxlY3Rpb25cbiAgICAgIC8vIGVtaXQgdGhlIHNlbGVjdGVkIHZhbHVlcyB0byBwYXJlbnRcbiAgICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID8gdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKHJvdzogYW55KSA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG5cblxuICAvLyBTS1MxNUZFQjI1IENoZWNrcyB3aGV0aGVyIGFueSBpdGVtcyBhcmUgY3VycmVudGx5IHNlbGVjdGVkIGluIHRoZSB0YWJsZS5cbiAgaXNTb21lU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA+IDA7XG4gIH1cblxuXG4gIC8vIFNLUzE1RkVCMjUgZW1pdCB0aGUgY2hlY2sgYm94IHZhbHVlcywgdGhhdCBzZWxlY3RlZCBzZXBhcmF0ZWx5XG4gIHNlcGFyYXRlUm93U2VsZWN0KGRhdGE6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgLy8gICB0byByZW1vdmUgdGhlIGVkaXRSb3cgaWQgY2hlY2sgYm94IGlzIHVuY2hlY2tlZCBvbiBzZXBhcmF0ZSByb3dcbiAgICBpZiAoZGF0YSAmJiBlbGVtZW50Py5lZGl0Um93KSB7XG4gICAgICBlbGVtZW50LmVkaXRSb3cgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZClcbiAgICB9XG4gIH1cblxuICAvL1NLUzE1RkVCMjUgZGF0YSB0aGF0IHRvIGJlIHBhc3NlZCwgd2hlbiB0YWJsZSByb3cgaXMgY2xpY2tlZFxuICB0YWJsZUNsaWNrKGRhdGE6IGFueSkge1xuICAgIHRoaXMudGFibGVSb3dDbGljay5lbWl0KGRhdGEpO1xuICB9XG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuICBcbiAgICByZXR1cm4gcGF0aFxuICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKVxcXS9nLCAnLiQxJykgLy8gdHVybnMgXCJtZW1iZXJzWzBdXCIgaW50byBcIm1lbWJlcnMuMFwiXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiAoYWNjICYmIGFjY1twYXJ0XSAhPT0gdW5kZWZpbmVkKSA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCwgb2JqKTtcbiAgfVxuICBcbiAgLy9TS1MxNUZFQjI1IFJldGFpbiB0aGUgZmlsdGVyZGF0YVxuICBmaWx0ZXJSZXRhaW4oZmlsdGVya2V5OiBhbnksIGZyb20/OmFueSkge1xuICAgIGlmIChmaWx0ZXJrZXkgJiYgT2JqZWN0LmtleXMoZmlsdGVya2V5KS5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5zRmlsdGVyRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBsZXQgaXNEYXRhQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZpbHRlcmtleSkpIHtcbiAgICAgICAgaWYgKGZpbHRlcmtleVtrZXldICYmIGZpbHRlcmtleVtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpc0RhdGFDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc0RhdGFDaGVja2VkKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuc0ZpbHRlckRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZmlsdGVya2V5KSkge1xuICAgICAgICAgIGlmIChmaWx0ZXJrZXlba2V5XSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc0ZpbHRlckRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKGl0ZW0sIGtleSk7XG4gICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJrZXlba2V5XS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICBcbiAgICAgICAgICAgIGNvbnN0IGRhdGExID0gWy4uLnRoaXMuZGF0YSwgLi4uZGF0YV07XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZXMoZGF0YTEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZihmcm9tICE9PSAncGFnZVBhcmFtcycgJiYgZnJvbSAhPT0gJ29uQ2hhbmdlJykgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgY29uc3Qgc3RhcnQgPSAoTnVtYmVyKHRoaXMucGFnZUluZGV4KSAtIDEpICogTnVtYmVyKHRoaXMucGFnZVNpemUpO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgTnVtYmVyKHRoaXMucGFnZVNpemUpO1xuICAgIHRoaXMuZmlsdGVyQm94RGF0YSA9IHRoaXMuZGF0YVxuICAgIHRoaXMuZmlsdGVyVGFibGVOb3MgPSB0aGlzLmZpbHRlckJveERhdGE/Lmxlbmd0aFxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhPy5zbGljZShzdGFydCwgZW5kKTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YVxuICAgIHRoaXMuc29ydERhdGEodGhpcy5jdXJyZW50U29ydENvbHVtbiAsdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbix1bmRlZmluZWQsZnJvbSlcbiAgfVxuXG4vLyBTS1MxNUZFQjI1IHRvIHJlbW92ZSBkdXBsaWNhdGUgb2JqZWN0IGZyb20gdHdvIGFycmF5cyAoc2FmZSBzdHJpbmdpZnkpXG5yZW1vdmVEdXBsaWNhdGVzKG9iamVjdHM6IGFueSkge1xuICBjb25zb2xlLmxvZyhcInJlbW92ZUR1cGxpY2F0ZXNcIixvYmplY3RzKVxuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHVuaXF1ZU9iamVjdHM6IGFueVtdID0gW107XG5cbiAgY29uc3Qgc2FmZVN0cmluZ2lmeSA9IChvYmo6IGFueSkgPT4ge1xuICAgIGNvbnN0IHNlZW5PYmpzID0gbmV3IFdlYWtTZXQoKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsOyAvLyByZXBsYWNlIHVuZGVmaW5lZCB0byBhdm9pZCBpc3N1ZXNcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHNlZW5PYmpzLmhhcyh2YWx1ZSkpIHJldHVybjsgLy8gc2tpcCBjaXJjdWxhclxuICAgICAgICBzZWVuT2Jqcy5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIG9iamVjdHMuZm9yRWFjaCgob2JqOiBhbnkpID0+IHtcbiAgICBjb25zdCBrZXkgPSBzYWZlU3RyaW5naWZ5KG9iaik7XG4gICAgaWYgKCFzZWVuLmhhcyhrZXkpKSB7XG4gICAgICBzZWVuLmFkZChrZXkpO1xuICAgICAgdW5pcXVlT2JqZWN0cy5wdXNoKG9iaik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdW5pcXVlT2JqZWN0cztcbn1cblxuICAvLyBTS1MxNUZFQjI1ICBvbiBkZWxldGUgY2xpY2sgc2F2ZSB0aGUgZGF0YSBpbiB2YXJpYWJsZXNcbiAgZGVsZXRlUmVjb3JkKGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmZyb20gPT09ICdmb3JtQnVpbGRlcicpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gWy4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhXTsgLy8gQ3JlYXRlIGEgbmV3IHJlZmVyZW5jZVxuICAgICAgdXBkYXRlZERhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdXBkYXRlZERhdGE7IC8vIFJlYXNzaWduIHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgICAgdGhpcy5kYXRhID0gdXBkYXRlZERhdGE7IC8vIFN5bmMgdGhpcy5kYXRhXG4gICAgICB0aGlzLmNvbXB1dGVTdW1tYXJ5VmFsdWVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVsZXRlRGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLmRlbGV0ZUluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmRlbGV0ZU1vZGFsID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1ICBhZnRlciBjbGlja2luZyB5ZXMgaW4gZGVsZXRlIGFsZXJ0IG1vZGFsLCBlbWl0IHRvIHBhcmVudFxuICBkZWxldGVSZWNvcmREYXRhKCkge1xuICAgIHRoaXMub25EZWxldGVEYXRhLmVtaXQoeyBkYXRhOiB0aGlzLmRlbGV0ZURhdGEsIGFsbERhdGE6IHRoaXMuZGF0YSB9KTtcbiAgICB0aGlzLmRlbGV0ZU1vZGFsID0gZmFsc2U7XG4gIH1cblxuICAvL1NLUzE1RkVCMjUgdG8gc2F2ZSB0aGUgZWRpdGVkIGRhdGEgaW4gdGFibGU7XG4gIHNhdmVCdXR0b24oKSB7XG4gICAgLy8gZW1pdHRpbmcgYWxsIGRhdGEgd2l0aCBzZWxlY3RlZCBkYXRhXG4gICAgdGhpcy5zYXZlQnV0dG9uRGF0YS5lbWl0KHsgc2VsZWN0ZWREYXRhOiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCwgYWxsRGF0YTogdGhpcy5kYXRhIH0pO1xuICB9XG5cbiAgLy9TS1MxNUZFQjI1IHBhc3MgdGhlIHJlamVjdGVkIHJlYXNvblxuICBvbkVkaXQoZGF0YTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JykgZGF0YS5lZGl0Um93ID0gdHJ1ZTsgLy8gbWFkZSBlZGl0aW5nIHJvdyBhcyB0cnVlIC8vICBzb2x2ZSB1bmRlZmluZWQgZXJyb3Igb24gc3RyaW5nXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KGRhdGEpO1xuICAgIHRoaXMub25FZGl0RGF0YS5lbWl0KHsgZGF0YTogZGF0YSwgYWxsRGF0YTogdGhpcy5kYXRhIH0pO1xuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSB0YWJsZSB0b3AgYnV0dG9ucyBlbWl0XG4gIGNvbW1vbkJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XG4gICAgdGhpcy5idXR0b25FbWl0LmVtaXQoYnV0dG9uKTtcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSBvYmplY3RzLiBcbiAgLy8gSW4gJ2VsZW1lbnQnIHdlIHdpbGwgcGFzcyBvYmplY3QgYW5kIGluICdjb2x1bW4nIHdlIHdpbGwgcGFzcyBwYXRoIGFzIHN0cmluZyBlZy5lbXBsb3llZS5maW5hbmNlSW5mb1swXS51YW4gdG8gcmV0aWV2ZSB1YW4gdmFsdWUgXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgY29sdW1uOiBzdHJpbmcpIHtcbiAgICBpZiAoIWVsZW1lbnQgfHwgIWNvbHVtbikge1xuICAgICAgcmV0dXJuICcnOyAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIG9yIG51bGwgaWYgZWxlbWVudCBvciBjb2x1bW4gaXMgaW52YWxpZFxuICAgIH1cbiAgICBsZXQgZmxkcyA9IGNvbHVtbi5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gZWxlbWVudDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzcGxpdEZsZHMgPSBmbGRzW2ldLnNwbGl0KCdbJyk7XG4gICAgICBpZiAoc3BsaXRGbGRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtmbGRzW2ldXSA/PyAnJzsgLy8gVXNlIG51bGxpc2ggY29hbGVzY2luZyB0byBoYW5kbGUgdW5kZWZpbmVkL251bGxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpbmRleCA9IE51bWJlcihzcGxpdEZsZHNbMV0uc3BsaXQoJ10nKVswXSk7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3NwbGl0Rmxkc1swXV0/LltpbmRleF0gPz8gJyc7IC8vIFNhZmVseSBhY2Nlc3MgYXJyYXkgaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbiAgLy9TS1MxNUZFQjI1IGh5cGVybGlubCBjb2x1bW5zIG9ubHkgZW1pdHRlZFxuICBvbkNsaWNrSHlwZXJsaW5rKGNvbHVtbjogYW55LCBlbGVtZW50OiBhbnksIGlzSHlwZXJMaW5rOiBhbnkpIHtcbiAgICBpZiAoaXNIeXBlckxpbmspIHRoaXMuaHlwZXJMaW5rRW1pdC5lbWl0KHsgY29sdW1uOiBjb2x1bW4sIGVsZW1lbnQ6IGVsZW1lbnQgfSk7XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGh5cGVybGluayBhY3Rpb24gaXMgcHJlc2VudCBpbiB0aGF0IGNvbHVtblxuICBjaGVja0h5cGVybGlua0NoZWNrKGNvbDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwZXJMaW5rQ29sdW1ucz8uaW5jbHVkZXMoY29sKSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgb24gYWRkIHJlY29yZCBpbiB0YWJsZSwgdGhlICdpbmxpbmVFbGVtZW50JyB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgdGFibGUgZGF0YSBcbiAgYWRkVGFibGVSZWNvcmQoZWxlbWVudDogYW55LGZyb20/OmFueSkge1xuICAgIGlmICh0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPT09IGZhbHNlIHx8IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA9PT0gdGhpcy50b3RhbFJlY29yZHMpIHtcbiAgICAgIHZhciBvYmo6IGFueSA9IHt9O1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGVsZW1lbnQpO1xuICAgICAga2V5cy5mb3JFYWNoKChlbGVtZW50S2V5OiBhbnkpID0+IHtcbiAgICAgICAgb2JqW2VsZW1lbnRLZXldID0gJyc7XG4gICAgICB9KTtcbiAgICAgIC8vIFNLUzIwTUFSMjUgQ29tcHV0ZSBzdW1tYXJ5IGNvbHVtbnMgZm9yIHRoZSBuZXcgcm93XG4gICAgICBpZiAodGhpcy5zdW1tYXJ5Q29sdW1ucyAmJiB0aGlzLnN1bW1hcnlDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zdW1tYXJ5Q29sdW1ucy5mb3JFYWNoKHN1bW1hcnlDb2wgPT4ge1xuICAgICAgICAgIGlmIChzdW1tYXJ5Q29sLnR5cGUgPT09ICdjYWxjdWxhdGlvbicgJiYgc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdzdW0nICYmIHN1bW1hcnlDb2wub3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1bSA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKChhY2MsIG9wZXJhbmQpID0+IGFjYyArIChOdW1iZXIob2JqW29wZXJhbmRdKSB8fCAwKSwgMCk7XG4gICAgICAgICAgICBvYmpbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VidHJhY3QnICYmIHN1bW1hcnlDb2wub3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1bSA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKChhY2MsIG9wZXJhbmQpID0+IGFjYyAtIChOdW1iZXIob2JqW29wZXJhbmRdKSB8fCAwKSwgMCk7XG4gICAgICAgICAgICBvYmpbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnbXVsdGlwbHknICYmIHN1bW1hcnlDb2wub3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1bSA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKChhY2MsIG9wZXJhbmQpID0+IGFjYyAqIChOdW1iZXIob2JqW29wZXJhbmRdKSB8fCAwKSwgMCk7XG4gICAgICAgICAgICBvYmpbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChzdW1tYXJ5Q29sLnR5cGUgPT09ICdjYWxjdWxhdGlvbicgJiYgc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdzdWJ0cmFjdCcgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcykge1xuICAgICAgICAgICAgY29uc3Qgc3VtID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5zbGljZSgxKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2MsIG9wZXJhbmQpID0+IGFjYyAtIChOdW1iZXIob2JqW29wZXJhbmRdKSB8fCAwKSxcbiAgICAgICAgICAgICAgTnVtYmVyKG9ialtzdW1tYXJ5Q29sLm9wZXJhbmRzWzBdXSkgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG9ialtzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBzdW07XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5JyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2MsIG9wZXJhbmQpID0+IGFjYyAqIChOdW1iZXIob2JqW29wZXJhbmRdKSB8fCAwKSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG9ialtzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBwcm9kdWN0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEucHVzaChvYmopO1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5kYXRhO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xuXG4gICAgICBpZiAodGhpcy5zdGlja3lDb2x1bW4gPT09IHRydWUgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKSB7XG4gICAgICAgIHRoaXMuc3RpY2t5Q29uZGl0aW9uID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0aWNreUNvbmRpdGlvbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoICsgMTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFnZVNpemUgPSAxMFxuICAgICAgdGhpcy50b3RhbENvdW50ID0gdGhpcy5kYXRhLmxlbmd0aFxuICAgICAgdGhpcy5maWx0ZXJUYWJsZU5vcyArPSAxIFxuICAgICAgdGhpcy5wYWdlSW5kZXggPSBNYXRoLmNlaWwodGhpcy50b3RhbENvdW50IC8gdGhpcy5wYWdlU2l6ZSk7XG4gICAgICBjb25zdCBzdGFydCA9IChOdW1iZXIodGhpcy5wYWdlSW5kZXgpIC0gMSkgKiBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICAgIGlmICghdGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhPy5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCh0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdKTtcbiAgICAgIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0uZWRpdFJvdyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IE1hdGguY2VpbCh0aGlzLnRvdGFsUmVjb3JkcyAvIDEwKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdOeHREYXRhVGFibGUnLCBKU09OLnN0cmluZ2lmeSh7IGFkZFJlY29yZDogdHJ1ZSwgcGFnZVNpemU6IDEwLCBwYWdlSW5kZXg6IHBhZ2VJbmRleCwgY3VycmVudFNvcnRDb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGN1cnJlbnRTb3J0RGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uIH0pKTtcbiAgICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IDEwLCBwYWdlSW5kZXg6IHBhZ2VJbmRleCB9LCB0YWJsZVNlYXJjaDogeyBmaWVsZHM6IHRoaXMuZGlzcGxheWVkQ29sdW1ucywgdmFsdWU6IHRoaXMuc2VhcmNoQm94VmFsdWUgfSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld30gfSlcbiAgICB9XG4gICAgdGhpcy5jb21wdXRlU3VtbWFyeVZhbHVlcyhmcm9tKTtcbiAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVQYXJhbXNFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sdGFibGVTZWFyY2g6IHRoaXMuc2VhcmNoQm94VmFsdWUsIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9fSlcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgQWN0aW9uIGJ1dHRvbiBjb25kaXRpb25hbGx5IGRpc3BsYXllZCBmdW5jdGlvblxuICBpc0NvbmRpdGlvbk1ldChlbGVtZW50OiBhbnksIGNvbmRpdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChjb25kaXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHsgYW5kQ29uZGl0aW9uTGlzdCwgb3JDb25kaXRpb25MaXN0IH0gPSBjb25kaXRpb25zO1xuICAgICAgLy8gIElmIGFuZENvbmRpdGlvbkxpc3QgZXhpc3RzLCBjaGVjayB0aGF0IGFsbCBjb25kaXRpb25zIGFyZSBtZXRcbiAgICAgIGNvbnN0IGlzQW5kQ29uZGl0aW9uTWV0ID0gYW5kQ29uZGl0aW9uTGlzdCA/IGFuZENvbmRpdGlvbkxpc3QuZXZlcnkoKGNvbmQ6IHsgY29uZGl0aW9uOiBzdHJpbmcgfCBhbnlbXTsgY29sdW1uOiBzdHJpbmcgfCBudW1iZXI7IH0pID0+XG4gICAgICAgIGNvbmQuY29uZGl0aW9uLmluY2x1ZGVzKGVsZW1lbnRbY29uZC5jb2x1bW5dKVxuICAgICAgKSA6IHRydWU7IC8vICBJZiBubyBhbmRDb25kaXRpb25MaXN0LCBjb25zaWRlciBpdCBhcyBhbHdheXMgbWV0XG4gICAgICAvLyAgSWYgb3JDb25kaXRpb25MaXN0IGV4aXN0cywgY2hlY2sgaWYgYXQgbGVhc3Qgb25lIGNvbmRpdGlvbiBpcyBtZXRcbiAgICAgIGNvbnN0IGlzT3JDb25kaXRpb25NZXQgPSBvckNvbmRpdGlvbkxpc3QgPyBvckNvbmRpdGlvbkxpc3Quc29tZSgoY29uZDogeyBjb25kaXRpb246IHN0cmluZyB8IGFueVtdOyBjb2x1bW46IHN0cmluZyB8IG51bWJlcjsgfSkgPT5cbiAgICAgICAgY29uZC5jb25kaXRpb24uaW5jbHVkZXMoZWxlbWVudFtjb25kLmNvbHVtbl0pXG4gICAgICApIDogdHJ1ZTsgLy8gIElmIG5vIG9yQ29uZGl0aW9uTGlzdCwgY29uc2lkZXIgaXQgYXMgYWx3YXlzIG1ldFxuICAgICAgLy8gIFJldHVybiB0cnVlIGlmIHRoZSBBTkQgY29uZGl0aW9uIGlzIG1ldCBhbmQgdGhlIE9SIGNvbmRpdGlvbiBpcyBtZXRcbiAgICAgIHJldHVybiBpc0FuZENvbmRpdGlvbk1ldCAmJiBpc09yQ29uZGl0aW9uTWV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IENoZWNrIGlmIHRoZSBjb2x1bW4gaXMgYSBkYXRlIGNvbHVtblxuICBpc0RhdGVDb2x1bW4oY29sdW1uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlQ29sdW1ucz8uaW5jbHVkZXMoY29sdW1uKSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgQ2hlY2sgaWYgdGhlIGNvbHVtbiBpcyBhIHRpbWUgY29sdW1uXG4gIGlzVGltZUNvbHVtbihjb2x1bW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRpbWVDb2x1bW5zPy5pbmNsdWRlcyhjb2x1bW4pID8/IGZhbHNlO1xuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBjb25maWcgc2VhcmNoIGZpbHRlciBib3ggZnVuY3Rpb25cbiAgb25TZWFyY2goZXZlbnQ6IGFueSxmcm9tPzphbnkpIHtcbiAgICB0aGlzLnNlYXJjaEJveFZhbHVlID0gZXZlbnQ7IC8vIFVwZGF0ZSB0aGUgZGlzcGxheWVkIHZhbHVlIGluIHRoZSBzZWFyY2ggYm94XG4gICAgaWYgKHRoaXMuc2VhcmNoQ29uZmlncyB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IHRoaXMudG90YWxSZWNvcmRzKSB7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICAgIHRoaXMucGFnZVNpemUgPSAxMFxuICAgICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIH0sIHRhYmxlU2VhcmNoOiB7IGZpZWxkczogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB2YWx1ZTogdGhpcy5zZWFyY2hCb3hWYWx1ZSB9LCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fSB9KVxuICAgIH1cbiAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVQYXJhbXNFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sdGFibGVTZWFyY2g6IHRoaXMuc2VhcmNoQm94VmFsdWUsIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9fSlcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgSWYgdGhlIHZhbHVlIGluIHRoZSBzZWFyY2ggYm94IGlzIGVtcHR5LCBjYWxsIHRoZSBvblNlYXJjaCBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5XG4gIGVtcHR5U2VhcmNoKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIWV2ZW50LnRyaW0oKSAmJiAodGhpcy5wcmV2U2VhcmNoICE9IGV2ZW50LnRyaW0oKSkpIHtcbiAgICAgIHRoaXMub25TZWFyY2goZXZlbnQpXG4gICAgfVxuICAgIHRoaXMucHJldlNlYXJjaCA9IGV2ZW50LnRyaW0oKVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBpbmZvU2lkZXNjcmVlbiBlbWl0IFxuICBvblNpZGVOYXZJbmZvQ2xpY2soZGF0YTogYW55LCBjb2w6IGFueSkge1xuICAgIHRoaXMuc2lkZU5hdkVtaXQuZW1pdCh7XG4gICAgICBkYXRhLCBjb2wsXG4gICAgICBjb25maWc6IHVuZGVmaW5lZFxuICAgIH0pXG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IGZvciBhY3RpdmUgY29sdW1uIHNlbGVjdFxuICBvbkNvbHVtbkNsaWNrKGNvbHVtbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVDb2x1bW4gPSBjb2x1bW47XG4gICAgaWYgKCF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIC8vIEV4aXN0aW5nIHNvcnQvZmlsdGVyIGxvZ2ljXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gPT09IGNvbHVtbikge1xuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IG51bGw7XG4gICAgICB0aGlzLmNvbHVtblNlbGVjdGVkLmVtaXQobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5kYXRhU291cmNlLmRhdGEubWFwKHJvdyA9PiAoe1xuICAgICAgICB2YWx1ZTogcm93W2NvbHVtbl0sXG4gICAgICAgIGlkOiByb3cuaWQgLy8gb3IgdW5pcXVlIGlkZW50aWZpZXJcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMuY29sdW1uU2VsZWN0ZWQuZW1pdCh7IGNvbHVtbiwgZGF0YTogY29sdW1uRGF0YSB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IGZvciBjbG9zZSBzZWFyY2ggZmlsdGVyIGJveFxuICBjbG9zZWZpbHRlcihmcm9tPzphbnkpIHtcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZSB8fCAxMFxuICAgIHRoaXMucGFnZUluZGV4ID0gMVxuICAgIHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdID0gW11cbiAgICB0aGlzLmlzUmVzaXplZCA9IGZhbHNlXG4gICAgaWYgKHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9PT0gZmFsc2UgfHwgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSB0aGlzLnRvdGFsUmVjb3Jkcykge1xuICAgICAgdGhpcy5maWx0ZXJSZXRhaW4odGhpcy5maWx0ZXJEYXRhQXJyYXkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IDEwLCBwYWdlSW5kZXg6IDEgfSwgdGFibGVTZWFyY2g6IHsgZmllbGRzOiB0aGlzLmRpc3BsYXllZENvbHVtbnMsIHZhbHVlOiB0aGlzLnNlYXJjaEJveFZhbHVlIH0sIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9IH0pXG4gICAgfVxuICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZVBhcmFtc0VtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSx0YWJsZVNlYXJjaDogdGhpcy5zZWFyY2hCb3hWYWx1ZSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld319KVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBzZWFyY2ggZmlsdGVyIGJveCBjaGVja2JveCByZXRhaW5cbiAgaXNTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdICYmIHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdLmluY2x1ZGVzKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBzZWFyY2ggZmlsdGVyIGJveCBjaGVja2JveCBzZWxlY3RcbiAgY2hlY2tlZERhdGEoZXZlbnQ6IGFueSxmcm9tPzphbnkpIHtcbiAgICBjb25zb2xlLmxvZyhcImNoZWNrZWREYXRhXCIsZXZlbnQpXG4gICAgbGV0IHNlbGVjdGVkQXJyYXkgPSBbXVxuICAgIHNlbGVjdGVkQXJyYXkgPSB0aGlzLmZpbHRlckRhdGFBcnJheVt0aGlzLnNlbGVjdGVkRmlsdGVyXSA/IHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdIDogW11cbiAgICBpZiAoc2VsZWN0ZWRBcnJheSAmJiBzZWxlY3RlZEFycmF5LmluY2x1ZGVzKGV2ZW50KSkge1xuICAgICAgc2VsZWN0ZWRBcnJheSA9IHNlbGVjdGVkQXJyYXkuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0gIT09IGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0ZWRBcnJheS5wdXNoKGV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJEYXRhQXJyYXlbdGhpcy5zZWxlY3RlZEZpbHRlcl0gPSBzZWxlY3RlZEFycmF5XG4gICAgdGhpcy5pc1Jlc2l6ZWQgPSBzZWxlY3RlZEFycmF5Py5sZW5ndGggPiAwXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCAhPT0gdGhpcy50b3RhbFJlY29yZHMgJiYgdGhpcy5jb25maWdQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICAgIHRoaXMucGFnZVNpemUgPSAxMFxuICAgICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiBOdW1iZXIodGhpcy5wYWdlSW5kZXgpIH0sIHRhYmxlU2VhcmNoOiB7IGZpZWxkczogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB2YWx1ZTogdGhpcy5zZWFyY2hCb3hWYWx1ZSB9LCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlclJldGFpbih0aGlzLmZpbHRlckRhdGFBcnJheSlcbiAgICB9XG4gICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlUGFyYW1zRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCB9LHRhYmxlU2VhcmNoOiB0aGlzLnNlYXJjaEJveFZhbHVlLCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fX0pXG4gIH1cblxuICAvLyBTS1MxNUZFQjI1ICBhY3Rpb24gY29sdW1uIGRyb3Bkb3duIGJ1dHRvbnMgY2xvc2VcbiAgcHJpdmF0ZSBhZGRDbGlja091dHNpZGVMaXN0ZW5lcigpIHtcbiAgICBpZiAoIXRoaXMuY2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50T3BlbkluZGV4ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy9TS1MxNUZFQjI1IGlmIGNsb3NlIHRoZSBkcm9wZG93biBtZW51IHN0b3AgdGhlIGNsaWNrIGxpc3RlbmVyXG4gIHByaXZhdGUgcmVtb3ZlQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSAgYWN0aW9uIGNvbHVtbiBkcm9wZG93biBidXR0b25zIG9wZW4gLyBjbG9zZVxuICB0b2dnbGVEcm9wZG93bihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50T3BlbkluZGV4ID0gdGhpcy5jdXJyZW50T3BlbkluZGV4ID09PSBpbmRleCA/IG51bGwgOiBpbmRleDtcbiAgICB0aGlzLmFkZENsaWNrT3V0c2lkZUxpc3RlbmVyKCk7XG4gIH1cblxuICAvL1NLUzE1RkVCMjUgYWN0aW9uIGJ1dHRvbiBldm50IGVtaXRcbiAgYWN0aW9uQnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbkVtaXQuZW1pdCh7IGV2ZW50LCBkYXRhIH0pXG4gIH1cblxuICByZW1vdmVDb2woY29sdW1uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gbnVsbDtcbiAgICAvLyBFbWl0IGRlc2VsZWN0aW9uXG4gICAgaWYgKCF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIC8vIEV4aXN0aW5nIHNvcnQvZmlsdGVyIGxvZ2ljXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uRGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLm1hcChyb3cgPT4gKHtcbiAgICAgIHZhbHVlOiByb3dbY29sdW1uXSxcbiAgICAgIGlkOiByb3cuaWQgLy8gb3IgdW5pcXVlIGlkZW50aWZpZXJcbiAgICB9KSk7XG4gICAgdGhpcy5yZW1vdmVDb2x1bW4uZW1pdCh7IGNvbHVtbiwgZGF0YTogY29sdW1uRGF0YSB9KTtcblxuICB9XG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodXBkYXRlZFRhYmxlRGF0YSk7XG4gIH1cblxuICB1cGRhdGVFZGl0KGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIGVsZW1lbnQ6IGFueSwgY29sdW1uOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkRWxlbWVudCA9IHRoaXMudXBkYXRlVmFsdWUoZWxlbWVudCwgY29sdW1uLCB2YWx1ZSk7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGFbaW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG5cbiAgICAvLyBTS1MyME1BUjI1IEVuc3VyZSB0aGlzLmRhdGEgaXMgdXBkYXRlZCBzaW5jZSBzdW1tYXJ5IHVzZXMgdGhlIGZ1bGwgZGF0YXNldFxuICAgIGNvbnN0IGRhdGFJbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbSA9PT0gZWxlbWVudCk7XG4gICAgaWYgKGRhdGFJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZGF0YVtkYXRhSW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIFJlY29tcHV0ZSBzdW1tYXJ5IGNvbHVtbnMgZm9yIHRoZSB1cGRhdGVkIHJvd1xuICAgIGlmICh0aGlzLnN1bW1hcnlDb2x1bW5zICYmIHRoaXMuc3VtbWFyeUNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zdW1tYXJ5Q29sdW1ucy5mb3JFYWNoKHN1bW1hcnlDb2wgPT4ge1xuICAgICAgICBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmFuZHMgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdzdW0nKSB7XG4gICAgICAgICAgICB1cGRhdGVkRWxlbWVudFtzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgb3BlcmFuZCkgPT4gYWNjICsgKE51bWJlcih1cGRhdGVkRWxlbWVudFtvcGVyYW5kXSkgfHwgMCksXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5Jykge1xuICAgICAgICAgICAgdXBkYXRlZEVsZW1lbnRbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2MsIG9wZXJhbmQpID0+IGFjYyAqIChOdW1iZXIodXBkYXRlZEVsZW1lbnRbb3BlcmFuZF0pIHx8IDApLCAgLy8gU3RhcnQgd2l0aCAxIGluc3RlYWQgb2YgMFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdzdWJ0cmFjdCcpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRFbGVtZW50W3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bW1hcnlDb2wub3BlcmFuZHMuc2xpY2UoMSkucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBvcGVyYW5kKSA9PiBhY2MgLSAoTnVtYmVyKHVwZGF0ZWRFbGVtZW50W29wZXJhbmRdKSB8fCAwKSxcbiAgICAgICAgICAgICAgTnVtYmVyKHVwZGF0ZWRFbGVtZW50W3N1bW1hcnlDb2wub3BlcmFuZHNbMF1dKSB8fCAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YVtpbmRleF0gPSB1cGRhdGVkRWxlbWVudDtcbiAgICAgIGlmIChkYXRhSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuZGF0YVtkYXRhSW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZyb20gPT09ICdmb3JtQnVpbGRlcicpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhW2luZGV4XSA9IHRoaXMudXBkYXRlVmFsdWUoZWxlbWVudCwgY29sdW1uLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY29tcHV0ZVN1bW1hcnlWYWx1ZXMoKTtcbiAgfVxuICAvLyBTS1MxOE1BUjI1IHVwZGF0ZSBlbGVtZW50XG4gIHVwZGF0ZVZhbHVlKGVsZW1lbnQ6IGFueSwgY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgZmxkcyA9IGNvbHVtbj8uc3BsaXQoJy4nKTtcbiAgICBsZXQgb2JqID0gZWxlbWVudDsgLy8gS2VlcCByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIG9iamVjdFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbGRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgbGV0IHNwbGl0RmxkcyA9IGZsZHNbaV0uc3BsaXQoJ1snKTtcbiAgICAgIGlmIChzcGxpdEZsZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIG9iaiA9IG9ialtmbGRzW2ldXSB8fCAob2JqW2ZsZHNbaV1dID0ge30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGluZGV4ID0gTnVtYmVyKHNwbGl0Rmxkc1sxXS5zcGxpdCgnXScpWzBdKTtcbiAgICAgICAgb2JqID0gb2JqW3NwbGl0Rmxkc1swXV0gfHwgKG9ialtzcGxpdEZsZHNbMF1dID0gW10pO1xuICAgICAgICBvYmogPSBvYmpbaW5kZXhdIHx8IChvYmpbaW5kZXhdID0ge30pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZmluYWwgcHJvcGVydHlcbiAgICBsZXQgbGFzdEtleSA9IGZsZHNbZmxkcy5sZW5ndGggLSAxXTtcbiAgICBsZXQgc3BsaXRMYXN0S2V5ID0gbGFzdEtleS5zcGxpdCgnWycpO1xuICAgIGlmIChzcGxpdExhc3RLZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICBvYmpbbGFzdEtleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4ID0gTnVtYmVyKHNwbGl0TGFzdEtleVsxXS5zcGxpdCgnXScpWzBdKTtcbiAgICAgIG9ialtzcGxpdExhc3RLZXlbMF1dW2luZGV4XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZXhwZW5zZUF0dGFjaG1lbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChldmVudClcbiAgfVxuICBsaXN0Vmlld0VtaXQoZXZlbnQpe1xuICAgIGlmKGV2ZW50LmFjdGlvbiA9PT0gJ2ZpbHRlckdldCcpe1xuICAgICAgZXZlbnRbJ2RhdGEnXT0gdGhpcy5maWx0ZXJDb2x1bW5zXG4gICAgICBpZighdGhpcy50YWJsZUZpbHRlckRhdGEgfHwgdGhpcy50YWJsZUZpbHRlckRhdGEubGVuZ3RoID09PSAwKXtcbiAgICAgICAgdGhpcy5OeHRUYWJsZUZpbHRlckVtaXQuZW1pdChldmVudClcbiAgICAgIH1cbiAgICB9IGVsc2V7IFxuICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ3NlbGVjdCcgfHwgZXZlbnQuYWN0aW9uID09PSAnc2F2ZScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBldmVudC5kYXRhLmZpbHRlck5hbWU7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgPSBldmVudC5kYXRhO1xuICAgICAgICB0aGlzLm5nT25DaGFuZ2VzKHt9KVxuICAgICAgfVxuICAgICAgdGhpcy5OeHRUYWJsZUZpbHRlckVtaXQuZW1pdChldmVudClcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1sYXlvdXRcIiBbaWRdPVwidGFibGVJZFwiIFtuZ1N0eWxlXT1cInsncGFkZGluZy10b3AnOiAnMXB4JywgJ3dpZHRoJzogdGFibGVXaWR0aH1cIiBbZGlyXT1cImRpcmVjdGlvblwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdGFibGUtdGl0bGUgYWxpZ24tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7dGl0bGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTm9zSW5kaWNhdG9yIHx8IHNlYXJjaEJhciB8fCBpc0J1dHRvbnNcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAyMHB4O1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8IS0tIFNLUzI2QVBSMjUgTGlzdCBWaWV3IEZpbHRlciAtLT5cbiAgICAgICAgICAgICAgICA8YXBwLWxpc3Qtdmlldy1maWx0ZXIgKm5nSWY9XCJsaXN0Vmlld3MgJiYgbGlzdFZpZXdzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICBbbGlzdFZpZXdzXT1cImxpc3RWaWV3c1wiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZpZXddPVwic2VsZWN0ZWRWaWV3XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdID0gJ2NvbHVtbnMnXG4gICAgICAgICAgICAgICAgICAgIFt0YWJsZUZpbHRlckFycmF5XT1cInRhYmxlRmlsdGVyQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAobGlzdFZpZXdFbWl0KT1cImxpc3RWaWV3RW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtbGlzdC12aWV3LWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKCFsaXN0Vmlld3MgfHwgbGlzdFZpZXdzLmxlbmd0aCA9PT0gMCkgJiYgaXNOb3NJbmRpY2F0b3JcIiBjbGFzcz1cIm5vT2ZSZWNcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJmb250LXdlaWdodDogNTAwOyBtYXJnaW4tcmlnaHQ6IDVweDsgbWFyZ2luLWJvdHRvbTogMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTm9zIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImNvbG9yOiByZ2IoNDMsIDg3LCAyNDkpO1wiPnt7dG90YWxSZWNvcmRzIHx8IHRvdGFsQ291bnR9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hCYXJcIiBjbGFzcz1cInNlYXJjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBzZWFyY2gtYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjY0MTMgMTkuMjVDMTYuNjMyMiAxOS4yNSAyMC42NzgxIDE1LjM1MTEgMjAuNjc4MSAxMC41NDE3QzIwLjY3ODEgNS43MzIxOCAxNi42MzIyIDEuODMzMzMgMTEuNjQxMyAxLjgzMzMzQzYuNjUwNCAxLjgzMzMzIDIuNjA0NDkgNS43MzIxOCAyLjYwNDQ5IDEwLjU0MTdDMi42MDQ0OSAxNS4zNTExIDYuNjUwNCAxOS4yNSAxMS42NDEzIDE5LjI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM3ODc0ODZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuNjI5NSAyMC4xNjY3TDE5LjcyNzEgMTguMzMzM1wiIHN0cm9rZT1cIiM3ODc0ODZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaENvbmZpZ3MgPyBlbXB0eVNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKSA6IGFwcGx5RmlsdGVyKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoQm94VmFsdWUgfHwgJydcIiAjaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VhcmNoQ29uZmlncyAmJiBzZWFyY2hCYXJcIiBjbGFzcz1cImNvbmZpZ1NlYXJjaFwiIChjbGljayk9XCJvblNlYXJjaChpbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDVIMjBcIiBzdHJva2U9XCIjZmZmZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDhIMTdcIiBzdHJva2U9XCIjZmZmZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDExLjVDMjEgMTYuNzUgMTYuNzUgMjEgMTEuNSAyMUM2LjI1IDIxIDIgMTYuNzUgMiAxMS41QzIgNi4yNSA2LjI1IDIgMTEuNSAyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI2ZmZmZmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMiAyMkwyMCAyMFwiIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cImlzQnV0dG9uc1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA3cHg7IGdhcDogN3B4O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxueHQtYnV0dG9uIGNsYXNzPVwiZGF0YS10YWJsZS1mc2J0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrRW1pdCk9XCIoYnV0dG9uLnR5cGUgPT09ICdncm91cCcgfHwgYnV0dG9uLnR5cGUgPT09ICdkcm9wZG93bicpID8gY29tbW9uQnV0dG9uQ2xpY2soJGV2ZW50KSA6IGNvbW1vbkJ1dHRvbkNsaWNrKGJ1dHRvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cImJ1dHRvbi5jbGFzc1wiIFtidXR0b25WYWx1ZV09XCJidXR0b24ubmFtZVwiIFtidXR0b25Db25maWddPVwiYnV0dG9uLmJ1dHRvbkNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIiBjbGFzcz1cIm1zLTIgbWUtMlwiIFtidG5JY29uTGVmdFNyY109XCJidXR0b24uYnRuSWNvbkxlZnRTcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ltYWdlU3ZnXT1cImJ1dHRvbi5pc0ltYWdlU3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L254dC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1tYXJnaW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaXNQYWdpbmF0aW9uID8gJzQ1MHB4JyA6ICdhdXRvJyB9XCIgI3RhYmxlQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCh0YWJsZUNvbnRhaW5lcilcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBUYWJsZSBIZWFkZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCIgW25nQ2xhc3NdPVwieyAnc2hhZG93JzogaXNTY3JvbGxlZCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aXRoQ2hlY2tCb3hcIiBjbGFzcz1cInRhYmxlLWNlbGwgc3RpY2t5LWNvbHVtbiBoZWFkLWNvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwibWFzdGVyVG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbj8uaGFzVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uPy5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IERhdGEgQ29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY2VsbCB0YWJsZUhlYWRlciBoZWFkLWNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktY29sdW1uXT1cImkgPT09IChzdGlja3lDb25kaXRpb24gLSAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlLWNvbHVtbl09XCJhY3RpdmVDb2x1bW4gPT09IGNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY29sdW1uXT1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSBjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25Db2x1bW5DbGljayhjb2x1bW4pOyBjdXJyZW50U29ydENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKSA/IHNvcnREYXRhKGNvbHVtbikgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlcmVkQ29sdW1uID0gY29sdW1uXCIgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZENvbHVtbiA9IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5EaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZCBjbG9zZSBidXR0b24gZm9yIHNlbGVjdGVkIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSBjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1jb2x1bW4tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUNvbChjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinJVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY3VycmVudEhlYWRlckxhYmVsc1tjdXJyZW50RGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbildXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjdXJyZW50SGVhZGVyTGFiZWxzW2N1cnJlbnREaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uKV0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImN1cnJlbnRGaWx0ZXJDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbilcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBmaWx0ZXIoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAycHg7XCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC43NSAxLjI1SDAuNzVMNC43NSA1LjcxNzIyVjguODA1NTZMNi43NSA5Ljc1VjUuNzE3MjJMMTAuNzUgMS4yNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMjQyNTMzXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBSZWQgZG90IGZvciBhY3RpdmUgZmlsdGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJEYXRhQXJyYXkgJiYgZmlsdGVyRGF0YUFycmF5W2NvbHVtbl0/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeD1cIjlcIiBjeT1cIjJcIiByPVwiMi41XCIgZmlsbD1cInJlZFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFNvcnRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbilcIiBjbGFzcz1cInNvcnQtaW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VycmVudFNvcnRDb2x1bW4gPT09IGNvbHVtblwiIGNsYXNzPVwic29ydC1kaXJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gJ+KGkScgOiBjdXJyZW50U29ydERpcmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gJ2Rlc2MnID8gJ+KGkycgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhvdmVyZWRDb2x1bW4gPT09IGNvbHVtbiAmJiBjdXJyZW50U29ydENvbHVtbiAhPT0gY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0LWRpcmVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hGaWx0ZXIgJiYgY29sdW1uID09PSBzZWxlY3RlZEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY29tcG9uZW50IHBvc2l0aW9uLWFic29sdXRlXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnNlYXJjaFwiIFtjbGFzcy5yZXNpemVkXT1cImlzUmVzaXplZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnNlYXJjaC1iYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzZWFyY2hTdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjJcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuNjQxMyAxOS4yNUMxNi42MzIyIDE5LjI1IDIwLjY3ODEgMTUuMzUxMSAyMC42NzgxIDEwLjU0MTdDMjAuNjc4MSA1LjczMjE4IDE2LjYzMjIgMS44MzMzMyAxMS42NDEzIDEuODMzMzNDNi42NTA0IDEuODMzMzMgMi42MDQ0OSA1LjczMjE4IDIuNjA0NDkgMTAuNTQxN0MyLjYwNDQ5IDE1LjM1MTEgNi42NTA0IDE5LjI1IDExLjY0MTMgMTkuMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzc4NzQ4NlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMS42Mjk1IDIwLjE2NjdMMTkuNzI3MSAxOC4zMzMzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzc4NzQ4NlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIndpZHRoLTEwMFwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaGlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc1Jlc2l6ZWRcIiAoY2xpY2spPVwiY2xvc2VmaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xvc2UtaWNvblwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjE2OTk4IDE0LjgzTDE0LjgzIDkuMTcwMDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjgzIDE0LjgzTDkuMTY5OTggOS4xNzAwMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgMjJIMTVDMjAgMjIgMjIgMjAgMjIgMTVWOUMyMiA0IDIwIDIgMTUgMkg5QzQgMiAyIDQgMiA5VjE1QzIgMjAgNCAyMiA5IDIyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGVudFwiIFtzdHlsZV09XCInb3ZlcmZsb3cteTogYXV0bydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlckFycmF5IHwgc2VhcmNoRmlsdGVyIDogc2VhcmNoVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtYi0zIGNoZWNrYm94ZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGRhdGEpXCIgW3ZhbHVlXT1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhXCIgKGNoYW5nZSk9XCJjaGVja2VkRGF0YShkYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTIgbGFiZWwtZGF0YVwiPnt7ZGF0YX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCI+PC9kaXY+IDwhLS1TS1MxNUZFQjI1IGFwcFJvd1Jlc2l6ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgQWN0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbkJ1dHRvbiB8fCBpc0RlbGV0ZVJvdyB8fCBpc0VkaXRSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsIGhlYWQtY29sb3IgYWN0aW9uQ29sIHN0aWNreS1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAxMnB4ICFpbXBvcnRhbnQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbkNvbHVtSGVhZGVyfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgVGFibGUgQm9keSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBkYXRhU291cmNlLmRhdGE7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZUNsaWNrKGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IENoZWNrYm94IENlbGwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aXRoQ2hlY2tCb3hcIiBjbGFzcz1cInRhYmxlLWNlbGwgc3RpY2t5LWNvbHVtbiBib2R5LWNvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlcGFyYXRlUm93U2VsZWN0KHNlbGVjdGlvbi50b2dnbGUoZWxlbWVudCksIGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihlbGVtZW50LmlzUGF5UHJvY2Vzc2VkID09PSB0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBEYXRhIENlbGxzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY3VycmVudERpc3BsYXllZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsIGJvZHktY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwibW9kZSA9PT0gJ2VkaXQnICYmIGlzRWRpdGFibGUgJiYgc2VsZWN0ZWRDb2x1bW4gPT09IGNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaHlwZXJMaW5rQ29sdW1ucz8uaW5jbHVkZXMoY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEYXRlQ29sdW1uKGNvbHVtbik7IGVsc2UgY2hlY2tUaW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvbkNsaWNrSHlwZXJsaW5rKGNvbHVtbixlbGVtZW50LCBjaGVja0h5cGVybGlua0NoZWNrKGNvbHVtbikpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pID8gJyBoeXBlci1saW5rIGNsaWNrYWJsZSAnIDogJyd9fSBlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7cm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4J319OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoJy0nIHwgZ2V0VmFsdWU6IGVsZW1lbnQgOiBjb2x1bW4pIHwgZGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrVGltZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RpbWVDb2x1bW4oY29sdW1uKTsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DbGlja0h5cGVybGluayhjb2x1bW4sZWxlbWVudCwgY2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjaGVja0h5cGVybGlua0NoZWNrKGNvbHVtbikgPyAnIGh5cGVyLWxpbmsgY2xpY2thYmxlICcgOiAnJ319IGVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7cm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4J319OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKCctJyB8IGdldFZhbHVlOiBlbGVtZW50IDogY29sdW1uKSB8IHRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvbkNsaWNrSHlwZXJsaW5rKGNvbHVtbixlbGVtZW50LCBjaGVja0h5cGVybGlua0NoZWNrKGNvbHVtbikpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pID8gJyBoeXBlci1saW5rIGNsaWNrYWJsZSAnIDogJyd9fSBlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7cm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4J319OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnLScgfCBnZXRWYWx1ZTogZWxlbWVudCA6IGNvbHVtbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IHJpZ2h0bmF2IGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9iamVjdENvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtcy0yXCIgKGNsaWNrKT1cIm9uU2lkZU5hdkluZm9DbGljayhlbGVtZW50LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDAwMzMgMTEuODMzNEMyLjc3ODY2IDExLjgzMzQgMC4xNjY5OTIgOS4yMjE3MSAwLjE2Njk5MiA2LjAwMDA4QzAuMTY2OTkyIDIuNzc4NDIgMi43Nzg2NiAwLjE2Njc0OCA2LjAwMDMzIDAuMTY2NzQ4QzkuMjIxOTYgMC4xNjY3NDggMTEuODMzNyAyLjc3ODQyIDExLjgzMzcgNi4wMDAwOEMxMS44MzM3IDkuMjIxNzEgOS4yMjE5NiAxMS44MzM0IDYuMDAwMzMgMTEuODMzNFpNNS40MTY5OSA1LjQxNjc1VjguOTE2NzVINi41ODM2NlY1LjQxNjc1SDUuNDE2OTlaTTUuNDE2OTkgMy4wODM0MVY0LjI1MDA4SDYuNTgzNjZWMy4wODM0MUg1LjQxNjk5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDM0NTU1XCIgZmlsbC1vcGFjaXR5PVwiMC41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdENvbHVtbj8uaW5jbHVkZXMoY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNoZWNrSHlwZXJsaW5rQ2hlY2soY29sdW1uKSAmJiAhZmlsZUNvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7cm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4J319OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RhdGVDb2x1bW4oY29sdW1uKTsgZWxzZSBjaGVja1RpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7IGdldFZhbHVlKGVsZW1lbnQsY29sdW1uKSB8IGRhdGUgfX0gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKCctJyB8IGdldFZhbHVlOiBlbGVtZW50IDogY29sdW1uKSB8IGRhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja1RpbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGltZUNvbHVtbihjb2x1bW4pOyBlbHNlIGRlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyBnZXRWYWx1ZShlbGVtZW50LGNvbHVtbikgfCB0aW1lIH19IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoJy0nIHwgZ2V0VmFsdWU6IGVsZW1lbnQgOiBjb2x1bW4pIHwgdGltZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7IGdldFZhbHVlKGVsZW1lbnQsY29sdW1uKX19IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICctJyB8IGdldFZhbHVlOiBlbGVtZW50IDogY29sdW1uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgcmlnaHRuYXYgY29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9iamVjdENvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXMtMlwiIChjbGljayk9XCJvblNpZGVOYXZJbmZvQ2xpY2soZWxlbWVudCwgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMDAzMyAxMS44MzM0QzIuNzc4NjYgMTEuODMzNCAwLjE2Njk5MiA5LjIyMTcxIDAuMTY2OTkyIDYuMDAwMDhDMC4xNjY5OTIgMi43Nzg0MiAyLjc3ODY2IDAuMTY2NzQ4IDYuMDAwMzMgMC4xNjY3NDhDOS4yMjE5NiAwLjE2Njc0OCAxMS44MzM3IDIuNzc4NDIgMTEuODMzNyA2LjAwMDA4QzExLjgzMzcgOS4yMjE3MSA5LjIyMTk2IDExLjgzMzQgNi4wMDAzMyAxMS44MzM0Wk01LjQxNjk5IDUuNDE2NzVWOC45MTY3NUg2LjU4MzY2VjUuNDE2NzVINS40MTY5OVpNNS40MTY5OSAzLjA4MzQxVjQuMjUwMDhINi41ODM2NlYzLjA4MzQxSDUuNDE2OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDM0NTU1XCIgZmlsbC1vcGFjaXR5PVwiMC41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTS1MxOE1BUjI1IGZpbGUgY29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsZUNvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvcG92ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG92ZXItYmFzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNCAxNlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMyA3Ljc4NTI1TDcuMDQ4NTkgMTMuNzYwMkM2LjgxNzY3IDEzLjk5NDUgNi41NDIxNyAxNC4xODA1IDYuMjM4MTkgMTQuMzA3NkM1LjkzNDIgMTQuNDM0NiA1LjYwNzg0IDE0LjUgNS4yNzgxNyAxNC41QzQuOTQ4NDkgMTQuNSA0LjYyMjEzIDE0LjQzNDYgNC4zMTgxNCAxNC4zMDc2QzQuMDE0MTYgMTQuMTgwNSAzLjczODY2IDEzLjk5NDUgMy41MDc3NCAxMy43NjAyTDEuNzI3MzIgMTEuOTU3OEMxLjI2MTI0IDExLjQ4NjQgMSAxMC44NTE2IDEgMTAuMTkwMkMxIDkuNTI4NzYgMS4yNjEyNCA4Ljg5Mzg4IDEuNzI3MzIgOC40MjI1N0w4LjA2ODgzIDIuMDg5MTNDOC4yNTQ4IDEuOTAyNDUgOC40NzYwNSAxLjc1NDI5IDguNzE5ODMgMS42NTMxN0M4Ljk2MzYxIDEuNTUyMDYgOS4yMjUwOCAxLjUgOS40ODkxNyAxLjVDOS43NTMyNSAxLjUgMTAuMDE0NyAxLjU1MjA2IDEwLjI1ODUgMS42NTMxN0MxMC41MDIzIDEuNzU0MjkgMTAuNzIzNSAxLjkwMjQ1IDEwLjkwOTUgMi4wODkxM0wxMS42MTk3IDIuNzk2MTZDMTEuODA3MiAyLjk4MTMxIDExLjk1NiAzLjIwMTU5IDEyLjA1NzYgMy40NDQyOUMxMi4xNTkxIDMuNjg2OTkgMTIuMjExNCAzLjk0NzMxIDEyLjIxMTQgNC4yMTAyM0MxMi4yMTE0IDQuNDczMTYgMTIuMTU5MSA0LjczMzQ4IDEyLjA1NzYgNC45NzYxOEMxMS45NTYgNS4yMTg4OCAxMS44MDcyIDUuNDM5MTYgMTEuNjE5NyA1LjYyNDMxTDUuOTk4MzQgMTEuMjQwOEM1LjkwNTM1IDExLjMzNDEgNS43OTQ3MiAxMS40MDgyIDUuNjcyODQgMTEuNDU4N0M1LjU1MDk1IDExLjUwOTMgNS40MjAyMSAxMS41MzUzIDUuMjg4MTcgMTEuNTM1M0M1LjE1NjEyIDExLjUzNTMgNS4wMjUzOSAxMS41MDkzIDQuOTAzNSAxMS40NTg3QzQuNzgxNjEgMTEuNDA4MiA0LjY3MDk4IDExLjMzNDEgNC41NzggMTEuMjQwOEw0LjIyNzkxIDEwLjg4MjNDNC4xMzQxNiAxMC43ODk3IDQuMDU5NzUgMTAuNjc5NSA0LjAwODk3IDEwLjU1ODJDMy45NTgxOSAxMC40MzY4IDMuOTMyMDUgMTAuMzA2NyAzLjkzMjA1IDEwLjE3NTJDMy45MzIwNSAxMC4wNDM4IDMuOTU4MTkgOS45MTM2MSA0LjAwODk3IDkuNzkyMjZDNC4wNTk3NSA5LjY3MDkxIDQuMTM0MTYgOS41NjA3NyA0LjIyNzkxIDkuNDY4MTlMNy45OTg4MSA1Ljc0MzgxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0MzQ1NTVcIiBzdHJva2Utd2lkdGg9XCIxLjNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBvcG92ZXIgQ29udGVudCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Zlci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGVuc2VDb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBlbGVtZW50W2NvbHVtbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBleHBlbnNlLWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBlbnNlQXR0YWNobWVudChkYXRhPy5maWxlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LmZpbGVOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBhZGRlZCBpbnB1dCBib3ggZm9yIGlubGluZSBlZGl0IGlucHV0LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRDb2x1bW4gJiYgZWRpdENvbHVtbi5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIgKCctJyB8IGVkaXRDb2x1bW5DaGVjazogY29sdW1uIDogZWRpdENvbHVtbikgPT09ICgnc3RyaW5nJykgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib24tZWRpdCBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAjZWRpdENvbEVsZW1lbnQgY2xhc3M9XCJueHQtbG9wLWlucHV0IHRhYmxlLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToge3sgcm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4JyB9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZWxlbWVudC5lZGl0Um93ID8gJ2lucHV0LWJveCcgOiAnJyBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdFbnRlcicgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VmFsdWUoZWxlbWVudCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVFZGl0KGksJGV2ZW50LCBlbGVtZW50LGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJlbGVtZW50LmVkaXRSb3cgPyBmYWxzZSA6IHRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IEluIHRhYmxlLCBsaWtlIHRleHQgaW5wdXQsIGFkZGVkIGRyb3AgZG93biBhbmQgdGltZSBpbnB1dHMgYXMgd2VsbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiAoJy0nIHwgZWRpdENvbHVtbkNoZWNrOiBjb2x1bW4gOiBlZGl0Q29sdW1uKSA9PT0gKCdvYmplY3QnKSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvbi1lZGl0IGQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIgKCctJyB8IGVkaXRDb2x1bW5UeXBlOiBjb2x1bW4gOiBlZGl0Q29sdW1uKSA9PT0gKCd0ZXh0JykgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZWRpdENvbEVsZW1lbnQgY2xhc3M9XCJueHQtbG9wLWlucHV0IHRhYmxlLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToge3sgcm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4JyB9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZWxlbWVudC5lZGl0Um93ID8gJ2lucHV0LWJveCcgOiAnJyBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdFbnRlcicgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VmFsdWUoZWxlbWVudCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVFZGl0KGksJGV2ZW50LGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImVsZW1lbnQuZWRpdFJvdyA/IGZhbHNlIDogdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIgKCctJyB8IGVkaXRDb2x1bW5UeXBlOiBjb2x1bW4gOiBlZGl0Q29sdW1uKSA9PT0gKCd0aW1lJykgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGltZVwiIGNsYXNzPVwibnh0LWxvcC1pbnB1dCB0YWJsZS13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VmFsdWUoZWxlbWVudCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZWxlbWVudC5lZGl0Um93ID8gJ2lucHV0LWJveCcgOiAnJyBcIiBwbGFjZWhvbGRlcj1cIkhIOm1tOnNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVFZGl0KGksJGV2ZW50LGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVsZW1lbnQuZWRpdFJvdyA/IGZhbHNlIDogdHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIgKCctJyB8IGVkaXRDb2x1bW5UeXBlOiBjb2x1bW4gOiBlZGl0Q29sdW1uKSA9PT0gKCdkcm9wZG93bicpIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgdHlwZT1cImRyb3Bkb3duXCIgKm5nSWY9XCJlbGVtZW50LmVkaXRSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm54dC1sb3AtaW5wdXQgdGFibGUtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToge3sgcm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4JyB9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdpbnB1dC1ib3gnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRWRpdChpLCRldmVudCxlbGVtZW50LGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbZGlzYWJsZWRdPVwiZWxlbWVudC5lZGl0Um93ID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIFtdIHwgZWRpdENvbHVtbkRyb3Bkb3duOiBjb2x1bW4gOiBlZGl0Q29sdW1uIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJkYXRhLnZhbHVlIHx8IGRhdGEubmFtZVwiPnt7ZGF0YS5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhZWxlbWVudC5lZGl0Um93XCIgI2VkaXRDb2xFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibnh0LWxvcC1pbnB1dCB0YWJsZS13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7eyByb3dUZXh0U2l6ZSA/IHJvd1RleHRTaXplIDogJzEzcHgnIH19OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZWxlbWVudC5lZGl0Um93ID8gJ2lucHV0LWJveCcgOiAnJyBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJlbGVtZW50LmVkaXRSb3cgPyAnRW50ZXInIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRWYWx1ZShlbGVtZW50LGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVFZGl0KGksJGV2ZW50LGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbkJ1dHRvbiB8fCBpc0RlbGV0ZVJvdyB8fCBpc0VkaXRSb3dcIiBjbGFzcz1cInRhYmxlLWNlbGwgYWN0aW9uQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uQnV0dG9uXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgRWRpdCBCdXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRWRpdFJvd1wiIGNsYXNzPVwiZWljb24tY29udGFpbmVyXCIgbWF0VG9vbHRpcD1cIkVkaXQgUmVjb3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAycHg7IGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGM7IGJvcmRlci1yYWRpdXM6IDVweDsgbWFyZ2luLWxlZnQ6IDNweDsgbWFyZ2luLXJpZ2h0OiAzcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZWRpdC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMnB4IDRweDsgYm9yZGVyLXJhZGl1czogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwib25FZGl0KGVsZW1lbnQpXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xMDY3IDYuMDcxNzRMOS45MjgzMyA0Ljg5MzRMMi4xNjY2NyAxMi42NTUxVjEzLjgzMzRIMy4zNDVMMTEuMTA2NyA2LjA3MTc0Wk0xMi4yODUgNC44OTM0TDEzLjQ2MzMgMy43MTUwN0wxMi4yODUgMi41MzY3NEwxMS4xMDY3IDMuNzE1MDdMMTIuMjg1IDQuODkzNFpNNC4wMzUgMTUuNTAwMUgwLjVWMTEuOTY0MkwxMS42OTU4IDAuNzY4NDAzQzExLjg1MjEgMC42MTIxNzcgMTIuMDY0IDAuNTI0NDE0IDEyLjI4NSAwLjUyNDQxNEMxMi41MDYgMC41MjQ0MTQgMTIuNzE3OSAwLjYxMjE3NyAxMi44NzQyIDAuNzY4NDAzTDE1LjIzMTcgMy4xMjU5QzE1LjM4NzkgMy4yODIxOCAxNS40NzU3IDMuNDk0MSAxNS40NzU3IDMuNzE1MDdDMTUuNDc1NyAzLjkzNjA0IDE1LjM4NzkgNC4xNDc5NiAxNS4yMzE3IDQuMzA0MjRMNC4wMzU4MyAxNS41MDAxSDQuMDM1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNkM3NTdEXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgRGVsZXRlIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNEZWxldGVSb3dcIiBjbGFzcz1cImRpY29uLWNvbnRhaW5lclwiIG1hdFRvb2x0aXA9XCJEZWxldGUgUmVjb3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAycHg7IGJvcmRlcjogMXB4IHNvbGlkICNmZmI1YjU7IGJvcmRlci1yYWRpdXM6IDVweDsgbWFyZ2luLWxlZnQ6IDNweDsgbWFyZ2luLXJpZ2h0OiAzcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDJweCA0cHg7IGJvcmRlci1yYWRpdXM6IDVweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZWVlZDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImRlbGV0ZVJlY29yZChlbGVtZW50LGkpXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNCAzLjk4NzI2QzExLjc4IDMuNzY3MjYgOS41NDY2NyAzLjY1MzkzIDcuMzIgMy42NTM5M0M2IDMuNjUzOTMgNC42OCAzLjcyMDYgMy4zNiAzLjg1MzkzTDIgMy45ODcyNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS42NjY1IDMuMzEzNjJMNS44MTMxNyAyLjQ0MDI4QzUuOTE5ODQgMS44MDY5NSA1Ljk5OTg0IDEuMzMzNjIgNy4xMjY1IDEuMzMzNjJIOC44NzMxN0M5Ljk5OTg0IDEuMzMzNjIgMTAuMDg2NSAxLjgzMzYyIDEwLjE4NjUgMi40NDY5NUwxMC4zMzMyIDMuMzEzNjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjU2NjcgNi4wOTM3NUwxMi4xMzM0IDEyLjgwNzFDMTIuMDYgMTMuODUzNyAxMiAxNC42NjcxIDEwLjE0IDE0LjY2NzFINS44NjAwMkM0LjAwMDAyIDE0LjY2NzEgMy45NDAwMiAxMy44NTM3IDMuODY2NjggMTIuODA3MUwzLjQzMzM1IDYuMDkzNzVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuODg2NDcgMTEuMDAwNEg5LjEwNjQ3XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjMzMzUgOC4zMzMyNUg5LjY2NjgzXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBSZW5kZXIgaW5saW5lIGJ1dHRvbnMgdXAgdG8gU2l6ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpIDwgYWN0aW9uQnV0dG9uQXJyYXk/LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgbWFyZ2luLWxlZnQ6IDNweDsgbWFyZ2luLXJpZ2h0OiAzcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNDb25kaXRpb25NZXQoZWxlbWVudCwgYnV0dG9uLmNvbmRpdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09YnV0dG9uLnRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b24sZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIiRldmVudC50YXJnZXQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAnICsgYnV0dG9uLmhvdmVyQm9yZGVyQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIiRldmVudC50YXJnZXQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAnICsgYnV0dG9uLmJvcmRlckNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDJweDsgYm9yZGVyLXJhZGl1czoge3tidXR0b24uYm9yZGVyUmFkaXVzfX1weDsgIGJvcmRlcjogMXB4IHNvbGlkIHt7YnV0dG9uLmJvcmRlckNvbG9yfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAobW91c2VlbnRlcik9XCIkZXZlbnQudGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJ1dHRvbi5ob3ZlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIiRldmVudC50YXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYnV0dG9uLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzoge3tidXR0b24ucGFkZGluZ319cHgge3tidXR0b24ucGFkZGluZyArIDJ9fXB4OyBib3JkZXItcmFkaXVzOiB7e2J1dHRvbi5ib3JkZXJSYWRpdXN9fXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB7e2J1dHRvbi5iYWNrZ3JvdW5kQ29sb3J9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImJ1dHRvbi5pY29uU3JjXCIgI2ltZ0VsZW1lbnQgW3NyY109XCJidXR0b24uaWNvblNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJpbWdFbGVtZW50LnNyYyA9IGJ1dHRvbi5ob3Zlckljb25TcmMgfHwgYnV0dG9uLmljb25TcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaW1nRWxlbWVudC5zcmMgPSBidXR0b24uaWNvblNyY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wZG93bkFjdGlvbkJ1dHRvbiAmJiBkcm9wZG93bkFjdGlvbkJ1dHRvbi5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2thYmxlLWltZ1wiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIiBtYXJnaW4tbGVmdDogM3B4OyBtYXJnaW4tcmlnaHQ6IDNweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7IHBhZGRpbmc6IDJweCA0cHg7IGJvcmRlci1yYWRpdXM6IDVweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsgYm9yZGVyLXJhZGl1czogNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjNmM3NTdkO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuOTk5OSAyNS42NjY3QzIzLjY4MTggMjUuNjY2NyAyNi42NjY2IDIyLjY4MTkgMjYuNjY2NiAxOUMyNi42NjY2IDE1LjMxODEgMjMuNjgxOCAxMi4zMzM0IDE5Ljk5OTkgMTIuMzMzNEMxNi4zMTggMTIuMzMzNCAxMy4zMzMzIDE1LjMxODEgMTMuMzMzMyAxOUMxMy4zMzMzIDIyLjY4MTkgMTYuMzE4IDI1LjY2NjcgMTkuOTk5OSAyNS42NjY3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzI5MkQzMlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjY0NjcgMTguMTZMMjAuMDAwMSAyMC41MDY3TDIyLjM1MzQgMTguMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUucmlnaHRdPVwiKChhY3Rpb25CdXR0b25BcnJheT8uc2l6ZSA/PyAwKSAtIChhY3Rpb25CdXR0b25BcnJheT8uYnV0dG9uQXJyYXk/LnNpemUgPz8gMCkgKyAoaXNFZGl0Um93ID8gMSA6IDApICsgKGlzRGVsZXRlUm93ID8gMSA6IDApICsgKGRyb3Bkb3duQWN0aW9uQnV0dG9uPy5sZW5ndGggPiAwID8gMSA6IDApKSAqIDEwMCArICclJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuSW5kZXggPT09IGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ0biBvZiBkcm9wZG93bkFjdGlvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc0NvbmRpdGlvbk1ldChlbGVtZW50LCBidG4uY29uZGl0aW9ucylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cImVsZW1lbnQuaWRcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIHt7YnRuLmJ1dHRvblR5cGV9fSB0b29sdGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1idG4udG9vbHRpcCBbZGlzYWJsZWRdPVwiYnRuLmJ1dHRvbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQnV0dG9uQ2xpY2tlZChidG4sZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImJ0bi5pY29uU3JjXCIgW3NyY109XCJidG4uaWNvblNyY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmMtYnRuLXRleHRcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnRuLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMjBNQVIyNSBTdW1tYXJ5IFJvd3MgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdW1tYXJ5Um93cyAmJiBzdW1tYXJ5Um93cy5sZW5ndGggPiAwICYmIGRhdGFTb3VyY2UuZGF0YSAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPiAwICYmICFpc0xvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdWxsVGFibGVTdW1tYXJ5Um93ICYmIGlzU3VtbWFyeUNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc3VtbWFyeVJvd3NcIiBjbGFzcz1cInRhYmxlLXJvdyBzdW1tYXJ5LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbCBpbiB0aGUgZmlyc3QgY29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIndpdGhDaGVja0JveFwiIGNsYXNzPVwibm9uLXN1bW1hcnktdGFibGUtY2VsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbXB0eSBjZWxscyB0byBhbGlnbiB3aXRoIGRhdGEgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbCBvZiBpc1N1bW1hcnlTdGFydENvbHVtbjsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vbi1zdW1tYXJ5LXRhYmxlLWNlbGxcIiBbY2xhc3MubGFzdC1jZWxsXT1cImxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZhbHVlIG9yIGlucHV0IGluIHRoZSBsYXN0IGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LXRhYmxlLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSByb3cuZmllbGROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvbkNvbHVtbkNsaWNrKHJvdy5maWVsZE5hbWUpXCI+e3sgcm93LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LXRhYmxlLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSByb3cuZmllbGROYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy50eXBlID09PSAnY2FsY3VsYXRpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIGNsb3NlIGJ1dHRvbiBmb3Igc2VsZWN0ZWQgY29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnICYmIGlzRWRpdGFibGUgJiYgc2VsZWN0ZWRDb2x1bW4gPT09IHJvdy5maWVsZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1jb2x1bW4tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUNvbChyb3cuZmllbGROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdIHwgbnVtYmVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy50eXBlID09PSAnaW5wdXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJzdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3VtbWFyeUlucHV0Q2hhbmdlKClcIiBjbGFzcz1cIm54dC1sb3AtaW5wdXQgdGFibGUtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNLUzIwTUFSMjUgRW1wdHkgY2VsbHMgdG8gYWxpZ24gd2l0aCBkYXRhIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2YgaXNTdW1tYXJ5RW5kQ29sdW1uOyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9uLXN1bW1hcnktdGFibGUtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aW9uQnV0dG9uIHx8IGlzRGVsZXRlUm93IHx8IGlzRWRpdFJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub24tc3VtbWFyeS10YWJsZS1jZWxsIGFjdGlvbkNvbCBzdGlja3ktY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMTNKVU4yNSBmdWxsIHRhYmxlIHN1bW1hcnkgcm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRnVsbFRhYmxlU3VtbWFyeVJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBzdW1tYXJ5Um93c1wiIGNsYXNzPVwidGFibGUtcm93IHN1bW1hcnktcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNLUzEzSlVOMjUgQ2hlY2tib3ggY29sdW1uIChpZiBlbmFibGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aXRoQ2hlY2tCb3hcIiBjbGFzcz1cImhvcml6b250YWwtc3VtbWFyeS10YWJsZS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTS1MxM0pVTjI1IHN1bW1hcnkgY2VsbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbCBvZiBkaXNwbGF5ZWRDb2x1bW5zOyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXN1bW1hcnktdGFibGUtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocm93Py5jb2x1bW5zPy5pbmNsdWRlcyhjb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdW1tYXJ5VmFsdWVzW2NvbF0gfCBudW1iZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25CdXR0b24gfHwgaXNEZWxldGVSb3cgfHwgaXNFZGl0Um93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXN1bW1hcnktdGFibGUtY2VsbCBhY3Rpb25Db2wgc3RpY2t5LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MyOE1BUjI1IEluIHRoZSBMb2FkaW5nIHNlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXBlYXQgZm9yIDUgc2tlbGV0b24gcm93cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBfIG9mIFsxLDIsMyw0LDVdXCIgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aXRoQ2hlY2tCb3hcIiBjbGFzcz1cInNrZWxldG9uLWNlbGwgc3RpY2t5LWNvbHVtblwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBDb2x1bW5zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2YgY3VycmVudERpc3BsYXllZENvbHVtbnNcIiBjbGFzcz1cInNrZWxldG9uLWNlbGwgXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aW9uQnV0dG9uIHx8IGlzRGVsZXRlUm93IHx8IGlzRWRpdFJvd1wiIGNsYXNzPVwic2tlbGV0b24tY2VsbCBhY3Rpb25Db2xcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgTm8gRGF0YSBSb3cgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YVNvdXJjZS5kYXRhICYmIGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCA9PT0gMCAmJiAhaXNMb2FkaW5nICYmIGZyb20gIT09ICdmb3JtQnVpbGRlcidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJlY29yZHMvZGF0YSBmb3VuZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZGF0YVNvdXJjZS5kYXRhICYmIGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCA9PT0gMCAmJiAhaXNMb2FkaW5nICYmIGZyb20gPT09ICdmb3JtQnVpbGRlcidcIiBjbGFzcz1cImZvcm0tYnVpbGRlci10YWJsZS1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgIC8gZHJhZ3MgZmllbGRzIGZyb20gZWxlbWVudHMgc2VjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IFBhZ2luYXRpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5zaGFkb3ctaGlkZGVuXT1cImlzU2hhZG93SGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPCEtLSB0YWJsZSBpbnB1dCBzYXZlIGJ1dHRvbiBjaGFuZ2VzIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaW5saW5lQWRkIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWRkSWNvbkJvciBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwiYWRkSW5saW5lUmVjb3JkIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGFibGVSZWNvcmQoaW5saW5lRWxlbWVudClcIiBtYXRUb29sdGlwPVwiQWRkIFJlY29yZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibmF2LWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQ0MC0yODBoODB2LTE2MGgxNjB2LTgwSDUyMHYtMTYwaC04MHYxNjBIMjgwdjgwaDE2MHYxNjBabTQwIDIwMHEtODMgMC0xNTYtMzEuNVQxOTctMTk3cS01NC01NC04NS41LTEyN1Q4MC00ODBxMC04MyAzMS41LTE1NlQxOTctNzYzcTU0LTU0IDEyNy04NS41VDQ4MC04ODBxODMgMCAxNTYgMzEuNVQ3NjMtNzYzcTU0IDU0IDg1LjUgMTI3VDg4MC00ODBxMCA4My0zMS41IDE1NlQ3NjMtMTk3cS01NCA1NC0xMjcgODUuNVQ0ODAtODBabTAtODBxMTM0IDAgMjI3LTkzdDkzLTIyN3EwLTEzNC05My0yMjd0LTIyNy05M3EtMTM0IDAtMjI3IDkzdC05MyAyMjdxMCAxMzQgOTMgMjI3dDIyNyA5M1ptMC0zMjBaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgcmVtb3ZlZCBidXR0b24gZGlzYWJsZSBsb2dpYywgYWRkZWQgYW5vdGhlciBjb25kaXRpb24gZm9yIGJ1dHRvbiBzaG93aW5nLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IFNSMDZKQU4yMDI1IGJ1dHRvbiBkaXNhYmxlIGxvZ2ljIGZvciBub3Qgc2VsZWN0IGFueSBlbXBsb3llZS0tPlxuICAgICAgICAgICAgICAgICAgICA8bnh0LWJ1dHRvbiAqbmdJZj1cIihlZGl0Q29sdW1uPy5sZW5ndGggPiAwICB8fCB0YWJsZVNhdmVCdXR0b24pICYmIGZyb20gIT0gJ2Zvcm1CdWlsZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UeXBlPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2J1dHRvbkRpc2FibGVdPVwic2VsZWN0aW9uPy5zZWxlY3RlZD8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja0VtaXQpPVwic2F2ZUJ1dHRvbigpXCIgYnV0dG9uVmFsdWU9XCJTYXZlXCI+PC9ueHQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxueHQtcGFnaW5hdGlvbiAqbmdJZj1cImlzUGFnaW5hdGlvblwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW2NvbGxlY3Rpb25TaXplXT1cImNvbmZpZ1BhZ2luYXRpb24gPyB0b3RhbFJlY29yZHMgfHwgdG90YWxDb3VudCA6IGZpbHRlclRhYmxlTm9zXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW2N1cnJlbnRQYWdlXT1cInBhZ2VJbmRleFwiIFtmaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAoZXZlbnQpPVwicGFnZVBhcmFtcygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9ueHQtcGFnaW5hdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tU0tTMTVGRUIyNSBhbGVydCBvbiBkZWxldGluZyByZWNvcmQgLS0+XG48ZGl2ICpuZ0lmPVwiZGVsZXRlTW9kYWxcIiBjbGFzcz1cIm1vZGFsIG1vZGFsLWJhY2tkcm9wIHNob3cgIGQtYmxvY2tcIiBpZD1cImRlbGV0ZVJlY29yZFwiIHRhYmluZGV4PVwiLTFcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRlbGV0ZVJlY29yZExhYmVsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWRlbGV0ZU1vZGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxiIGNsYXNzPVwibW9kYWwtdGl0bGUgZnMtNVwiIGlkPVwiZGVsZXRlUmVjb3JkTGFiZWxcIj5EZWxldGUgUmVjb3JkPC9iPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlTW9kYWwgPSBmYWxzZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB3YW50IHRvIGRlbGV0ZSB0aGUgcmVjb3JkID9cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVNb2RhbCA9IGZhbHNlXCI+Tm88L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlY29yZERhdGEoKVwiPlllczwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
1567
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQXFELE1BQU0sZUFBZSxDQUFDO0FBQy9KLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQs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VUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0csSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FB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bnQsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE54dEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9ueHQtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOeHRQYWdpbmF0aW9uIH0gZnJvbSAnLi4vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hGaWx0ZXJQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS9zZWFyY2gtZmlsdGVyL3NlYXJjaC1maWx0ZXIucGlwZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvZGF0ZS9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgVGltZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlL3RpbWUvdGltZS5waXBlJztcbmltcG9ydCB7IEVkaXRDb2x1bW5DaGVja1BpcGUgfSBmcm9tICcuLi8uLi9waXBlL2VkaXRDb2x1bW5DaGVjay9lZGl0LWNvbHVtbi1jaGVjay5waXBlJztcbmltcG9ydCB7IEVkaXRDb2x1bW5Ecm9wZG93blBpcGUgfSBmcm9tICcuLi8uLi9waXBlL2VkaXRDb2x1bW5Ecm9wZG93bi9lZGl0LWNvbHVtbi1kcm9wZG93bi5waXBlJztcbmltcG9ydCB7IEVkaXRDb2x1bW5UeXBlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvZWRpdENvbHVtblR5cGUvZWRpdC1jb2x1bW4tdHlwZS5waXBlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2V0VmFsdWVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS9nZXQtdmFsdWUucGlwZSc7XG5pbXBvcnQgeyBMaXN0Vmlld0ZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xpc3Qtdmlldy1maWx0ZXIvbGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdueHQtZGF0YXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE54dEJ1dHRvbkNvbXBvbmVudCxcbiAgICBOeHRQYWdpbmF0aW9uLFxuICAgIFNlYXJjaEZpbHRlclBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgVGltZVBpcGUsXG4gICAgRWRpdENvbHVtbkNoZWNrUGlwZSxcbiAgICBFZGl0Q29sdW1uRHJvcGRvd25QaXBlLFxuICAgIEVkaXRDb2x1bW5UeXBlUGlwZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEdldFZhbHVlUGlwZSxcbiAgICBMaXN0Vmlld0ZpbHRlckNvbXBvbmVudFxuICAgIC8vIFJvd1Jlc2l6ZXJEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGF0YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTnh0RGF0YXRhYmxlIHtcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTsgIC8vICBnZXQgZGF0YSB0aGF0IHRvIGJlIGRpc3BsYXllZCBpbiBhIGFycmF5XG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyRGF0YTogYW55W10gPSBbXTtcbiAgQElucHV0KCkgY29sdW1uczogQXJyYXk8YW55PiA9IFtdOyAvLyBDb2x1bW5zIGhhdmUgYSBsYWJlbCwgYSBjb2x1bW4gdHlwZSwgYW5kIGZpbHRlciBkZXRhaWxzLlxuICBASW5wdXQoKSB3aXRoQ2hlY2tCb3g6IGJvb2xlYW47ICAvLyBnZXQgaWYgd2l0aCBvciB3aXRob3V0IGNoZWNrYm94IGluIHRhYmxlXG4gIEBJbnB1dCgpIHNlYXJjaEJhcjogYm9vbGVhbjsgLy8gaWYgaXQgaXMgdHJ1ZSwgdGhlIHNlYXJjaCBiYXIgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGFibGVcbiAgQElucHV0KCkgdGFibGVTYXZlQnV0dG9uID0gZmFsc2U7IC8vIHNhdmUgYnV0dG9uIGZvciBlZGl0aW5nIExPUCBpbiBwYXlyb2xsIHRhYmxlLCAgY2hhbmdlZCBuYW1lIGZyb20gJ3NhdmVMT1AnXG4gIEBJbnB1dCgpIHN0aWNreUNvbHVtbiA9IGZhbHNlOyAvLyBpZiB0aGUgbGFzdCBjb2x1bW4gc2hvdWxkIGJlIHN0aWNreSwgaXQgc2hvdWxkIGJlIHNlbnQgYXMgYm9vbGVhbiB2YWx1ZVxuICBASW5wdXQoKSB0YWJsZVdpZHRoID0gJzEwMCUnOyAvLyB3aWR0aCBvZiB0YWJsZSBjYW4gYmUgYWRqdXN0ZWQgZnJvbSBwYXJlbnQsIGJ5IGRlZmF1bHQgaXQgaXMgMTAwJVxuICBASW5wdXQoKSBhY3Rpb25Db2x1bUhlYWRlciA9ICdBY3Rpb24nOyAgLy8gdG8gY2hhbmdlIHRoZSBoZWFkZXIgZm9yIGFjdGlvbiBjb2x1bW5cbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uOiBib29sZWFuOyAgLy90byBzaG93IGJ1dHRvbiBjb2x1bSBhcyBhY3Rpb25cbiAgQElucHV0KCkgdGl0bGU6IGFueTsvLyB0aGUgdGl0bGUgZm9yIHRoZSB0YWJsZTtcbiAgQElucHV0KCkgaXNCdXR0b25zOiBib29sZWFuOy8vIGlzIGJ1dHRvbiBwcmVzZW50IGluIHRhYmxlO1xuICBASW5wdXQoKSBidXR0b25BcnJheTogYW55Oy8vIGJ1dHRvbnMgdG8gYmUgZGlzcGxheWVkO1xuICBASW5wdXQoKSB0YWJsZUlkOiBhbnk7IC8vIGlkIG9mIHRhYmxlXG4gIEBJbnB1dCgpIGlzRWRpdFJvdzogYm9vbGVhbjsgLy8gaWYgaXQgaXMgdHJ1ZSwgdGhlIHJvdyBjYW4gYmUgZWRpdGVkXG4gIEBJbnB1dCgpIGlzRGVsZXRlUm93OiBib29sZWFuOyAvLyBpZiBpdCBpcyB0cnVlLCB0aGUgcm93IGNhbiBiZSBkZWxldGVkXG4gIEBJbnB1dCgpIGFkZElubGluZVJlY29yZDogYm9vbGVhbjsgLy8gaWYgaXQgaXMgdHJ1ZSwgdGhlIHJvdyBjYW4gYmUgYWRkZWQgaW5saW5lXG4gIEBJbnB1dCgpIHNlYXJjaENvbmZpZ3M6IGFueTsgLy8gc2VhcmNoIGNvbmZpZ3VyYXRpb25zXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ3J0bCcgfCAnbHRyJyA9ICdsdHInOyAvLyBkaXJlY3Rpb24gb2YgdGFibGVcbiAgQElucHV0KCkgcGFnaW5hdGlvbjogYW55OyAvLyBwYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb25zXG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbkFycmF5OiBhbnk7IC8vIGFjdGlvbiBidXR0b24gY29uZmlndXJhdGlvbnNcbiAgQElucHV0KCkgbXVsdGlwbGVGaWx0ZXI6IGFueTsgLy8gaWYgcGFnaW5hdGlvbiB0cnVlIHRoZW4gdGhpcyB3aWxsIGJlIHVzZWRcbiAgQElucHV0KCkgaXNQYWdpbmF0aW9uOiBhbnk7IC8vIHBhZ2luYXRpb24gY29uZmlndXJhdGlvbnMgaWYgdHJ1ZSB0aGVuIHBhZ2luYXRpb24gd2lsbCBiZSBlbmFibGVkXG4gIEBJbnB1dCgpIGlzTm9zSW5kaWNhdG9yOiBhbnk7IC8vIGlmIHRydWUgdGhlbiBubyBkYXRhIGluZGljYXRvciB3aWxsIGJlIHNob3duXG4gIEBJbnB1dCgpIGlzRWRpdGFibGU6IGFueTsgLy8gaWYgdHJ1ZSB0aGVuIHRhYmxlIHdpbGwgYmUgZWRpdGFibGVcbiAgQElucHV0KCkgZnJvbTogYW55OyAvLyBmcm9tIGRhdGUgcGFsdGZvcm0gYmFzZWQgaW5pdGlhbGl6ZSBpbnB1dHMgZXg6LSAnZm9ybUJ1aWxkZXInXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBhbnk7IC8vIHF1ZXN0aW9uIGlzIHVzZWQgZm9yIG54dCBmb3JtIGJ1aWxkZXIgdGFibGUgcHJldmlld1xuICBASW5wdXQoKSByb3dUZXh0U2l6ZTogYW55OyAvLyBzaXplIG9mIHJvdyB0ZXh0XG4gIEBJbnB1dCgpIHJvd1RleHRDb2xvcjogYW55OyAvLyBjb2xvciBvZiByb3cgdGV4dFxuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7IC8vIGFwaSBtZXRhIGlzIHVzZWQgZm9yIG54dCBmb3JtIGJ1aWxkZXIgdGFibGUgcHJldmlld1xuICBASW5wdXQoKSBzdW1tYXJ5Um93czogYW55OyAvLyBJbnB1dCBmb3IgY29uZmlndXJhYmxlIHN1bW1hcnkgcm93c1xuICBASW5wdXQoKSBzdW1tYXJ5Q29sdW1uczogYW55OyAvLyBJbnB1dCBmb3Igc3VtbWFyeSBjb2x1bW5zIGNvbmZpZ1xuICBASW5wdXQoKSBpc0xvYWRpbmc6IGFueTsgLy9TS1MyOE1BUjI1IElucHV0IGZvciBsb2FkaW5nIGluZGljYXRvclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogYW55OyAvLyB0YWJsZSBjb25maWcgZm9yIG54dCBmb3JtIGJ1aWxkZXIgdGFibGVcbiAgQElucHV0KCkgdGFibGVQYXJhbXM6IGFueTsgLy9TS1MxN0FQUjI1IFJlY2VpdmVzIHRhYmxlUGFyYW1zIGluZm9ybWF0aW9uIGZyb20gcGFyZW50IGNvbXBvbmVudFxuICBASW5wdXQoKSBsaXN0Vmlld3M6IGFueVtdID0gW107IC8vU0tTMjZBUFIyNSBQcmVkZWZpbmVkIGxpc3Qgdmlld3NcbiAgQElucHV0KCkgbW9kZTogJ3ZpZXcnIHwgJ2VkaXQnIHwgJ3ByaW50JyA9ICdlZGl0JzsgLy8gU0tTMTFKVU4yNSBOZXcgbW9kZSBpbnB1dFxuXG4gIEBPdXRwdXQoKSB0YWJsZVJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvLyBkYXRhcyB0byBiZSBwYXNzZWQgd2hlbiB0YWJsZSByb3cgaXMgY2xpY2tlZFxuICBAT3V0cHV0KCkgb25FZGl0RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy8gaWYgZWRpdCBidXR0b24gaXMgY2xpY2tlZCwgdGhlIGRhdGEgb2YgdGhhdCByb3cgd2lsbCBiZSBwYXNzZWRcbiAgQE91dHB1dCgpIHNhdmVCdXR0b25EYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvLyBlZGl0ZWQgcm93cyBkYXRhIHdpbGwgYmUgcGFzc2VkXG4gIEBPdXRwdXQoKSBvbkRlbGV0ZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47ICAvLyB3aGVuIGRlbGV0ZSBidXR0b24gY2xpY2tlZCBwYXNzIHRoZSBkYXRhXG4gIEBPdXRwdXQoKSBidXR0b25FbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvLyB0aGlzIHdpbGwgZW1pdCBhIHRhYmxlIHRvcCBidXR0b24gY2xpY2sgZXZlbnRcbiAgQE91dHB1dCgpIGh5cGVyTGlua0VtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47IC8vIGh5cGVyIGxpbmsgY2xpY2sgZXZlbnRcbiAgQE91dHB1dCgpIHNpZGVOYXZFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IGFueSwgY29sOiBhbnksIGNvbmZpZzogYW55IH0+OyAvLyByaWdodG5hdiBjb2x1bW4gZW1pdFxuICBAT3V0cHV0KCkgYWN0aW9uQnV0dG9uRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjsgLy8gZGF0YXMgdG8gYmUgcGFzc2VkIHdoZW4gdGFibGUgcm93IGFjdGl2ZSBidXR0b24gaXMgY2xpY2tlZFxuICBAT3V0cHV0KCkgY29sdW1uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29sdW1uOiBzdHJpbmcsIGRhdGE6IGFueVtdIH0+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVDb2x1bW4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29sdW1uOiBzdHJpbmcsIGRhdGE6IGFueVtdIH0+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWVzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTsgLy8gdG8gcGFzcyB0aGUgc2VsZWN0ZWQgY2hlY2tib3ggdmFsdWVzXG4gIEBPdXRwdXQoKSBmaWxlRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvLyB0byBwYXNzIHRoZSBmaWxlXG4gIEBPdXRwdXQoKSBOeHRUYWJsZVBhcmFtc0VtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT47IC8vU0tTMTdBUFIyNSB0byBwYXNzIHRoZSB0YWJsZVBhcmFtcyBpbmZvcm1hdGlvblxuICBAT3V0cHV0KCkgTnh0VGFibGVGaWx0ZXJFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+OyAvL1NLUzNNQVkyNSBmaWx0ZXIgY29sdW1uIHZhbCBnZXQgZW1pdCBcbiAgQE91dHB1dCgpIE54dFRhYmxlRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PjtcbiAgLy8ge1xuICAvLyAgIFwicGFnaW5hdGlvblwiOiB7ICAgICAgIC8vIDRcbiAgLy8gICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgLy8gICAgICAgXCJwYWdlSW5kZXhcIjogMTBcbiAgLy8gICB9LFxuICAvLyAgIFwidGFibGVTZWFyY2hcIjogeyAgICAgIC8vIDFcbiAgLy8gICAgICAgXCJmaWVsZHNcIiA6IFtcbiAgLy8gICAgICAgICAgIFwibGlnaHRUeXBlXCIsXG4gIC8vICAgICAgICAgICBcInN5c3RlbVwiLFxuICAvLyAgICAgICAgICAgXCJzdGF0dXNcIlxuICAvLyAgICAgICBdICxcbiAgLy8gICAgICAgXCJ2YWx1ZVwiOiAnci0wMDEnIFxuICAvLyAgIH0sICBcbiAgLy8gICBcInNlYXJjaEZpbHRlckRhdGFcIjogeyAgLy8gMlxuICAvLyAgICAgICBcImxpZ2h0VHlwZVwiOiBbXG4gIC8vICAgICAgICAgICBcIkFBXCIsXG4gIC8vICAgICAgICAgICBcIkJCXCIgXG4gIC8vICAgICAgIF1cbiAgLy8gICB9LFxuICAvLyAgIFwic29ydFwiOiB7ICAgICAgICAgICAgICAvLyAzXG4gIC8vICAgICAgIFwiY29sdW1uXCI6IFwiYXNzZXRDb2RlXCIsXG4gIC8vICAgICAgIFwiZGlyZWN0aW9uXCI6IFwiYXNjXCJcbiAgLy8gICB9XG4gIC8vIH1cblxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgc2VsZWN0aW9uOiBhbnk7IC8vIHRvIGdldCB0aGUgc2VsZWN0ZWQgcm93XG4gIHN0aWNreUNvbmRpdGlvbiE6IG51bWJlcjsgLy8gdG8gZ2V0IHRoZSBzdGlja3kgY29sdW1uIGluZGV4XG4gIHNlYXJjaEZpbHRlciA9IGZhbHNlOyAvLyB0byBnZXQgdGhlIHNlYXJjaCBmaWx0ZXJcbiAgZmlsdGVyQXJyYXk6IEFycmF5PGFueT4gPSBbXTsgLy8gdG8gZ2V0IHRoZSBmaWx0ZXIgYXJyYXlcbiAgc2VsZWN0ZWRGaWx0ZXI6IGFueTsgLy8gdG8gZ2V0IHRoZSBzZWxlY3RlZCBmaWx0ZXJcbiAgcmVuZGVyQ29sdW1uczogc3RyaW5nID0gJ2Rpc3BsYXllZENvbHVtbnMnOyAvLyB0byBnZXQgdGhlIHJlbmRlcmVkIGNvbHVtbnNcbiAgcGFnZVNpemVPcHRpb25zOiBBcnJheTxhbnk+ICAvLyBmb3IgcGFnaW5hdGlvbiBnZXQgdGhlIHBhZ2Ugc2l6ZSBvcHRpb25zXG4gIGRhdGFTb3VyY2U6IGFueTsgIC8vIGZvciB0YWJsZSBkYXRhIHNvdXJjZVxuICB0b3RhbENvdW50ITogbnVtYmVyIC8vIGNvdW50IG9mIHRvdGFsIHJlY29yZHNcbiAgc2VhcmNoQm94VmFsdWU6IGFueTsgLy8gdG8gZ2V0IHRoZSBzZWFyY2ggYm94IHZhbHVlXG4gIHByZXZTZWFyY2g6IGFueTsgLy8gdG8gZ2V0IHRoZSBwcmV2aW91cyBzZWFyY2ggdmFsdWVcbiAgYWN0aXZlQ29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gVHJhY2sgdGhlIGFjdGl2ZSBjb2x1bW5cbiAgaXNTY3JvbGxlZCA9IGZhbHNlOyAvLyBCb29sZWFuIGZsYWcgdG8gdHJhY2sgc2Nyb2xsIHN0YXRlXG4gIGlzU2hhZG93SGlkZGVuID0gZmFsc2U7IC8vIEJvb2xlYW4gZmxhZyB0byB0cmFjayBzaGFkb3cgc3RhdGVcbiAgY3VycmVudFNvcnRDb2x1bW46IHN0cmluZyA9ICcnOyAvLyB0byBnZXQgdGhlIGN1cnJlbnQgc29ydCBjb2x1bW5cbiAgY3VycmVudFNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnID0gJ25vbmUnOyAvLyB0byBnZXQgdGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb25cbiAgb3JpZ2luYWxEYXRhOiBhbnk7IC8vIFN0b3JlIG9yaWdpbmFsIGRhdGEgZm9yIHNvcnRpbmdcbiAgaG92ZXJlZENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIFRyYWNrIHRoZSBob3ZlcmVkIGNvbHVtblxuICBzZWFyY2hUZXh0OiBhbnk7IC8vIHRvIGdldCB0aGUgc2VhcmNoIHRleHRcbiAgbXVsdGlwbGVGaWx0ZXJBcnJheTogYW55OyAvLyB0byBnZXQgdGhlIG11bHRpcGxlIGZpbHRlciBhcnJheVxuICB0YWJsZUZpbHRlckFycmF5OiBhbnk7IC8vIHRvIGdldCB0aGUgdGFibGUgZmlsdGVyIGFycmF5XG4gIGZpbHRlckRhdGFBcnJheTogYW55ID0ge30gLy8gdG8gZ2V0IHRoZSBmaWx0ZXIgZGF0YSBhcnJheVxuICBpc1Jlc2l6ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZm9yIHRhYmxlIGNvbHVtbiByZXNpemVcbiAgc0ZpbHRlckRhdGE6IGFueTsgLy8gdG8gZ2V0IHRoZSBzZWFyY2ggZmlsdGVyIGRhdGFcbiAgaGVhZGVyTGFiZWxzOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgaGVhZGVyIGxhYmVsc1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZGlzcGxheWVkIGNvbHVtbnNcbiAgZmlsdGVyQ29sdW1uczogQXJyYXk8YW55PiA9IFtdOyAvLyB0byBnZXQgdGhlIGZpbHRlciBjb2x1bW5zXG4gIGN1cnJlbnRGaWx0ZXJDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107IC8vIHRvIGdldCB0aGUgZmlsdGVyIGNvbHVtbnNcbiAgc29ydENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgLy8gdG8gZ2V0IHRoZSBmaWx0ZXIgY29sdW1uc1xuICBjdXJyZW50U29ydENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgLy8gdG8gZ2V0IHRoZSBmaWx0ZXIgY29sdW1uc1xuICBoeXBlckxpbmtDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107IC8vIHRvIGdldCB0aGUgaHlwZXIgbGluayBjb2x1bW5zXG4gIGVkaXRDb2x1bW46IEFycmF5PGFueT4gPSBbXTsgIC8vIHRvIGdldCB0aGUgZWRpdCBjb2x1bW5cbiAgZGF0ZUNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgLy8gdG8gZ2V0IHRoZSBkYXRlIGNvbHVtbnNcbiAgdGltZUNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgIC8vIHRvIGdldCB0aGUgdGltZSBjb2x1bW5zXG4gIG9iamVjdENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgIC8vIHRvIGdldCB0aGUgb2JqZWN0IGNvbHVtbnNcbiAgZmlsZUNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTsgIC8vIHRvIGdldCB0aGUgZmlsZSBjb2x1bW5zXG4gIGJvb2xlYW5Db2x1bW5zIDogQXJyYXk8YW55PiA9IFtdOyAgLy8gdG8gZ2V0IHRoZSBib29sZWFuIGNvbHVtbnNcbiAgaW5saW5lRWxlbWVudDogYW55IC8vIGZvciBhZGQgYSBuZXcgcm93IG9uIHRhYmxlXG4gIHBhZ2VTaXplOiBhbnkgIC8vIGZvciBwYWdpbmF0aW9uIGdldCB0aGUgcGFnZSBzaXplXG4gIHBhZ2VJbmRleDogYW55IC8vIGZvciBwYWdpbmF0aW9uIGdldCB0aGUgcGFnZSBpbmRleFxuICB0b3RhbFJlY29yZHM6IG51bWJlcjsgLy8gZm9yIHBhZ2luYXRpb24gZ2V0IHRoZSB0b3RhbCByZWNvcmRzXG4gIGNvbmZpZ1BhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTsgLy8gZmxhZyBmb3IgY29uZmlnIHBhZ2luYXRpb25cbiAgZGVsZXRlRGF0YTogYW55OyAvLyB0byBnZXQgdGhlIGRlbGV0ZSByb3dcbiAgZGVsZXRlTW9kYWwgPSBmYWxzZTsgLy8gZm9yIGNvbmZvcm1hdGlvbiBwb3B1cFxuICBkcm9wZG93bkFjdGlvbkJ1dHRvbjogYW55OyAvLyBmb3IgYWN0aW9uIGNvbHVtbiBkcm9wZG93biBidXR0b25cbiAgY3VycmVudE9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7IC8vIHRyYWNrIHRoZSBjdXJyZW50IG9wZW4gYWN0aW9uIGRyb3Bkb3duIGljb24gaW5kZXhcbiAgY2xpY2tMaXN0ZW5lcjogYW55OyAvLyBhY3Rpb24gY29sdW1uIGRyb3Bkb3duIGJ1dHRvbiBjbGljayBsaXN0ZW5lciBmb3IgY2xvc2UgYSBkcm9wZG93biBidXR0b25cbiAgc2VsZWN0ZWRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyB0byBnZXQgdGhlIHNlbGVjdGVkIGNvbHVtblxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjsgIC8vIGZvciB0YWJsZSBkYXRhIHN1YnNjcmlwdGlvblxuICBkZWxldGVJbmRleDogbnVtYmVyOyAvLyB0byBnZXQgdGhlIGRlbGV0ZSBpbmRleFxuICBzaG93UG9wb3ZlciA9IHRydWU7XG4gIHN1bW1hcnlWYWx1ZXM6IHsgW2xhYmVsOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9OyAvLyBTS1MyME1BUjI1IE9iamVjdCB0byBzdG9yZSBzdW1tYXJ5IHJvdyB2YWx1ZXNcbiAgaXNTdW1tYXJ5Q29sdW1uOiBib29sZWFuID0gZmFsc2U7IC8vIFNLUzIwTUFSMjUgRmxhZyB0byBjaGVjayBpZiB0aGUgY29sdW1uIGlzIGluIHRoZSBkaXNwbHljb2x1bW5zIGFycmF5XG4gIGlzU3VtbWFyeVN0YXJ0Q29sdW1uOiBhbnlbXTtcbiAgaXNTdW1tYXJ5RW5kQ29sdW1uOiBhbnlbXTtcbiAgZmlsdGVyQm94RGF0YTogYW55O1xuICBmaWx0ZXJUYWJsZU5vczogYW55O1xuICBzZWxlY3RlZFZpZXc6IGFueSA9ICcnOyAgICAgICAgIC8vIFNlbGVjdGVkIGxpc3QgdmlldyBuYW1lXG4gIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7IC8vIFRyYWNrcyBkcm9wZG93biB2aXNpYmlsaXR5XG4gIGN1cnJlbnRWaWV3RmlsdGVyOiBhbnlcbiAgY3VycmVudEhlYWRlckxhYmVsczogYW55W107XG4gIGN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zOiBhbnlbXTtcbiAgaXNGdWxsVGFibGVTdW1tYXJ5Um93OiBib29sZWFuID0gZmFsc2U7IC8vIFNLUzEzSlVOMjUgRmxhZyB0byBjaGVjayBpZiB0aGUgdGFibGUgaGFzIGZ1bGwgc3VtbWFyeSByb3dcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSB7IGRhdGE6IFtdIH07IC8vIG9yIHVzZSBhIHByb3BlciBkYXRhIHN0cnVjdHVyZVxuICAgIC8vIGNvbnNvbGUubG9nKFwibmdPbkNoYW5nZXMgaXMgcnVubmluZ1wiKVxuICAgIGlmICh0aGlzLmZyb20gPT09ICdmb3JtQnVpbGRlcicpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMucXVlc3Rpb24/LmlucHV0ID8gdGhpcy5xdWVzdGlvbj8uaW5wdXQgOiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEgOiBbXVxuICAgICAgY29uc3QgcGFyc2VkTWV0YSA9IHR5cGVvZiB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10gPT09ICdvYmplY3QnID8gdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddIDogSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pO1xuICAgICAgaWYgKCBwYXJzZWRNZXRhID09PSBudWxsIHx8ICBwYXJzZWRNZXRhID09PSB1bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkTWV0YSkgfHwgcGFyc2VkTWV0YT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTm8gdmFsaWQgbWV0YWRhdGEgcHJvdmlkZWQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGFibGVDb25maWcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZztcbiAgICAgICAgdGhpcy5pc05vc0luZGljYXRvciA9IGNvbmZpZz8uaXNOb3NJbmRpY2F0b3IgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmFkZElubGluZVJlY29yZCA9IGNvbmZpZy5hZGRJbmxpbmVSZWNvcmQgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUGFnaW5hdGlvbiA9IGNvbmZpZy5pc1BhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbiA9IGNvbmZpZy5hY3Rpb25CdXR0b24gIT09IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRGVsZXRlUm93ID0gY29uZmlnLmlzRGVsZXRlUm93ICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0VkaXRSb3cgPSBjb25maWcuaXNFZGl0Um93ICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWFyY2hCYXIgPSBjb25maWcuc2VhcmNoQmFyICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0J1dHRvbnMgPSBjb25maWcuaXNCdXR0b25zICE9PSBmYWxzZTsgLy9zdW1tYXJ5Q29sdW1uXG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDU7XG4gICAgICB9XG4gICAgICB0aGlzLmhlYWRlckxhYmVscyA9IHBhcnNlZE1ldGFcbiAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnN1bW1hcnlDb2x1bW4gIT09IHRydWUgJiYgY29sdW1uLnN1bW1hcnlSb3cgIT09IHRydWUgJiYgY29sdW1uLmxhYmVsKSAvLyBFeGNsdWRlIG9ubHkgd2hlbiBleHBsaWNpdGx5IHRydWVcbiAgICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKTtcbiAgICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBwYXJzZWRNZXRhXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Q29sdW1uICE9PSB0cnVlICYmIGNvbHVtbi5zdW1tYXJ5Um93ICE9PSB0cnVlICYmIGNvbHVtbi5hcGlOYW1lKSAvLyBFeGNsdWRlIG9ubHkgd2hlbiBleHBsaWNpdGx5IHRydWVcbiAgICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcbiAgICAgICAgdGhpcy5maWx0ZXJDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLnNvcnRDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zb3J0ID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5oeXBlckxpbmtDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5oeXBlckxpbmsgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmVkaXRDb2x1bW4gPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnJlYWRPbmx5ID09PSBmYWxzZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuZGF0ZUNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdEYXRlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMudGltZUNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdUaW1lJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMub2JqZWN0Q29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ09iamVjdCcpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmZpbGVDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnRmlsZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmJvb2xlYW5Db2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnQm9vbGVhbicpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuXG4gICAgICB0aGlzLnN1bW1hcnlDb2x1bW5zID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeUNvbHVtbiA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoeyBhcGlOYW1lLCBmbGRUeXBlLCAuLi5yZXN0IH0pID0+ICh7XG4gICAgICAgICAgZmllbGROYW1lOiBhcGlOYW1lLFxuICAgICAgICAgIHR5cGU6IGZsZFR5cGUsXG4gICAgICAgICAgLi4ucmVzdFxuICAgICAgICB9KSk7XG4gICAgICB0aGlzLnN1bW1hcnlSb3dzID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeVJvdyA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoeyBhcGlOYW1lLCBmbGRUeXBlLCAuLi5yZXN0IH0pID0+ICh7XG4gICAgICAgICAgZmllbGROYW1lOiBhcGlOYW1lLFxuICAgICAgICAgIHR5cGU6IGZsZFR5cGUsXG4gICAgICAgICAgLi4ucmVzdFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIC8vIEVuc3VyZSBgdGhpcy5kYXRhYCBpcyBhbiBhcnJheVxuICAgIGlmICghdGhpcy5kYXRhIHx8ICFBcnJheS5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgIGNvbnNvbGUud2FybignRGF0YSBpcyBub3QgaW5pdGlhbGl6ZWQgb3IgaXMgbm90IGFuIGFycmF5Jyk7XG4gICAgICB0aGlzLmRhdGEgPSBbXTsgIC8vIEluaXRpYWxpemUgYXMgYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgdmFsaWRcbiAgICB9XG4gICAgLy8gRW5zdXJlIGB0aGlzLmRhdGFTb3VyY2UuZGF0YWAgaXMgaW5pdGlhbGl6ZWRcbiAgICAvL1NLUzE1RkVCMjUgSW5pdGlhbGl6ZSB0aGlzIGluIHlvdXIgZGF0YSBmZXRjaCBtZXRob2RcbiAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IFsuLi50aGlzLmRhdGFdO1xuICAgIHRoaXMuc0ZpbHRlckRhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhO1xuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VTaXplID8gdGhpcy5wYWdpbmF0aW9uWydwYWdlU2l6ZSddIDogdGhpcy5wYWdlU2l6ZSB8fCAxMDtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMucGFnaW5hdGlvbj8ucGFnZUluZGV4ID8gdGhpcy5wYWdpbmF0aW9uWydwYWdlSW5kZXgnXSA6IHRoaXMucGFnZUluZGV4IHx8IDE7XG4gICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBhZ2luYXRpb24/LnRvdGFsUmVjb3JkcyA/IHRoaXMucGFnaW5hdGlvblsndG90YWxSZWNvcmRzJ10gOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VTaXplT3B0aW9ucyA/IHRoaXMucGFnaW5hdGlvblsncGFnZVNpemVPcHRpb25zJ10gOiBbJzUnLCAnMTAnLCAnMjUnLCAnNTAnLCAnMTAwJywgJzIwMCddO1xuICAgIHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9ICEhKHRoaXMucGFnaW5hdGlvbiAmJiBPYmplY3Qua2V5cyh0aGlzLnBhZ2luYXRpb24pLmxlbmd0aCA+IDApO1xuICAgIHRoaXMuaXNQYWdpbmF0aW9uID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc1BhZ2luYXRpb24gPT09IHRydWUgPyB0aGlzLmlzUGFnaW5hdGlvbiA9IHRydWUgOiB0aGlzLmlzUGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNOb3NJbmRpY2F0b3IgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlzTm9zSW5kaWNhdG9yID09PSB0cnVlID8gdGhpcy5pc05vc0luZGljYXRvciA9IHRydWUgOiB0aGlzLmlzTm9zSW5kaWNhdG9yID0gZmFsc2U7XG4gICAgdGhpcy5pc0VkaXRhYmxlID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc0VkaXRhYmxlID09PSBmYWxzZSA/IHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlIDogdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZVxuXG5cbiAgICB0aGlzLmhlYWRlckxhYmVscyA9IHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucz8ubWFwKGNvbHVtbiA9PiBjb2x1bW4ubGFiZWwpIDogdGhpcy5oZWFkZXJMYWJlbHM7XG4gICAgdGhpcy5jdXJyZW50SGVhZGVyTGFiZWxzID0gdGhpcy5oZWFkZXJMYWJlbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnM/Lm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG4gICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcbiAgICAvLyBTS1MyME1BUjI1IENoZWNrIGlmIHRoZSBkaXNwbHljb2x1bW4ncyBoYXZlIGEgc3VtbWFyeSBjb2x1bW5cbiAgICBpZiAodGhpcy5zdW1tYXJ5Q29sdW1ucyAmJiB0aGlzLnN1bW1hcnlDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFsuLi50aGlzLmRpc3BsYXllZENvbHVtbnMsIC4uLnRoaXMuc3VtbWFyeUNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKV07XG4gICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zO1xuICAgICAgdGhpcy5oZWFkZXJMYWJlbHMgPSBbLi4udGhpcy5oZWFkZXJMYWJlbHMsIC4uLnRoaXMuc3VtbWFyeUNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ubGFiZWwpXTtcbiAgICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG4gICAgfVxuICAgIGlmICh0aGlzLnN1bW1hcnlSb3dzICYmIHRoaXMuc3VtbWFyeVJvd3MubGVuZ3RoID4gMCAmJiB0aGlzLmRpc3BsYXllZENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0Z1bGxUYWJsZVN1bW1hcnlSb3cgPSB0aGlzLnN1bW1hcnlSb3dzWzBdLnR5cGUgPT09ICdmdWxsUm93JyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIHRoaXMuaXNTdW1tYXJ5Q29sdW1uID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnNvbWUoZWxlbWVudCA9PiBlbGVtZW50ID09PSB0aGlzLnN1bW1hcnlSb3dzWzBdLmNvbHVtbik7XG4gICAgICBpZiAodGhpcy5pc1N1bW1hcnlDb2x1bW4gJiYgIXRoaXMuaXNGdWxsVGFibGVTdW1tYXJ5Um93KSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YodGhpcy5zdW1tYXJ5Um93c1swXS5jb2x1bW4pO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5pc1N1bW1hcnlTdGFydENvbHVtbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zbGljZSgwLCBpbmRleCAtIDEpO1xuICAgICAgICAgIHRoaXMuaXNTdW1tYXJ5RW5kQ29sdW1uID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zID0gIHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmZpbHRlckNvbHVtbnM7XG4gICAgdGhpcy5zb3J0Q29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc29ydCA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMuc29ydENvbHVtbnM7XG4gICAgdGhpcy5oeXBlckxpbmtDb2x1bW5zID0gIHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5oeXBlckxpbmsgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmh5cGVyTGlua0NvbHVtbnM7XG4gICAgdGhpcy5lZGl0Q29sdW1uID0gdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmVkaXQgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmVkaXRDb2x1bW47XG4gICAgdGhpcy5kYXRlQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5kYXRlQ29sdW1ucztcbiAgICB0aGlzLnRpbWVDb2x1bW5zID0gIHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAndGltZScpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLnRpbWVDb2x1bW5zO1xuICAgIHRoaXMub2JqZWN0Q29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ29iamVjdCcpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLm9iamVjdENvbHVtbnM7XG4gICAgdGhpcy5maWxlQ29sdW1ucyA9ICB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5maWxlQ29sdW1ucztcbiAgICB0aGlzLmJvb2xlYW5Db2x1bW5zID0gIHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnYm9vbGVhbicpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmJvb2xlYW5Db2x1bW5zO1xuICAgIFxuICAgIHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnMgPSB0aGlzLmZpbHRlckNvbHVtbnNcbiAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1ucyA9IHRoaXMuc29ydENvbHVtbnNcbiAgICB0aGlzLmlubGluZUVsZW1lbnQgPSBPYmplY3QuZnJvbUVudHJpZXModGhpcy5kaXNwbGF5ZWRDb2x1bW5zLm1hcChrZXkgPT4gW2tleSwgXCJcIl0pKTtcblxuICAgIHRoaXMuZHJvcGRvd25BY3Rpb25CdXR0b24gPSAodGhpcy5hY3Rpb25CdXR0b25BcnJheT8uYnV0dG9uQXJyYXkgJiYgdGhpcy5hY3Rpb25CdXR0b25BcnJheT8uYnV0dG9uQXJyYXk/Lmxlbmd0aCA+IDApID8gdGhpcy5hY3Rpb25CdXR0b25BcnJheT8uYnV0dG9uQXJyYXk/LnNsaWNlKHRoaXMuYWN0aW9uQnV0dG9uQXJyYXk/LnNpemUpIDogW107XG4gICAgXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG4gICAgaWYgKCF0aGlzLnRvdGFsUmVjb3JkcyAmJiB0aGlzLmRhdGEgJiYgdGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IE51bWJlcih0aGlzLnBhZ2VJbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gTnVtYmVyKHRoaXMucGFnZVNpemUpIHx8IDEwO1xuICAgICAgY29uc3Qgc3RhcnQgPSAocGFnZUluZGV4IC0gMSkgKiBwYWdlU2l6ZTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgcGFnZVNpemU7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCkgfHwgW107XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhXG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgfSwgMTAwKVxuICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMudG90YWxSZWNvcmRzIHx8IHRoaXMuZGF0YT8ubGVuZ3RoXG4gICAgdGhpcy5maWx0ZXJUYWJsZU5vcyA9IHRoaXMudG90YWxSZWNvcmRzIHx8IHRoaXMuZGF0YT8ubGVuZ3RoXG4gICAgaWYgKHRoaXMuc3RpY2t5Q29sdW1uID09PSB0cnVlICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucykge1xuICAgICAgdGhpcy5zdGlja3lDb25kaXRpb24gPSB0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGlja3lDb25kaXRpb24gPSB0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLndpdGhDaGVja0JveCAmJiB0aGlzLmFjdGlvbkJ1dHRvbikge1xuICAgICAgdGhpcy5yZW5kZXJDb2x1bW5zID0gJ2JvdGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy53aXRoQ2hlY2tCb3gpIHtcbiAgICAgIHRoaXMucmVuZGVyQ29sdW1ucyA9ICdzZWxlY3QnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3Rpb25CdXR0b24pIHtcbiAgICAgIHRoaXMucmVuZGVyQ29sdW1ucyA9ICdhY3Rpb24nO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWwpIHtcbiAgICAgIHRoaXMuc2VhcmNoQm94VmFsdWUgPSB0aGlzLnNlYXJjaENvbmZpZ3M/LnNlYXJjaEZpbHRlclZhbDsgLy8gU2hvdyB2YWx1ZSBpbiB0aGUgc2VhcmNoIGJveFxuICAgICAgdGhpcy5wcmV2U2VhcmNoID0gdGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWw7XG4gICAgfVxuICAgIGlmKHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID09PSBudWxsKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID0gdGhpcy5saXN0Vmlld3MgJiYgdGhpcy5saXN0Vmlld3MubGVuZ3RoID4gMCA/IHRoaXMubGlzdFZpZXdzWzBdIDogbnVsbDtcbiAgICB9XG4gICAgaWYodGhpcy5jdXJyZW50Vmlld0ZpbHRlciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgIT09IG51bGwpe1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyLmZpbHRlck5hbWU7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jdXJyZW50Vmlld0ZpbHRlcj8uY29sdW1ucyB8fCBbXTtcbiAgICAgIGlmKGNvbHVtbnMubGVuZ3RoID4gMCl7XG4gICAgICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSBjb2x1bW5zLm1hcChjb2wgPT4gY29sLm5hbWUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRIZWFkZXJMYWJlbHMgPSB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zLm1hcChuYW1lID0+IHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKG5hbWUpO1xuICAgICAgICAgIHJldHVybiBpbmRleCAhPT0gLTEgPyB0aGlzLmhlYWRlckxhYmVsc1tpbmRleF0gOiBuYW1lOyAvLyBmYWxsYmFjayB0byBuYW1lIGlmIG5vIGxhYmVsIGZvdW5kXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5maWx0ZXJhYmxlID09PSB0cnVlKS5tYXAoY29sID0+IGNvbC5uYW1lKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnNvcnRhYmxlID09PSB0cnVlKS5tYXAoY29sID0+IGNvbC5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnM/Lmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWdQYWdpbmF0aW9uID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5ID0ge307XG4gICAgICBjb25zdCBmaWx0T2JqczogYW55ID0ge307XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXlbZWxlbWVudF0gPSBudWxsO1xuICAgICAgICBmaWx0T2Jqc1tlbGVtZW50XSA9IFtdO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBrZXkpOyAgLy8gPC0gZ2V0IG5lc3RlZCB2YWx1ZVxuICAgIFxuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmaWx0T2Jqc1trZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5W2tleV0gPSBuZXcgU2V0KGZpbHRPYmpzW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheSA9IHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5ID0gdGhpcy5tdWx0aXBsZUZpbHRlcjtcbiAgICB9XG4gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbHRlcmVkIGFycmF5IHRoYXQgZXhjbHVkZXMgYW55IGNvbHVtbiB3aXRoICdbJ1xuICAgIGNvbnN0IHRlbXBGaWx0ZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gIWNvbC5maWVsZE5hbWUuaW5jbHVkZXMoJ1snKSk7XG4gICAgXG4gICAgaWYgKHRlbXBGaWx0ZXJDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0T2JqczogYW55ID0ge307XG4gICAgXG4gICAgICAvLyBTS1MyNk1BWTI1IEluaXRpYWxpemUgc2V0cyB0byBjb2xsZWN0IHVuaXF1ZSB2YWx1ZXMgZm9yIGVhY2ggY29sdW1uXG4gICAgICB0ZW1wRmlsdGVyQ29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuICAgICAgICBmaWx0T2Jqc1tjb2wuZmllbGROYW1lXSA9IG5ldyBTZXQoKTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgLy8gU0tTMjZNQVkyNSBDb2xsZWN0IHVuaXF1ZSB2YWx1ZXMgZnJvbSB0YWJsZUZpbHRlckRhdGFcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJEYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGVtcEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgY29sLmZpZWxkTmFtZSk7XG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpbHRPYmpzW2NvbC5maWVsZE5hbWVdLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgLy8gU0tTMjZNQVkyNSBBcHBlbmQgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIGVhY2ggY29sdW1uIG9iamVjdCB3aXRoIHRoZSBhcnJheSBvZiB1bmlxdWUgdmFsdWVzXG4gICAgICB0aGlzLnRhYmxlRmlsdGVyQXJyYXkgPSBbLi4udGVtcEZpbHRlckNvbHVtbnMubWFwKChjb2w6IGFueSkgPT4gKHtcbiAgICAgICAgLi4uY29sLFxuICAgICAgICB2YWx1ZTogQXJyYXkuZnJvbShmaWx0T2Jqc1tjb2wuZmllbGROYW1lXSlcbiAgICAgIH0pKV07XG4gICAgfSAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keSA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGFibGUtYm9keScpO1xuICAgICAgICBpZiAodGFibGVCb2R5ICYmIHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5pc1NoYWRvd0hpZGRlbiA9ICEodGFibGVCb2R5LnNjcm9sbEhlaWdodCA8IDQ1MClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDE1MDApOyAvLyBXYWl0cyAxMDBtcyBmb3IgcmVuZGVyaW5nXG4gICAgLy8gU0tTMjBNQVIyNSBJbml0aWFsaXplIHN1bW1hcnlWYWx1ZXMgZm9yIGlucHV0IHJvd3MgYW5kIGNvbXB1dGUgdmFsdWVzXG4gICAgaWYgKGNoYW5nZXNbJ3N1bW1hcnlSb3dzJ10gfHwgY2hhbmdlc1snc3VtbWFyeUNvbHVtbnMnXSB8fCBjaGFuZ2VzWydkYXRhJ10pIHtcbiAgICAgIHRoaXMuY29tcHV0ZVN1bW1hcnlDb2x1bW5zKCk7IC8vIENvbXB1dGUgcGVyLXJvdyBzdW1tYXJ5IGNvbHVtbnMgZmlyc3RcbiAgICAgIHRoaXMuc3VtbWFyeVJvd3M/LmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgaWYgKHJvdy50eXBlID09PSAnaW5wdXQnICYmIHRoaXMuc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gMDsgLy8gRGVmYXVsdCB0byAwIGZvciBpbnB1dHNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXB1dGVTdW1tYXJ5VmFsdWVzKCdvbkNoYW5nZScpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaENvbmZpZ3MgJiYgdGhpcy5zZWFyY2hCb3hWYWx1ZSA/IHRoaXMuZW1wdHlTZWFyY2godGhpcy5zZWFyY2hCb3hWYWx1ZSkgOiB0aGlzLmFwcGx5RmlsdGVyKHRoaXMudGFibGVQYXJhbXM/LnRhYmxlU2VhcmNoLCdvbkNoYW5nZScpIC8vIFNLUzE3QVBSMjUgdXBkYXRlIHNlYXJjaCBib3ggdmFsdWVcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHsgZGF0YTogW10gfTsgLy8gb3IgdXNlIGEgcHJvcGVyIGRhdGEgc3RydWN0dXJlXG4gICAgLy8gU0tTMTNNQVIyNSBnZXQgZGF0YSBmcm9tIHF1ZXN0aW9uIGlmIGZyb20gZm9ybUJ1aWxkZXJcbiAgICBpZiAodGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLnF1ZXN0aW9uPy5pbnB1dCA/IHRoaXMucXVlc3Rpb24/LmlucHV0IDogdGhpcy5kYXRhID8gdGhpcy5kYXRhIDogW11cbiAgICAgIGNvbnN0IHBhcnNlZE1ldGEgPSB0eXBlb2YgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddID09PSAnb2JqZWN0JyA/IHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSB8fCBbXSA6IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKTtcbiAgICAgIGlmICggcGFyc2VkTWV0YSA9PT0gbnVsbCB8fCAgcGFyc2VkTWV0YSA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBhcnNlZE1ldGEpIHx8IHBhcnNlZE1ldGE/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05vIHZhbGlkIG1ldGFkYXRhIHByb3ZpZGVkJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudGFibGVDb25maWc7XG4gICAgICAgIHRoaXMuaXNOb3NJbmRpY2F0b3IgPSBjb25maWc/LmlzTm9zSW5kaWNhdG9yICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRJbmxpbmVSZWNvcmQgPSBjb25maWcuYWRkSW5saW5lUmVjb3JkICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1BhZ2luYXRpb24gPSBjb25maWcuaXNQYWdpbmF0aW9uICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBjb25maWcuYWN0aW9uQnV0dG9uICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0RlbGV0ZVJvdyA9IGNvbmZpZy5pc0RlbGV0ZVJvdyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0Um93ID0gY29uZmlnLmlzRWRpdFJvdyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoQmFyID0gY29uZmlnLnNlYXJjaEJhciAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNCdXR0b25zID0gY29uZmlnLmlzQnV0dG9ucyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDU7XG4gICAgICB9XG4gICAgICB0aGlzLmhlYWRlckxhYmVscyA9IHBhcnNlZE1ldGFcbiAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnN1bW1hcnlDb2x1bW4gIT09IHRydWUgJiYgY29sdW1uLnN1bW1hcnlSb3cgIT09IHRydWUgJiYgY29sdW1uLmxhYmVsKSAvLyBFeGNsdWRlIG9ubHkgd2hlbiBleHBsaWNpdGx5IHRydWVcbiAgICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLmxhYmVsKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SGVhZGVyTGFiZWxzID0gdGhpcy5oZWFkZXJMYWJlbHNcblxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gcGFyc2VkTWV0YVxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeUNvbHVtbiAhPT0gdHJ1ZSAmJiBjb2x1bW4uc3VtbWFyeVJvdyAhPT0gdHJ1ZSAmJiBjb2x1bW4uYXBpTmFtZSkgLy8gRXhjbHVkZSBvbmx5IHdoZW4gZXhwbGljaXRseSB0cnVlXG4gICAgICAgIC5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcblxuICAgICAgICB0aGlzLmZpbHRlckNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpbHRlciA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuc29ydENvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnNvcnQgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmFwaU5hbWUpO1xuICAgICAgICB0aGlzLmh5cGVyTGlua0NvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmh5cGVyTGluayA9PT0gdHJ1ZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuZWRpdENvbHVtbiA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4ucmVhZE9ubHkgPT09IGZhbHNlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5kYXRlQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmxkVHlwZSA9PT0gJ0RhdGUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy50aW1lQ29sdW1ucyA9IHBhcnNlZE1ldGEuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmxkVHlwZSA9PT0gJ1RpbWUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5hcGlOYW1lKTtcbiAgICAgICAgdGhpcy5vYmplY3RDb2x1bW5zID0gcGFyc2VkTWV0YS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5mbGRUeXBlID09PSAnT2JqZWN0JykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuZmlsZUNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdGaWxlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG4gICAgICAgIHRoaXMuYm9vbGVhbkNvbHVtbnMgPSBwYXJzZWRNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZsZFR5cGUgPT09ICdCb29sZWFuJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uYXBpTmFtZSk7XG5cbiAgICAgIHRoaXMuc3VtbWFyeUNvbHVtbnMgPSBwYXJzZWRNZXRhXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Q29sdW1uID09PSB0cnVlKVxuICAgICAgICAubWFwKCh7IGFwaU5hbWUsIGZsZFR5cGUsIC4uLnJlc3QgfSkgPT4gKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGFwaU5hbWUsXG4gICAgICAgICAgdHlwZTogZmxkVHlwZSxcbiAgICAgICAgICAuLi5yZXN0XG4gICAgICAgIH0pKTtcbiAgICAgIHRoaXMuc3VtbWFyeVJvd3MgPSBwYXJzZWRNZXRhXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Um93ID09PSB0cnVlKVxuICAgICAgICAubWFwKCh7IGFwaU5hbWUsIGZsZFR5cGUsIC4uLnJlc3QgfSkgPT4gKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGFwaU5hbWUsXG4gICAgICAgICAgdHlwZTogZmxkVHlwZSxcbiAgICAgICAgICAuLi5yZXN0XG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKHRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAvLyBBUC0yNk1BUjI1IEVuc3VyZSB0aGF0IHRoaXMuYXBpTWV0YSBpcyBhbHdheXMgYW4gb2JqZWN0LiAgXG4gICAgICAgICAvL0FQLTI2TUFSMjUgSWYgaXQncyBhbHJlYWR5IGFuIG9iamVjdCwga2VlcCBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwYXJzZSBpdCBmcm9tIGEgSlNPTiBzdHJpbmcuXG4gICAgICAgICAgdGhpcy5hcGlNZXRhID0gdHlwZW9mIHRoaXMuYXBpTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmFwaU1ldGEgOiBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICAgICAgbGV0IGFwaU9iajogYW55ID0gdGhpcy5hcGlNZXRhO1xuICAgICAgICAgIGlmIChhcGlPYmogJiYgYXBpT2JqLmVuZHBvaW50KSB7XG4gICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgICAgaWYgKGFwaU9iai52YXJpYWJsZSkge1xuICAgICAgICAgICAgICAvLyBWRCAyMk1heTI0IC0gaGFuZGxpbmcgbXVsdGlwbGUgY2hpbGQgb2JqZWN0c1xuICAgICAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLCBhcGlPYmoudmFyaWFibGUpO1xuICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgICAvLyBIQSAxOUpBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvciBpbiBjb25zb2xlXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2VzPy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwID0gcmVzcG9uc2VzW2ldO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICAgIHJlc3BvbnNlcyA9IGFwaVJlc3BvbnNlO1xuICAgICAgICAgICAgICBvcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBvcHRpb25zO1xuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWRCBOT1YyMyAtIGhhbmRsZSB0aGUgZGVwZW5kZW50IHVwZGF0ZSBmb3IgZHJvcGRvd25cbiAgICAgICAgbGV0IHNvdXJjZUlkID0gYXBpT2JqPy5zb3VyY2VRdWVzdGlvbklkO1xuICAgICAgICBsZXQgZmllbGQgPSBhcGlPYmo/LmZpZWxkOyAgICAgICAgLy8gVkQgMTNNQVkyNCAtIGR5bmFtaWMgZmllbGQgY2hhbmdlc1xuICAgICAgICBpZiAoc291cmNlSWQpIHtcbiAgICAgICAgICAvLyAvLyBWRCAxME1heTI0IFN1YnNjcmliZSBmb3IgdGhlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBhcGlPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XG4gICAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqO1xuICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkSXRlbSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAvLyBWRCAxM01BWTI0IC0gYmluZCBkeW5hbWljIGZpZWxkXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gVkQgMjZKdW4yNCAtIHRvIGhhbmRsZSBtdWx0aXBsZSBvYmplY3RzXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqRWxlbWVudFZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShlbGVtZW50LCBmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqSXRlbVZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShpdGVtLCBmaWVsZClcbiAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqRWxlbWVudFZhbHVlID09IG9iakl0ZW1WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRJdGVtID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vUlMgMTRGRUIyMDI1XG4gICAgICAgICAgICAgICAgICAvL1VwZGF0ZSBQYWdpbmF0aW9uIGJlZm9yZSBlbWl0XG4gICAgICAgICAgICAgICAgICBpZiAodmFsaWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi50aGlzLmRhdGEsIGl0ZW1dO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh7ZGF0YTogdGhpcy5kYXRhLCBzdW1tYXJ5VmFsdWVzOiB0aGlzLnN1bW1hcnlWYWx1ZXN9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gU0tTMjBNQVIyNSBNYW51YWxseSB0cmlnZ2VyIG5nT25DaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdPbkNoYW5nZXMoe30pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShhcGlPYmo/LnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlYXJjaEJhciA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VhcmNoQmFyID09PSB0cnVlID8gdGhpcy5zZWFyY2hCYXIgPSB0cnVlIDogdGhpcy5zZWFyY2hCYXIgPSBmYWxzZTtcbiAgICB0aGlzLndpdGhDaGVja0JveCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMud2l0aENoZWNrQm94ID09PSBmYWxzZSA/IHRoaXMud2l0aENoZWNrQm94ID0gZmFsc2UgOiB0aGlzLndpdGhDaGVja0JveCA9IHRydWU7XG4gICAgdGhpcy5pc0VkaXRSb3cgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlzRWRpdFJvdyA9PT0gZmFsc2UgPyB0aGlzLmlzRWRpdFJvdyA9IGZhbHNlIDogdGhpcy5pc0VkaXRSb3cgPSB0cnVlO1xuICAgIHRoaXMuaXNEZWxldGVSb3cgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlzRGVsZXRlUm93ID09PSBmYWxzZSA/IHRoaXMuaXNEZWxldGVSb3cgPSBmYWxzZSA6IHRoaXMuaXNEZWxldGVSb3cgPSB0cnVlO1xuICAgIHRoaXMuYWN0aW9uQnV0dG9uID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY3Rpb25CdXR0b24gPT09IGZhbHNlID8gdGhpcy5hY3Rpb25CdXR0b24gPSBmYWxzZSA6IHRoaXMuYWN0aW9uQnV0dG9uID0gdHJ1ZTtcbiAgICB0aGlzLmlzQnV0dG9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNCdXR0b25zID09PSBmYWxzZSA/IHRoaXMuaXNCdXR0b25zID0gZmFsc2UgOiB0aGlzLmlzQnV0dG9ucyA9IHRydWU7XG4gICAgdGhpcy5hZGRJbmxpbmVSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmFkZElubGluZVJlY29yZCA9PT0gZmFsc2UgPyB0aGlzLmFkZElubGluZVJlY29yZCA9IGZhbHNlIDogdGhpcy5hZGRJbmxpbmVSZWNvcmQgPSB0cnVlO1xuICAgIHRoaXMuaXNQYWdpbmF0aW9uID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc1BhZ2luYXRpb24gPT09IHRydWUgPyB0aGlzLmlzUGFnaW5hdGlvbiA9IHRydWUgOiB0aGlzLmlzUGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNOb3NJbmRpY2F0b3IgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlzTm9zSW5kaWNhdG9yID09PSB0cnVlID8gdGhpcy5pc05vc0luZGljYXRvciA9IHRydWUgOiB0aGlzLmlzTm9zSW5kaWNhdG9yID0gZmFsc2U7XG4gICAgdGhpcy5pc0VkaXRhYmxlID09PSB1bmRlZmluZWQgfHwgdGhpcy5pc0VkaXRhYmxlID09PSBmYWxzZSA/IHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlIDogdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZVxuXG5cbiAgICB0aGlzLmhlYWRlckxhYmVscyA9IHRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucz8ubWFwKGNvbHVtbiA9PiBjb2x1bW4ubGFiZWwpIDogdGhpcy5oZWFkZXJMYWJlbHM7XG4gICAgdGhpcy5jdXJyZW50SGVhZGVyTGFiZWxzID0gdGhpcy5oZWFkZXJMYWJlbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnM/Lm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmRpc3BsYXllZENvbHVtbnM7XG4gICAgdGhpcy5jdXJyZW50RGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucztcbiAgICBpZiAodGhpcy5zdW1tYXJ5Q29sdW1ucyAmJiB0aGlzLnN1bW1hcnlDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFsuLi50aGlzLmRpc3BsYXllZENvbHVtbnMsIC4uLnRoaXMuc3VtbWFyeUNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKV07XG4gICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zO1xuICAgICAgdGhpcy5oZWFkZXJMYWJlbHMgPSBbLi4udGhpcy5oZWFkZXJMYWJlbHMsIC4uLnRoaXMuc3VtbWFyeUNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ubGFiZWwpXTtcbiAgICAgIHRoaXMuY3VycmVudEhlYWRlckxhYmVscyA9IHRoaXMuaGVhZGVyTGFiZWxzXG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5maWx0ZXJDb2x1bW5zO1xuICAgIHRoaXMuc29ydENvbHVtbnMgPXRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zb3J0ID09PSB0cnVlKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5zb3J0Q29sdW1ucztcbiAgICB0aGlzLmh5cGVyTGlua0NvbHVtbnMgPXRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5oeXBlckxpbmsgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmh5cGVyTGlua0NvbHVtbnM7XG4gICAgdGhpcy5lZGl0Q29sdW1uID0gdGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmVkaXQgPT09IHRydWUpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpZWxkTmFtZSkgOiB0aGlzLmVkaXRDb2x1bW47XG4gICAgdGhpcy5kYXRlQ29sdW1ucyA9dGhpcy5mcm9tICE9PSAnZm9ybUJ1aWxkZXInID8gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdkYXRlJykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKTogdGhpcy5kYXRlQ29sdW1ucztcbiAgICB0aGlzLnRpbWVDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy50aW1lQ29sdW1ucztcbiAgICB0aGlzLm9iamVjdENvbHVtbnMgPXRoaXMuZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyA/IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnb2JqZWN0JykubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGROYW1lKSA6IHRoaXMub2JqZWN0Q29sdW1ucztcbiAgICB0aGlzLmZpbGVDb2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5maWxlQ29sdW1ucztcbiAgICB0aGlzLmJvb2xlYW5Db2x1bW5zID10aGlzLmZyb20gIT09ICdmb3JtQnVpbGRlcicgPyB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZE5hbWUpIDogdGhpcy5ib29sZWFuQ29sdW1ucztcblxuICAgIHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnMgPSB0aGlzLmZpbHRlckNvbHVtbnNcbiAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1ucyA9IHRoaXMuc29ydENvbHVtbnNcbiAgICB0aGlzLmlubGluZUVsZW1lbnQgPSBPYmplY3QuZnJvbUVudHJpZXModGhpcy5kaXNwbGF5ZWRDb2x1bW5zLm1hcChrZXkgPT4gW2tleSwgXCJcIl0pKTtcblxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VTaXplID8gdGhpcy5wYWdpbmF0aW9uWydwYWdlU2l6ZSddIDogdGhpcy50YWJsZVBhcmFtcz8ucGFnaW5hdGlvbj8ucGFnZVNpemUgfHwxMDtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMucGFnaW5hdGlvbj8ucGFnZUluZGV4ID8gdGhpcy5wYWdpbmF0aW9uWydwYWdlSW5kZXgnXSA6IHRoaXMudGFibGVQYXJhbXM/LnBhZ2luYXRpb24/LnBhZ2VJbmRleCB8fDE7XG4gICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBhZ2luYXRpb24/LnRvdGFsUmVjb3JkcyA/IHRoaXMucGFnaW5hdGlvblsndG90YWxSZWNvcmRzJ10gOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhZ2luYXRpb24/LnBhZ2VTaXplT3B0aW9ucyA/IHRoaXMucGFnaW5hdGlvblsncGFnZVNpemVPcHRpb25zJ10gOiBbJzUnLCAnMTAnLCAnMjUnLCAnNTAnLCAnMTAwJywgJzIwMCddO1xuICAgIHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9ICEhKHRoaXMucGFnaW5hdGlvbiAmJiBPYmplY3Qua2V5cyh0aGlzLnBhZ2luYXRpb24pLmxlbmd0aCA+IDApO1xuXG4gICAgdGhpcy5kcm9wZG93bkFjdGlvbkJ1dHRvbiA9IHRoaXMuYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5Py5zbGljZSh0aGlzLmFjdGlvbkJ1dHRvbkFycmF5Py5zaXplKTtcblxuICAgIHRoaXMub3JpZ2luYWxEYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgdGhpcy5zRmlsdGVyRGF0YSA9IFsuLi50aGlzLmRhdGFdO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGE7XG5cbiAgICBpZiAodGhpcy5jb25maWdQYWdpbmF0aW9uID09PSBmYWxzZSAmJiB0aGlzLmRhdGEgJiYgdGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IE51bWJlcih0aGlzLnBhZ2VJbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gTnVtYmVyKHRoaXMucGFnZVNpemUpIHx8IDEwO1xuICAgICAgY29uc3Qgc3RhcnQgPSAocGFnZUluZGV4IC0gMSkgKiBwYWdlU2l6ZTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgcGFnZVNpemU7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCkgfHwgW107XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhXG4gICAgfVxuICAgIGlmKHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID09PSBudWxsKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID0gdGhpcy5saXN0Vmlld3MgJiYgdGhpcy5saXN0Vmlld3MubGVuZ3RoID4gMCA/IHRoaXMubGlzdFZpZXdzWzBdIDogbnVsbDtcbiAgICB9XG4gICAgaWYodGhpcy5jdXJyZW50Vmlld0ZpbHRlciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY3VycmVudFZpZXdGaWx0ZXIgIT09IG51bGwpe1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyLmZpbHRlck5hbWU7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jdXJyZW50Vmlld0ZpbHRlcj8uY29sdW1ucyB8fCBbXTtcbiAgICAgIGlmKGNvbHVtbnMubGVuZ3RoID4gMCl7XG4gICAgICAgIHRoaXMuY3VycmVudERpc3BsYXllZENvbHVtbnMgPSBjb2x1bW5zLm1hcChjb2wgPT4gY29sLm5hbWUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRIZWFkZXJMYWJlbHMgPSB0aGlzLmN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zLm1hcChuYW1lID0+IHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKG5hbWUpO1xuICAgICAgICAgIHJldHVybiBpbmRleCAhPT0gLTEgPyB0aGlzLmhlYWRlckxhYmVsc1tpbmRleF0gOiBuYW1lOyAvLyBmYWxsYmFjayB0byBuYW1lIGlmIG5vIGxhYmVsIGZvdW5kXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5maWx0ZXJhYmxlID09PSB0cnVlICkubWFwKGNvbCA9PiBjb2wubmFtZSk7XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnRDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5zb3J0YWJsZSA9PT0gdHJ1ZSkubWFwKGNvbCA9PiBjb2wubmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJDb2x1bW5zPy5sZW5ndGggPiAwICYmIHRoaXMuY29uZmlnUGFnaW5hdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheSA9IHt9O1xuICAgICAgY29uc3QgZmlsdE9ianM6IGFueSA9IHt9O1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyQ29sdW1ucy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5W2VsZW1lbnRdID0gbnVsbDtcbiAgICAgICAgZmlsdE9ianNbZWxlbWVudF0gPSBbXTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwga2V5KTsgIC8vIDwtIGdldCBuZXN0ZWQgdmFsdWVcbiAgICBcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZmlsdE9ianNba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheVtrZXldID0gbmV3IFNldChmaWx0T2Jqc1trZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXkgPSB0aGlzLm11bHRpcGxlRmlsdGVyQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXVsdGlwbGVGaWx0ZXJBcnJheSA9IHRoaXMubXVsdGlwbGVGaWx0ZXI7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWx0ZXJlZCBhcnJheSB0aGF0IGV4Y2x1ZGVzIGFueSBjb2x1bW4gd2l0aCAnWydcbiAgICBjb25zdCB0ZW1wRmlsdGVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+ICFjb2wuZmllbGROYW1lLmluY2x1ZGVzKCdbJykpO1xuICAgIFxuICAgIGlmICh0ZW1wRmlsdGVyQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdE9ianM6IGFueSA9IHt9O1xuICAgIFxuICAgICAgLy8gU0tTMjZNQVkyNSBJbml0aWFsaXplIHNldHMgdG8gY29sbGVjdCB1bmlxdWUgdmFsdWVzIGZvciBlYWNoIGNvbHVtblxuICAgICAgdGVtcEZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcbiAgICAgICAgZmlsdE9ianNbY29sLmZpZWxkTmFtZV0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIC8vIFNLUzI2TUFZMjUgQ29sbGVjdCB1bmlxdWUgdmFsdWVzIGZyb20gdGFibGVGaWx0ZXJEYXRhXG4gICAgICB0aGlzLnRhYmxlRmlsdGVyRGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIHRlbXBGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGNvbC5maWVsZE5hbWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmaWx0T2Jqc1tjb2wuZmllbGROYW1lXS5hZGQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIC8vIFNLUzI2TUFZMjUgQXBwZW5kIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBlYWNoIGNvbHVtbiBvYmplY3Qgd2l0aCB0aGUgYXJyYXkgb2YgdW5pcXVlIHZhbHVlc1xuICAgICAgdGhpcy50YWJsZUZpbHRlckFycmF5ID0gWy4uLnRlbXBGaWx0ZXJDb2x1bW5zLm1hcCgoY29sOiBhbnkpID0+ICh7XG4gICAgICAgIC4uLmNvbCxcbiAgICAgICAgdmFsdWU6IEFycmF5LmZyb20oZmlsdE9ianNbY29sLmZpZWxkTmFtZV0pXG4gICAgICB9KSldXG4gICAgfSAgICAgICAgICBcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIH0sIDApXG4gICAgdGhpcy50b3RhbENvdW50ID0gdGhpcy50b3RhbFJlY29yZHMgfHwgdGhpcy5kYXRhPy5sZW5ndGhcbiAgICB0aGlzLmZpbHRlclRhYmxlTm9zID0gdGhpcy50b3RhbFJlY29yZHMgfHwgdGhpcy5kYXRhPy5sZW5ndGhcbiAgICBjb25zdCBOeHREYXRhVGFibGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdOeHREYXRhVGFibGUnKSk7XG4gICAgdGhpcy5jdXJyZW50U29ydENvbHVtbiA9IE54dERhdGFUYWJsZT8uY3VycmVudFNvcnRDb2x1bW47XG4gICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9IE54dERhdGFUYWJsZT8uY3VycmVudFNvcnREaXJlY3Rpb247XG4gICAgaWYgKE54dERhdGFUYWJsZT8uYWRkUmVjb3JkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gTnh0RGF0YVRhYmxlPy5wYWdlU2l6ZVxuICAgICAgdGhpcy5wYWdlSW5kZXggPSBOeHREYXRhVGFibGU/LnBhZ2VJbmRleFxuICAgICAgdmFyIG9iajogYW55ID0ge307XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pbmxpbmVFbGVtZW50KTtcbiAgICAgIGtleXMuZm9yRWFjaCgoZWxlbWVudEtleTogYW55KSA9PiB7XG4gICAgICAgIG9ialtlbGVtZW50S2V5XSA9ICcnO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGEucHVzaChvYmopO1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5kYXRhO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QodGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXSk7XG4gICAgICB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdLmVkaXRSb3cgPSB0cnVlO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ054dERhdGFUYWJsZScsIEpTT04uc3RyaW5naWZ5KHsgYWRkUmVjb3JkOiBmYWxzZSwgcGFnZVNpemU6IDEwLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LCBjdXJyZW50U29ydENvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgY3VycmVudFNvcnREaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gfSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGlja3lDb2x1bW4gPT09IHRydWUgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKSB7XG4gICAgICB0aGlzLnN0aWNreUNvbmRpdGlvbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0aWNreUNvbmRpdGlvbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMud2l0aENoZWNrQm94ICYmIHRoaXMuYWN0aW9uQnV0dG9uKSB7XG4gICAgICB0aGlzLnJlbmRlckNvbHVtbnMgPSAnYm90aCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLndpdGhDaGVja0JveCkge1xuICAgICAgdGhpcy5yZW5kZXJDb2x1bW5zID0gJ3NlbGVjdCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGlvbkJ1dHRvbikge1xuICAgICAgdGhpcy5yZW5kZXJDb2x1bW5zID0gJ2FjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gU0tTMTlNQVIyNSBhZGQgZmlyc3QgbGluZSBmb3IgZm9ybWJ1aWxkZXIgdGFibGVcbiAgICBpZiAodGhpcy5pc0VkaXRhYmxlICYmIHRoaXMuZGF0YS5sZW5ndGggPT09IDApIHsgdGhpcy5hZGRUYWJsZVJlY29yZCggdGhpcy5pbmxpbmVFbGVtZW50LCBcIm9uSW5pdFwiKSB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keSA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGFibGUtYm9keScpO1xuICAgICAgICBpZiAodGFibGVCb2R5ICYmIHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5pc1NoYWRvd0hpZGRlbiA9ICEodGFibGVCb2R5LnNjcm9sbEhlaWdodCA8IDQ1MClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDE1MDApOyAvLyBXYWl0cyAxMDBtcyBmb3IgcmVuZGVyaW5nXG4gICAgLy8gU0tTMTdBUFIyNSB0YWJsZSBwYXJlbXMgZGF0YSB1cGRhdGVcbiAgICBpZiAodGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWwpIHtcbiAgICAgIHRoaXMuc2VhcmNoQm94VmFsdWUgPSB0aGlzLnNlYXJjaENvbmZpZ3M/LnNlYXJjaEZpbHRlclZhbDsgLy8gU2hvdyB2YWx1ZSBpbiB0aGUgc2VhcmNoIGJveFxuICAgICAgdGhpcy5wcmV2U2VhcmNoID0gdGhpcy5zZWFyY2hDb25maWdzPy5zZWFyY2hGaWx0ZXJWYWw7XG4gICAgfSBlbHNlIGlmKHRoaXMudGFibGVQYXJhbXM/LnRhYmxlU2VhcmNoKXtcbiAgICAgIHRoaXMuc2VhcmNoQm94VmFsdWUgPSB0aGlzLnRhYmxlUGFyYW1zPy50YWJsZVNlYXJjaDtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hDb25maWdzICYmIHRoaXMuc2VhcmNoQm94VmFsdWUgPyB0aGlzLmVtcHR5U2VhcmNoKHRoaXMuc2VhcmNoQm94VmFsdWUpIDogJydcbiAgICB0aGlzLmZpbHRlckRhdGFBcnJheSA9IHRoaXMudGFibGVQYXJhbXM/LnNlYXJjaEZpbHRlckRhdGEgPyB0aGlzLnRhYmxlUGFyYW1zPy5zZWFyY2hGaWx0ZXJEYXRhIDoge307XG4gICAgdGhpcy5zb3J0RGF0YSh0aGlzLnRhYmxlUGFyYW1zPy5zb3J0Py5jb2x1bW4sIHRoaXMudGFibGVQYXJhbXM/LnNvcnQ/LmRpcmVjdGlvbix0cnVlKVxuICB9XG5cbiAgLy8gU0tTMjBNQVIyNSBzdW1tYXJ5IGNvbHVtbnMgY2FsY1xuICBjb21wdXRlU3VtbWFyeUNvbHVtbnMoKSB7XG4gICAgaWYgKHRoaXMuc3VtbWFyeUNvbHVtbnMgJiYgdGhpcy5zdW1tYXJ5Q29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEubWFwKHJvdyA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1JvdyA9IHsgLi4ucm93IH07XG4gICAgICAgIHRoaXMuc3VtbWFyeUNvbHVtbnMuZm9yRWFjaChzdW1tYXJ5Q29sID0+IHtcbiAgICAgICAgICBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VtJyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBzdW0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnJlZHVjZSgoYWNjLCBvcGVyYW5kKSA9PiBhY2MgKyAoTnVtYmVyKG5ld1Jvd1tvcGVyYW5kXSkgfHwgMCksIDApO1xuICAgICAgICAgICAgbmV3Um93W3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ3N1YnRyYWN0JyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBbZmlyc3RPcGVyYW5kLCAuLi5yZXN0T3BlcmFuZHNdID0gc3VtbWFyeUNvbC5vcGVyYW5kcztcbiAgICAgICAgICAgIGxldCBzdW0gPSBOdW1iZXIobmV3Um93W2ZpcnN0T3BlcmFuZF0pIHx8IDA7IC8vIFN0YXJ0IHdpdGggdGhlIGZpcnN0IG9wZXJhbmRcbiAgICAgICAgICAgIHN1bSA9IHJlc3RPcGVyYW5kcy5yZWR1Y2UoKGFjYywgb3BlcmFuZCkgPT4gYWNjIC0gKE51bWJlcihuZXdSb3dbb3BlcmFuZF0pIHx8IDApLCBzdW0pO1xuICAgICAgICAgICAgbmV3Um93W3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5JyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5yZWR1Y2UoKGFjYywgb3BlcmFuZCkgPT4gYWNjICogKE51bWJlcihuZXdSb3dbb3BlcmFuZF0pIHx8IDApLCAxKTsgLy8gU3RhcnQgd2l0aCAxXG4gICAgICAgICAgICBuZXdSb3dbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gcHJvZHVjdDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Um93O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YTsgLy8gVXBkYXRlIGRhdGFTb3VyY2VcbiAgICAgIGlmICghdGhpcy50b3RhbFJlY29yZHMgJiYgdGhpcy5kYXRhICYmIHRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IE51bWJlcih0aGlzLnBhZ2VJbmRleCkgfHwgMDtcbiAgICAgICAgY29uc3QgcGFnZVNpemUgPSBOdW1iZXIodGhpcy5wYWdlU2l6ZSkgfHwgMTA7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2VJbmRleCAtIDEpICogcGFnZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgcGFnZVNpemU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhPy5zbGljZShzdGFydCwgZW5kKSB8fCBbXTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIFNLUzIwTUFSMjUgQ29tcHV0ZSB2YWx1ZXMgZm9yIHN1bW1hcnkgcm93c1xuICBjb21wdXRlU3VtbWFyeVZhbHVlcyhmcm9tPykge1xuICAgIHRoaXMuc3VtbWFyeVJvd3M/LmZvckVhY2gocm93ID0+IHtcbiAgICAgIGlmIChyb3cudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJykge1xuICAgICAgICBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ3N1bScgJiYgcm93LmNvbHVtbikge1xuICAgICAgICAgIC8vIENvcnJlY3Qgc3VtIG9wZXJhdGlvblxuICAgICAgICAgIHRoaXMuc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIGRhdGFSb3cpID0+IGFjYyArIChOdW1iZXIoZGF0YVJvd1tyb3cuY29sdW1uXSkgfHwgMCksXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb3cub3BlcmF0aW9uID09PSAnc3VidHJhY3QnICYmIHJvdy5jb2x1bW4pIHtcbiAgICAgICAgICAvLyBTdWJ0cmFjdCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZmlyc3QgdmFsdWVcbiAgICAgICAgICB0aGlzLnN1bW1hcnlWYWx1ZXNbcm93LmZpZWxkTmFtZV0gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBkYXRhUm93LCBpbmRleCkgPT4gaW5kZXggPT09IDAgPyBOdW1iZXIoZGF0YVJvd1tyb3cuY29sdW1uXSkgfHwgMCA6IGFjYyAtIChOdW1iZXIoZGF0YVJvd1tyb3cuY29sdW1uXSkgfHwgMCksXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb3cub3BlcmF0aW9uID09PSAnbXVsdGlwbHknICYmIHJvdy5jb2x1bW4pIHtcbiAgICAgICAgICAvLyBNdWx0aXBseSBzaG91bGQgc3RhcnQgd2l0aCAxXG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gdGhpcy5kYXRhU291cmNlLmRhdGEucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgZGF0YVJvdykgPT4gYWNjICogKE51bWJlcihkYXRhUm93W3Jvdy5jb2x1bW5dKSB8fCAwKSwgLy8gVXNlIDEgaW5zdGVhZCBvZiAwXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb3cub3BlcmF0aW9uID09PSAnc3VidHJhY3QnICYmIHJvdy5vcGVyYW5kcykge1xuICAgICAgICAgIC8vIFN1YnRyYWN0IGJhc2VkIG9uIG9wZXJhbmRzXG4gICAgICAgICAgY29uc3QgW29wMSwgb3AyXSA9IHJvdy5vcGVyYW5kcztcbiAgICAgICAgICB0aGlzLnN1bW1hcnlWYWx1ZXNbcm93LmZpZWxkTmFtZV0gPSAodGhpcy5zdW1tYXJ5VmFsdWVzW29wMV0gfHwgMCkgLSAodGhpcy5zdW1tYXJ5VmFsdWVzW29wMl0gfHwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ3N1bScgJiYgcm93Lm9wZXJhbmRzKSB7XG4gICAgICAgICAgLy8gU3VtIGJhc2VkIG9uIG9wZXJhbmRzXG4gICAgICAgICAgY29uc3QgW29wMSwgb3AyXSA9IHJvdy5vcGVyYW5kcztcbiAgICAgICAgICB0aGlzLnN1bW1hcnlWYWx1ZXNbcm93LmZpZWxkTmFtZV0gPSAodGhpcy5zdW1tYXJ5VmFsdWVzW29wMV0gfHwgMCkgKyAodGhpcy5zdW1tYXJ5VmFsdWVzW29wMl0gfHwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAocm93Lm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5JyAmJiByb3cub3BlcmFuZHMpIHtcbiAgICAgICAgICAvLyBNdWx0aXBseSBiYXNlZCBvbiBvcGVyYW5kc1xuICAgICAgICAgIGNvbnN0IFtvcDEsIG9wMl0gPSByb3cub3BlcmFuZHM7XG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VmFsdWVzW3Jvdy5maWVsZE5hbWVdID0gKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDFdIHx8IDApICogKHRoaXMuc3VtbWFyeVZhbHVlc1tvcDJdIHx8IDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTS1MxM0pVTjI1IFN1bSB0aGUgdmFsdWVzIGJ5IGRlZmF1bHQuXG4gICAgICBpZihyb3cudHlwZSA9PT0gJ2Z1bGxSb3cnKXtcbiAgICAgICAgcm93Py5jb2x1bW5zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIHRoaXMuc3VtbWFyeVZhbHVlc1tlbGVtZW50XSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIGRhdGFSb3cpID0+IGFjYyArIChOdW1iZXIoZGF0YVJvd1tlbGVtZW50XSkgfHwgMCksXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGZyb20gIT09ICdvbkNoYW5nZScgJiYgZnJvbSAhPT0gJ29uSW5pdCcgJiYgdGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh7ZGF0YTogdGhpcy5kYXRhU291cmNlLmRhdGEsIHN1bW1hcnlWYWx1ZXM6IHRoaXMuc3VtbWFyeVZhbHVlc30pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzIwTUFSMjUgSGFuZGxlIG1hbnVhbCBpbnB1dCBjaGFuZ2VzIGluIHN1bW1hcnkgcm93cyBcbiAgb25TdW1tYXJ5SW5wdXRDaGFuZ2UoKSB7XG4gICAgdGhpcy5jb21wdXRlU3VtbWFyeVZhbHVlcygpO1xuICB9XG4gIC8vIFNLUzE1RkVCMjUgQ3VzdG9tIHNvcnQgZnVuY3Rpb25cbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcsIHNvcnRpbmdTdGF0ZT86IGFueSB8IHVuZGVmaW5lZCwgY3VycmVudFN0YXRlPzphbnkgfHVuZGVmaW5lZCwgZnJvbT86YW55KSB7XG4gICAgLy8gRGVmaW5lIHNvcnRpbmcgc3RhdGVzXG4gICAgY29uc3Qgc29ydGluZ1N0YXRlcyA9IFsnYXNjJywgJ2Rlc2MnLCAnbm9uZSddO1xuICAgIGlmICh0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPT09IGZhbHNlIHx8IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA9PT0gdGhpcy50b3RhbFJlY29yZHMpIHtcbiAgICAgIC8vIERldGVybWluZSB0aGUgY3VycmVudCBzb3J0aW5nIHN0YXRlXG4gICAgICBpZiAodGhpcy5jdXJyZW50U29ydENvbHVtbiA9PT0gY29sdW1uICYmICFzb3J0aW5nU3RhdGUpIHtcbiAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCBzb3J0aW5nIHN0YXRlXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHNvcnRpbmdTdGF0ZXMuaW5kZXhPZih0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9IHNvcnRpbmdTdGF0ZXNbKGN1cnJlbnRJbmRleCArIDEpICUgc29ydGluZ1N0YXRlcy5sZW5ndGhdIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB8IFwibm9uZVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYSBuZXcgY29sdW1uIGlzIHNlbGVjdGVkLCBzdGFydCB3aXRoIGFzY2VuZGluZyBzb3J0XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSBzb3J0aW5nU3RhdGUgfHwgJ2FzYyc7XG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5maWx0ZXJCb3hEYXRhICYmIHRoaXMuZmlsdGVyQm94RGF0YS5sZW5ndGggPiAwID8gdGhpcy5maWx0ZXJCb3hEYXRhIDogdGhpcy5kYXRhU291cmNlLmRhdGE7XG4gICAgICAvLyBPbmx5IHNvcnQgaWYgdGhlIGRpcmVjdGlvbiBpcyAnYXNjJyBvciAnZGVzYydcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyB8fCB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlQSA9IHRoaXMuZ2V0VmFsdWUoYSwgY29sdW1uKTtcbiAgICAgICAgICBsZXQgdmFsdWVCID0gdGhpcy5nZXRWYWx1ZShiLCBjb2x1bW4pO1xuICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQgb3IgbnVsbCB2YWx1ZXNcbiAgICAgICAgICBpZiAodmFsdWVBID09IG51bGwgJiYgdmFsdWVCID09IG51bGwpIHJldHVybiAwOyAvLyBCb3RoIGFyZSBudWxsL3VuZGVmaW5lZFxuICAgICAgICAgIGlmICh2YWx1ZUEgPT0gbnVsbCkgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xOyAvLyB2YWx1ZUEgaXMgbnVsbFxuICAgICAgICAgIGlmICh2YWx1ZUIgPT0gbnVsbCkgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gLTEgOiAxOyAvLyB2YWx1ZUIgaXMgbnVsbFxuICAgICAgICAgIC8vIEhhbmRsZSBkYXRlIHNvcnRpbmdcbiAgICAgICAgICBpZiAodGhpcy5pc0RhdGVDb2x1bW4oY29sdW1uKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUEgPSBuZXcgRGF0ZSh2YWx1ZUEpO1xuICAgICAgICAgICAgY29uc3QgZGF0ZUIgPSBuZXcgRGF0ZSh2YWx1ZUIpO1xuICAgICAgICAgICAgdmFsdWVBID0gZGF0ZUEuZ2V0VGltZSgpO1xuICAgICAgICAgICAgdmFsdWVCID0gZGF0ZUIuZ2V0VGltZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlQiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBudW1iZXIgc29ydGluZ1xuICAgICAgICAgICAgdmFsdWVBID0gTnVtYmVyKHZhbHVlQSk7XG4gICAgICAgICAgICB2YWx1ZUIgPSBOdW1iZXIodmFsdWVCKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZUEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZUIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgc3RyaW5nIGNvbXBhcmlzb25cbiAgICAgICAgICAgIHZhbHVlQSA9IHZhbHVlQS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgdmFsdWVCID0gdmFsdWVCLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIENvbXBhcmUgdmFsdWVzXG4gICAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gLTEgOiAxO1xuICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVBID4gdmFsdWVCKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAxIDogLTE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHZhbHVlcyBhcmUgdGhlIHNhbWUsIHJldHVybiAwIHRvIG1haW50YWluIG9yaWdpbmFsIG9yZGVyXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFsuLi5kYXRhXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IE51bWJlcih0aGlzLnBhZ2VJbmRleCkgfHwgMDtcbiAgICAgICAgY29uc3QgcGFnZVNpemUgPSBOdW1iZXIodGhpcy5wYWdlU2l6ZSkgfHwgMTA7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2VJbmRleCAtIDEpICogcGFnZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgcGFnZVNpemU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5maWx0ZXJCb3hEYXRhID8gdGhpcy5maWx0ZXJCb3hEYXRhPy5zbGljZShzdGFydCwgZW5kKSB8fCBbXSA6IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCkgfHwgW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERldGVybWluZSB0aGUgY3VycmVudCBzb3J0aW5nIHN0YXRlXG4gICAgICBpZiAodGhpcy5jdXJyZW50U29ydENvbHVtbiA9PT0gY29sdW1uKSB7XG4gICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgc29ydGluZyBzdGF0ZVxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzb3J0aW5nU3RhdGVzLmluZGV4T2YodGhpcy5jdXJyZW50U29ydERpcmVjdGlvbik7XG4gICAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSBzb3J0aW5nU3RhdGVzWyhjdXJyZW50SW5kZXggKyAxKSAlIHNvcnRpbmdTdGF0ZXMubGVuZ3RoXSBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfCBcIm5vbmVcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGEgbmV3IGNvbHVtbiBpcyBzZWxlY3RlZCwgc3RhcnQgd2l0aCBhc2NlbmRpbmcgc29ydFxuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnTnh0RGF0YVRhYmxlJywgSlNPTi5zdHJpbmdpZnkoeyBhZGRSZWNvcmQ6IGZhbHNlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgY3VycmVudFNvcnRDb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGN1cnJlbnRTb3J0RGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uIH0pKTtcbiAgICAgIC8vIE9ubHkgc29ydCBpZiB0aGUgZGlyZWN0aW9uIGlzICdhc2MnIG9yICdkZXNjJ1xuICAgICAgaWYoY3VycmVudFN0YXRlICE9PSB0cnVlICYmIGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSwgdGFibGVTZWFyY2g6IHsgZmllbGRzOiB0aGlzLmRpc3BsYXllZENvbHVtbnMsIHZhbHVlOiB0aGlzLnNlYXJjaEJveFZhbHVlIH0sIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld30gfSlcbiAgICB9XG4gICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlUGFyYW1zRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCB9LHRhYmxlU2VhcmNoOiB0aGlzLnNlYXJjaEJveFZhbHVlLCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fX0pXG4gICAgaWYoZnJvbSA9PT0gJ29uQ2hhbmdlJykgdGhpcy5wYWdlUGFyYW1zKHRoaXMudGFibGVQYXJhbXM/LnBhZ2luYXRpb24sJ29uQ2hhbmdlJylcbiAgICB0aGlzLm9uU3VtbWFyeUlucHV0Q2hhbmdlKClcbiAgfVxuXG4gIG9uU2Nyb2xsKHRhYmxlQ29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuaXNTY3JvbGxlZCA9IHRhYmxlQ29udGFpbmVyLnNjcm9sbFRvcCA+IDA7XG4gICAgY29uc3QgdGFibGVCb2R5SGVpZ2h0ID0gdGFibGVDb250YWluZXIuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGlzQXRCb3R0b20gPSB0YWJsZUJvZHlIZWlnaHQgLSB0YWJsZUNvbnRhaW5lci5zY3JvbGxUb3AgPD0gdGFibGVDb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTtcbiAgICAvL1NLUzE1RkVCMjUgRW5zdXJlIHNoYWRvdyBpcyBoaWRkZW4gb25seSBpZiB0YWJsZSBib2R5IGhlaWdodCBpcyBncmVhdGVyIHRoYW4gNDAwcHhcbiAgICBpZiAodGhpcy5pc1BhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuaXNTaGFkb3dIaWRkZW4gPSAhKGlzQXRCb3R0b20gfHwgdGFibGVCb2R5SGVpZ2h0IDwgNDUwKTtcbiAgICB9XG4gIH1cblxuICAvL1NLUzE1RkVCMjUgbG9zaW5nIHRoZSBmaWx0ZXIgY29tcG9uZW50IHdoZW4gdGhlIG1vdXNlIGlzIGNsaWNrZWQgb3V0c2lkZSB0YWJsZVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uRG9jdW1lbnRDbGljayhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWFyY2hGaWx0ZXIgPSBmYWxzZTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gcHJldmVudHMgYW55IG90aGVyIGRlZmF1bHQgYWN0aW9uXG4gIH1cblxuICAvL1NLUzE1RkVCMjUgZmlsdGVyIGRhdGEgdGhhdCB0byBiZSBkaXNwbGF5ZWQgaW4gaGVhZGVyIGZpbHRlciBpY29uIGlzIHBhc3NlZCBpbiAnZmlsdGVyQXJyYXknIGFycmF5XG4gIGZpbHRlcihkYXRhczogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJBcnJheSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSBkYXRhcztcbiAgICB0aGlzLmZpbHRlckFycmF5ID0gdGhpcy5tdWx0aXBsZUZpbHRlckFycmF5Py5bZGF0YXNdO1xuICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gIXRoaXMuc2VhcmNoRmlsdGVyO1xuICAgIHRoaXMuaXNSZXNpemVkID0gdGhpcy5maWx0ZXJEYXRhQXJyYXlbdGhpcy5zZWxlY3RlZEZpbHRlcl0/Lmxlbmd0aCA+IDBcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgIGVtaXR0aW5nIHBhZ3Igc2l6ZSBhbmQgaW5kZXggdG8gcGFyZW50IG9uIHBhZ2luYXRpbmdcbiAgcGFnZVBhcmFtcyhldmVudDogYW55LCBmcm9tPzphbnkpIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50Py5wYWdlSW5kZXggfHwgdGhpcy5wYWdlSW5kZXhcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQ/LnBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemVcbiAgICB0aGlzLmZpbHRlclRhYmxlTm9zID0gdGhpcy5maWx0ZXJCb3hEYXRhPy5sZW5ndGhcbiAgICBpZiAodGhpcy5jb25maWdQYWdpbmF0aW9uID09PSBmYWxzZSB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IHRoaXMudG90YWxSZWNvcmRzKSB7XG4gICAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuYXBwbHlGaWx0ZXIodGhpcy5zZWFyY2hCb3hWYWx1ZSAsICdwYWdlUGFyYW1zJylcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKE51bWJlcih0aGlzLnBhZ2VJbmRleCkgLSAxKSAqIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgTnVtYmVyKHRoaXMucGFnZVNpemUpO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZpbHRlckJveERhdGE/LnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgdGhpcy5vblN1bW1hcnlJbnB1dENoYW5nZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSwgdGFibGVTZWFyY2g6IHsgZmllbGRzOiB0aGlzLmRpc3BsYXllZENvbHVtbnMsIHZhbHVlOiB0aGlzLnNlYXJjaEJveFZhbHVlIH0sIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9IH0pXG4gICAgfVxuICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZVBhcmFtc0VtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSx0YWJsZVNlYXJjaDogdGhpcy5zZWFyY2hCb3hWYWx1ZSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld319KVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBhcHBseSBzZWFyY2ggYmFyIGZpbHRlciB1c2luZyBtYXRcbiAgYXBwbHlGaWx0ZXIoZXZlbnQ6IGFueSwgZnJvbT86IGFueSkge1xuICAgIGxldCBmaWx0ZXJWYWx1ZSA9IGV2ZW50O1xuICAgIGZpbHRlclZhbHVlID8gZmlsdGVyVmFsdWUgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSA6IGZpbHRlclZhbHVlID0gJyc7XG4gICAgdGhpcy5zZWFyY2hCb3hWYWx1ZSA9IGZpbHRlclZhbHVlXG4gICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhLmZpbHRlcihpdGVtID0+XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zb21lKGNvbHVtbiA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGl0ZW0sY29sdW1uKT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBpZihmcm9tICE9PSAncGFnZVBhcmFtcycgJiYgZnJvbSAhPT0gJ29uQ2hhbmdlJykgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgdGhpcy5zRmlsdGVyRGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhXG4gICAgdGhpcy5maWx0ZXJUYWJsZU5vcyA9IHRoaXMuc0ZpbHRlckRhdGE/Lmxlbmd0aFxuICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICBjb25zdCBzdGFydCA9IChOdW1iZXIodGhpcy5wYWdlSW5kZXgpIC0gMSkgKiBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgdGhpcy5maWx0ZXJSZXRhaW4oZnJvbSA9PT0gJ29uQ2hhbmdlJyA/IHRoaXMudGFibGVQYXJhbXM/LnNlYXJjaEZpbHRlckRhdGEgfHwgdGhpcy5maWx0ZXJEYXRhQXJyYXkgOiB0aGlzLmZpbHRlckRhdGFBcnJheSxmcm9tIClcbiAgfVxuXG4gIC8qKiBTS1MxNUZFQjI1IFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cbiAgaXNBbGxTZWxlY3RlZCgpIHtcbiAgICAvLyBjaGVjayBpZiBhbGwgcm93cyBhcmUgc2VsZWN0ZWRcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTS1MxNUZFQjI1IFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIC8vIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9uIHRoZW4gY2xlYXIgdGhhdCBzZWxlY3Rpb25cbiAgICAvLyBlbWl0IHRoZSBzZWxlY3RlZCB2YWx1ZSBvbmx5IHRvIHBhcmVudFxuICAgIGlmICh0aGlzLmlzU29tZVNlbGVjdGVkKCkpIHtcbiAgICAgIC8vICAgdG8gcmVtb3ZlIHRoZSBlZGl0Um93LCBpZiB0aGUgY2hlY2tib3ggaXMgdW5jaGVja2VkXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQ/LmVkaXRSb3cpIGVsZW1lbnQuZWRpdFJvdyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkLCBlaXRoZXIgc2VsZWN0IGFsbCBpdGVtcyBvciBjbGVhciB0aGUgc2VsZWN0aW9uXG4gICAgICAvLyBlbWl0IHRoZSBzZWxlY3RlZCB2YWx1ZXMgdG8gcGFyZW50XG4gICAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/IHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkgOiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKChyb3c6IGFueSkgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdykpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgLy8gU0tTMTVGRUIyNSBDaGVja3Mgd2hldGhlciBhbnkgaXRlbXMgYXJlIGN1cnJlbnRseSBzZWxlY3RlZCBpbiB0aGUgdGFibGUuXG4gIGlzU29tZVNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPiAwO1xuICB9XG5cblxuICAvLyBTS1MxNUZFQjI1IGVtaXQgdGhlIGNoZWNrIGJveCB2YWx1ZXMsIHRoYXQgc2VsZWN0ZWQgc2VwYXJhdGVseVxuICBzZXBhcmF0ZVJvd1NlbGVjdChkYXRhOiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIC8vICAgdG8gcmVtb3ZlIHRoZSBlZGl0Um93IGlkIGNoZWNrIGJveCBpcyB1bmNoZWNrZWQgb24gc2VwYXJhdGUgcm93XG4gICAgaWYgKGRhdGEgJiYgZWxlbWVudD8uZWRpdFJvdykge1xuICAgICAgZWxlbWVudC5lZGl0Um93ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpXG4gICAgfVxuICB9XG5cbiAgLy9TS1MxNUZFQjI1IGRhdGEgdGhhdCB0byBiZSBwYXNzZWQsIHdoZW4gdGFibGUgcm93IGlzIGNsaWNrZWRcbiAgdGFibGVDbGljayhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRhYmxlUm93Q2xpY2suZW1pdChkYXRhKTtcbiAgfVxuICBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgXG4gICAgcmV0dXJuIHBhdGhcbiAgICAgIC5yZXBsYWNlKC9cXFsoXFxkKylcXF0vZywgJy4kMScpIC8vIHR1cm5zIFwibWVtYmVyc1swXVwiIGludG8gXCJtZW1iZXJzLjBcIlxuICAgICAgLnNwbGl0KCcuJylcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCkgPyBhY2NbcGFydF0gOiB1bmRlZmluZWQsIG9iaik7XG4gIH1cbiAgXG4gIC8vU0tTMTVGRUIyNSBSZXRhaW4gdGhlIGZpbHRlcmRhdGFcbiAgZmlsdGVyUmV0YWluKGZpbHRlcmtleTogYW55LCBmcm9tPzphbnkpIHtcbiAgICBpZiAoZmlsdGVya2V5ICYmIE9iamVjdC5rZXlzKGZpbHRlcmtleSkubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuc0ZpbHRlckRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgbGV0IGlzRGF0YUNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJrZXkpKSB7XG4gICAgICAgIGlmIChmaWx0ZXJrZXlba2V5XSAmJiBmaWx0ZXJrZXlba2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNEYXRhQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNEYXRhQ2hlY2tlZCkge1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNGaWx0ZXJEYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZpbHRlcmtleSkpIHtcbiAgICAgICAgICBpZiAoZmlsdGVya2V5W2tleV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNGaWx0ZXJEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShpdGVtLCBrZXkpO1xuICAgICAgICAgICAgICByZXR1cm4gZmlsdGVya2V5W2tleV0uaW5jbHVkZXModmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgXG4gICAgICAgICAgICBjb25zdCBkYXRhMSA9IFsuLi50aGlzLmRhdGEsIC4uLmRhdGFdO1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVzKGRhdGExKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYoZnJvbSAhPT0gJ3BhZ2VQYXJhbXMnICYmIGZyb20gIT09ICdvbkNoYW5nZScpIHRoaXMucGFnZUluZGV4ID0gMVxuICAgIGNvbnN0IHN0YXJ0ID0gKE51bWJlcih0aGlzLnBhZ2VJbmRleCkgLSAxKSAqIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIE51bWJlcih0aGlzLnBhZ2VTaXplKTtcbiAgICB0aGlzLmZpbHRlckJveERhdGEgPSB0aGlzLmRhdGFcbiAgICB0aGlzLmZpbHRlclRhYmxlTm9zID0gdGhpcy5maWx0ZXJCb3hEYXRhPy5sZW5ndGhcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGFcbiAgICB0aGlzLnNvcnREYXRhKHRoaXMuY3VycmVudFNvcnRDb2x1bW4gLHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24sdW5kZWZpbmVkLGZyb20pXG4gIH1cblxuLy8gU0tTMTVGRUIyNSB0byByZW1vdmUgZHVwbGljYXRlIG9iamVjdCBmcm9tIHR3byBhcnJheXMgKHNhZmUgc3RyaW5naWZ5KVxucmVtb3ZlRHVwbGljYXRlcyhvYmplY3RzOiBhbnkpIHtcbiAgY29uc29sZS5sb2coXCJyZW1vdmVEdXBsaWNhdGVzXCIsb2JqZWN0cylcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB1bmlxdWVPYmplY3RzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0IHNhZmVTdHJpbmdpZnkgPSAob2JqOiBhbnkpID0+IHtcbiAgICBjb25zdCBzZWVuT2JqcyA9IG5ldyBXZWFrU2V0KCk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDsgLy8gcmVwbGFjZSB1bmRlZmluZWQgdG8gYXZvaWQgaXNzdWVzXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzZWVuT2Jqcy5oYXModmFsdWUpKSByZXR1cm47IC8vIHNraXAgY2lyY3VsYXJcbiAgICAgICAgc2Vlbk9ianMuYWRkKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBvYmplY3RzLmZvckVhY2goKG9iajogYW55KSA9PiB7XG4gICAgY29uc3Qga2V5ID0gc2FmZVN0cmluZ2lmeShvYmopO1xuICAgIGlmICghc2Vlbi5oYXMoa2V5KSkge1xuICAgICAgc2Vlbi5hZGQoa2V5KTtcbiAgICAgIHVuaXF1ZU9iamVjdHMucHVzaChvYmopO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVuaXF1ZU9iamVjdHM7XG59XG5cbiAgLy8gU0tTMTVGRUIyNSAgb24gZGVsZXRlIGNsaWNrIHNhdmUgdGhlIGRhdGEgaW4gdmFyaWFibGVzXG4gIGRlbGV0ZVJlY29yZChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IFsuLi50aGlzLmRhdGFTb3VyY2UuZGF0YV07IC8vIENyZWF0ZSBhIG5ldyByZWZlcmVuY2VcbiAgICAgIHVwZGF0ZWREYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHVwZGF0ZWREYXRhOyAvLyBSZWFzc2lnbiB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgIHRoaXMuZGF0YSA9IHVwZGF0ZWREYXRhOyAvLyBTeW5jIHRoaXMuZGF0YVxuICAgICAgdGhpcy5jb21wdXRlU3VtbWFyeVZhbHVlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZURhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5kZWxldGVJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5kZWxldGVNb2RhbCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSAgYWZ0ZXIgY2xpY2tpbmcgeWVzIGluIGRlbGV0ZSBhbGVydCBtb2RhbCwgZW1pdCB0byBwYXJlbnRcbiAgZGVsZXRlUmVjb3JkRGF0YSgpIHtcbiAgICB0aGlzLm9uRGVsZXRlRGF0YS5lbWl0KHsgZGF0YTogdGhpcy5kZWxldGVEYXRhLCBhbGxEYXRhOiB0aGlzLmRhdGEgfSk7XG4gICAgdGhpcy5kZWxldGVNb2RhbCA9IGZhbHNlO1xuICB9XG5cbiAgLy9TS1MxNUZFQjI1IHRvIHNhdmUgdGhlIGVkaXRlZCBkYXRhIGluIHRhYmxlO1xuICBzYXZlQnV0dG9uKCkge1xuICAgIC8vIGVtaXR0aW5nIGFsbCBkYXRhIHdpdGggc2VsZWN0ZWQgZGF0YVxuICAgIHRoaXMuc2F2ZUJ1dHRvbkRhdGEuZW1pdCh7IHNlbGVjdGVkRGF0YTogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQsIGFsbERhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxuXG4gIC8vU0tTMTVGRUIyNSBwYXNzIHRoZSByZWplY3RlZCByZWFzb25cbiAgb25FZGl0KGRhdGE6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIGRhdGEuZWRpdFJvdyA9IHRydWU7IC8vIG1hZGUgZWRpdGluZyByb3cgYXMgdHJ1ZSAvLyAgc29sdmUgdW5kZWZpbmVkIGVycm9yIG9uIHN0cmluZ1xuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChkYXRhKTtcbiAgICB0aGlzLm9uRWRpdERhdGEuZW1pdCh7IGRhdGE6IGRhdGEsIGFsbERhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgdGFibGUgdG9wIGJ1dHRvbnMgZW1pdFxuICBjb21tb25CdXR0b25DbGljayhidXR0b246IGFueSkge1xuICAgIHRoaXMuYnV0dG9uRW1pdC5lbWl0KGJ1dHRvbik7XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXRyaWV2ZSBkYXRhIGZyb20gb2JqZWN0cy4gXG4gIC8vIEluICdlbGVtZW50JyB3ZSB3aWxsIHBhc3Mgb2JqZWN0IGFuZCBpbiAnY29sdW1uJyB3ZSB3aWxsIHBhc3MgcGF0aCBhcyBzdHJpbmcgZWcuZW1wbG95ZWUuZmluYW5jZUluZm9bMF0udWFuIHRvIHJldGlldmUgdWFuIHZhbHVlIFxuICBnZXRWYWx1ZShlbGVtZW50OiBhbnksIGNvbHVtbjogc3RyaW5nKSB7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFjb2x1bW4pIHtcbiAgICAgIHJldHVybiAnJzsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyBvciBudWxsIGlmIGVsZW1lbnQgb3IgY29sdW1uIGlzIGludmFsaWRcbiAgICB9XG4gICAgbGV0IGZsZHMgPSBjb2x1bW4uc3BsaXQoJy4nKTtcbiAgICBsZXQgY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc3BsaXRGbGRzID0gZmxkc1tpXS5zcGxpdCgnWycpO1xuICAgICAgaWYgKHNwbGl0Rmxkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbZmxkc1tpXV0gPz8gJyc7IC8vIFVzZSBudWxsaXNoIGNvYWxlc2NpbmcgdG8gaGFuZGxlIHVuZGVmaW5lZC9udWxsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgaW5kZXggPSBOdW1iZXIoc3BsaXRGbGRzWzFdLnNwbGl0KCddJylbMF0pO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtzcGxpdEZsZHNbMF1dPy5baW5kZXhdID8/ICcnOyAvLyBTYWZlbHkgYWNjZXNzIGFycmF5IGluZGV4XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gIC8vU0tTMTVGRUIyNSBoeXBlcmxpbmwgY29sdW1ucyBvbmx5IGVtaXR0ZWRcbiAgb25DbGlja0h5cGVybGluayhjb2x1bW46IGFueSwgZWxlbWVudDogYW55LCBpc0h5cGVyTGluazogYW55KSB7XG4gICAgaWYgKGlzSHlwZXJMaW5rKSB0aGlzLmh5cGVyTGlua0VtaXQuZW1pdCh7IGNvbHVtbjogY29sdW1uLCBlbGVtZW50OiBlbGVtZW50IH0pO1xuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSB0byBjaGVjayB3aGV0aGVyIHRoZSBoeXBlcmxpbmsgYWN0aW9uIGlzIHByZXNlbnQgaW4gdGhhdCBjb2x1bW5cbiAgY2hlY2tIeXBlcmxpbmtDaGVjayhjb2w6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh5cGVyTGlua0NvbHVtbnM/LmluY2x1ZGVzKGNvbCkgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IG9uIGFkZCByZWNvcmQgaW4gdGFibGUsIHRoZSAnaW5saW5lRWxlbWVudCcgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIHRhYmxlIGRhdGEgXG4gIGFkZFRhYmxlUmVjb3JkKGVsZW1lbnQ6IGFueSxmcm9tPzphbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWdQYWdpbmF0aW9uID09PSBmYWxzZSB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IHRoaXMudG90YWxSZWNvcmRzKSB7XG4gICAgICB2YXIgb2JqOiBhbnkgPSB7fTtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcbiAgICAgIGtleXMuZm9yRWFjaCgoZWxlbWVudEtleTogYW55KSA9PiB7XG4gICAgICAgIG9ialtlbGVtZW50S2V5XSA9ICcnO1xuICAgICAgfSk7XG4gICAgICAvLyBTS1MyME1BUjI1IENvbXB1dGUgc3VtbWFyeSBjb2x1bW5zIGZvciB0aGUgbmV3IHJvd1xuICAgICAgaWYgKHRoaXMuc3VtbWFyeUNvbHVtbnMgJiYgdGhpcy5zdW1tYXJ5Q29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc3VtbWFyeUNvbHVtbnMuZm9yRWFjaChzdW1tYXJ5Q29sID0+IHtcbiAgICAgICAgICBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VtJyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBzdW0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnJlZHVjZSgoYWNjLCBvcGVyYW5kKSA9PiBhY2MgKyAoTnVtYmVyKG9ialtvcGVyYW5kXSkgfHwgMCksIDApO1xuICAgICAgICAgICAgb2JqW3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ3N1YnRyYWN0JyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBzdW0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnJlZHVjZSgoYWNjLCBvcGVyYW5kKSA9PiBhY2MgLSAoTnVtYmVyKG9ialtvcGVyYW5kXSkgfHwgMCksIDApO1xuICAgICAgICAgICAgb2JqW3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhdGlvbiA9PT0gJ211bHRpcGx5JyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzKSB7XG4gICAgICAgICAgICBjb25zdCBzdW0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnJlZHVjZSgoYWNjLCBvcGVyYW5kKSA9PiBhY2MgKiAoTnVtYmVyKG9ialtvcGVyYW5kXSkgfHwgMCksIDApO1xuICAgICAgICAgICAgb2JqW3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoc3VtbWFyeUNvbC50eXBlID09PSAnY2FsY3VsYXRpb24nICYmIHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VidHJhY3QnICYmIHN1bW1hcnlDb2wub3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1bSA9IHN1bW1hcnlDb2wub3BlcmFuZHMuc2xpY2UoMSkucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBvcGVyYW5kKSA9PiBhY2MgLSAoTnVtYmVyKG9ialtvcGVyYW5kXSkgfHwgMCksXG4gICAgICAgICAgICAgIE51bWJlcihvYmpbc3VtbWFyeUNvbC5vcGVyYW5kc1swXV0pIHx8IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBvYmpbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChzdW1tYXJ5Q29sLnR5cGUgPT09ICdjYWxjdWxhdGlvbicgJiYgc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdtdWx0aXBseScgJiYgc3VtbWFyeUNvbC5vcGVyYW5kcykge1xuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBvcGVyYW5kKSA9PiBhY2MgKiAoTnVtYmVyKG9ialtvcGVyYW5kXSkgfHwgMCksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBvYmpbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gcHJvZHVjdDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhLnB1c2gob2JqKTtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZGF0YTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcblxuICAgICAgaWYgKHRoaXMuc3RpY2t5Q29sdW1uID09PSB0cnVlICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucykge1xuICAgICAgICB0aGlzLnN0aWNreUNvbmRpdGlvbiA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGlja3lDb25kaXRpb24gPSB0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCArIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTBcbiAgICAgIHRoaXMudG90YWxDb3VudCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICAgIHRoaXMuZmlsdGVyVGFibGVOb3MgKz0gMSBcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gTWF0aC5jZWlsKHRoaXMudG90YWxDb3VudCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgY29uc3Qgc3RhcnQgPSAoTnVtYmVyKHRoaXMucGFnZUluZGV4KSAtIDEpICogTnVtYmVyKHRoaXMucGFnZVNpemUpO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgICBpZiAoIXRoaXMuaXNQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YT8uc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QodGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXSk7XG4gICAgICB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdLmVkaXRSb3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyAxMCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnTnh0RGF0YVRhYmxlJywgSlNPTi5zdHJpbmdpZnkoeyBhZGRSZWNvcmQ6IHRydWUsIHBhZ2VTaXplOiAxMCwgcGFnZUluZGV4OiBwYWdlSW5kZXgsIGN1cnJlbnRTb3J0Q29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBjdXJyZW50U29ydERpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiB9KSk7XG4gICAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiAxMCwgcGFnZUluZGV4OiBwYWdlSW5kZXggfSwgdGFibGVTZWFyY2g6IHsgZmllbGRzOiB0aGlzLmRpc3BsYXllZENvbHVtbnMsIHZhbHVlOiB0aGlzLnNlYXJjaEJveFZhbHVlIH0sIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9IH0pXG4gICAgfVxuICAgIHRoaXMuY29tcHV0ZVN1bW1hcnlWYWx1ZXMoZnJvbSk7XG4gICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlUGFyYW1zRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCB9LHRhYmxlU2VhcmNoOiB0aGlzLnNlYXJjaEJveFZhbHVlLCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fX0pXG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IEFjdGlvbiBidXR0b24gY29uZGl0aW9uYWxseSBkaXNwbGF5ZWQgZnVuY3Rpb25cbiAgaXNDb25kaXRpb25NZXQoZWxlbWVudDogYW55LCBjb25kaXRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoY29uZGl0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IGFuZENvbmRpdGlvbkxpc3QsIG9yQ29uZGl0aW9uTGlzdCB9ID0gY29uZGl0aW9ucztcbiAgICAgIC8vICBJZiBhbmRDb25kaXRpb25MaXN0IGV4aXN0cywgY2hlY2sgdGhhdCBhbGwgY29uZGl0aW9ucyBhcmUgbWV0XG4gICAgICBjb25zdCBpc0FuZENvbmRpdGlvbk1ldCA9IGFuZENvbmRpdGlvbkxpc3QgPyBhbmRDb25kaXRpb25MaXN0LmV2ZXJ5KChjb25kOiB7IGNvbmRpdGlvbjogc3RyaW5nIHwgYW55W107IGNvbHVtbjogc3RyaW5nIHwgbnVtYmVyOyB9KSA9PlxuICAgICAgICBjb25kLmNvbmRpdGlvbi5pbmNsdWRlcyhlbGVtZW50W2NvbmQuY29sdW1uXSlcbiAgICAgICkgOiB0cnVlOyAvLyAgSWYgbm8gYW5kQ29uZGl0aW9uTGlzdCwgY29uc2lkZXIgaXQgYXMgYWx3YXlzIG1ldFxuICAgICAgLy8gIElmIG9yQ29uZGl0aW9uTGlzdCBleGlzdHMsIGNoZWNrIGlmIGF0IGxlYXN0IG9uZSBjb25kaXRpb24gaXMgbWV0XG4gICAgICBjb25zdCBpc09yQ29uZGl0aW9uTWV0ID0gb3JDb25kaXRpb25MaXN0ID8gb3JDb25kaXRpb25MaXN0LnNvbWUoKGNvbmQ6IHsgY29uZGl0aW9uOiBzdHJpbmcgfCBhbnlbXTsgY29sdW1uOiBzdHJpbmcgfCBudW1iZXI7IH0pID0+XG4gICAgICAgIGNvbmQuY29uZGl0aW9uLmluY2x1ZGVzKGVsZW1lbnRbY29uZC5jb2x1bW5dKVxuICAgICAgKSA6IHRydWU7IC8vICBJZiBubyBvckNvbmRpdGlvbkxpc3QsIGNvbnNpZGVyIGl0IGFzIGFsd2F5cyBtZXRcbiAgICAgIC8vICBSZXR1cm4gdHJ1ZSBpZiB0aGUgQU5EIGNvbmRpdGlvbiBpcyBtZXQgYW5kIHRoZSBPUiBjb25kaXRpb24gaXMgbWV0XG4gICAgICByZXR1cm4gaXNBbmRDb25kaXRpb25NZXQgJiYgaXNPckNvbmRpdGlvbk1ldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBDaGVjayBpZiB0aGUgY29sdW1uIGlzIGEgZGF0ZSBjb2x1bW5cbiAgaXNEYXRlQ29sdW1uKGNvbHVtbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZUNvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbikgPz8gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IENoZWNrIGlmIHRoZSBjb2x1bW4gaXMgYSB0aW1lIGNvbHVtblxuICBpc1RpbWVDb2x1bW4oY29sdW1uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aW1lQ29sdW1ucz8uaW5jbHVkZXMoY29sdW1uKSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgY29uZmlnIHNlYXJjaCBmaWx0ZXIgYm94IGZ1bmN0aW9uXG4gIG9uU2VhcmNoKGV2ZW50OiBhbnksZnJvbT86YW55KSB7XG4gICAgdGhpcy5zZWFyY2hCb3hWYWx1ZSA9IGV2ZW50OyAvLyBVcGRhdGUgdGhlIGRpc3BsYXllZCB2YWx1ZSBpbiB0aGUgc2VhcmNoIGJveFxuICAgIGlmICh0aGlzLnNlYXJjaENvbmZpZ3MgfHwgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSB0aGlzLnRvdGFsUmVjb3Jkcykge1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTBcbiAgICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogTnVtYmVyKHRoaXMucGFnZUluZGV4KSB9LCB0YWJsZVNlYXJjaDogeyBmaWVsZHM6IHRoaXMuZGlzcGxheWVkQ29sdW1ucywgdmFsdWU6IHRoaXMuc2VhcmNoQm94VmFsdWUgfSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld30gfSlcbiAgICB9XG4gICAgaWYoZnJvbSAhPT0gJ29uQ2hhbmdlJyl0aGlzLk54dFRhYmxlUGFyYW1zRW1pdC5lbWl0KHsgcGFnaW5hdGlvbjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCB9LHRhYmxlU2VhcmNoOiB0aGlzLnNlYXJjaEJveFZhbHVlLCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fX0pXG4gIH1cblxuICAvLyBTS1MxNUZFQjI1IElmIHRoZSB2YWx1ZSBpbiB0aGUgc2VhcmNoIGJveCBpcyBlbXB0eSwgY2FsbCB0aGUgb25TZWFyY2ggZnVuY3Rpb24gYXV0b21hdGljYWxseVxuICBlbXB0eVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKCFldmVudC50cmltKCkgJiYgKHRoaXMucHJldlNlYXJjaCAhPSBldmVudC50cmltKCkpKSB7XG4gICAgICB0aGlzLm9uU2VhcmNoKGV2ZW50KVxuICAgIH1cbiAgICB0aGlzLnByZXZTZWFyY2ggPSBldmVudC50cmltKClcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgaW5mb1NpZGVzY3JlZW4gZW1pdCBcbiAgb25TaWRlTmF2SW5mb0NsaWNrKGRhdGE6IGFueSwgY29sOiBhbnkpIHtcbiAgICB0aGlzLnNpZGVOYXZFbWl0LmVtaXQoe1xuICAgICAgZGF0YSwgY29sLFxuICAgICAgY29uZmlnOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBmb3IgYWN0aXZlIGNvbHVtbiBzZWxlY3RcbiAgb25Db2x1bW5DbGljayhjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlQ29sdW1uID0gY29sdW1uO1xuICAgIGlmICghdGhpcy5pc0VkaXRhYmxlKSB7XG4gICAgICAvLyBFeGlzdGluZyBzb3J0L2ZpbHRlciBsb2dpY1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBudWxsO1xuICAgICAgdGhpcy5jb2x1bW5TZWxlY3RlZC5lbWl0KG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgY29uc3QgY29sdW1uRGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLm1hcChyb3cgPT4gKHtcbiAgICAgICAgdmFsdWU6IHJvd1tjb2x1bW5dLFxuICAgICAgICBpZDogcm93LmlkIC8vIG9yIHVuaXF1ZSBpZGVudGlmaWVyXG4gICAgICB9KSk7XG4gICAgICB0aGlzLmNvbHVtblNlbGVjdGVkLmVtaXQoeyBjb2x1bW4sIGRhdGE6IGNvbHVtbkRhdGEgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSBmb3IgY2xvc2Ugc2VhcmNoIGZpbHRlciBib3hcbiAgY2xvc2VmaWx0ZXIoZnJvbT86YW55KSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMucGFnZVNpemUgfHwgMTBcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLmZpbHRlckRhdGFBcnJheVt0aGlzLnNlbGVjdGVkRmlsdGVyXSA9IFtdXG4gICAgdGhpcy5pc1Jlc2l6ZWQgPSBmYWxzZVxuICAgIGlmICh0aGlzLmNvbmZpZ1BhZ2luYXRpb24gPT09IGZhbHNlIHx8IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA9PT0gdGhpcy50b3RhbFJlY29yZHMpIHtcbiAgICAgIHRoaXMuZmlsdGVyUmV0YWluKHRoaXMuZmlsdGVyRGF0YUFycmF5KVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiAxMCwgcGFnZUluZGV4OiAxIH0sIHRhYmxlU2VhcmNoOiB7IGZpZWxkczogdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB2YWx1ZTogdGhpcy5zZWFyY2hCb3hWYWx1ZSB9LCBzZWFyY2hGaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckRhdGFBcnJheSwgc29ydDogeyBjb2x1bW46IHRoaXMuY3VycmVudFNvcnRDb2x1bW4sIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiAsbGlzdFZpZXc6IHRoaXMuc2VsZWN0ZWRWaWV3fSB9KVxuICAgIH1cbiAgICBpZihmcm9tICE9PSAnb25DaGFuZ2UnKXRoaXMuTnh0VGFibGVQYXJhbXNFbWl0LmVtaXQoeyBwYWdpbmF0aW9uOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLCBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4IH0sdGFibGVTZWFyY2g6IHRoaXMuc2VhcmNoQm94VmFsdWUsIHNlYXJjaEZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRGF0YUFycmF5LCBzb3J0OiB7IGNvbHVtbjogdGhpcy5jdXJyZW50U29ydENvbHVtbiwgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uICxsaXN0VmlldzogdGhpcy5zZWxlY3RlZFZpZXd9fSlcbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgc2VhcmNoIGZpbHRlciBib3ggY2hlY2tib3ggcmV0YWluXG4gIGlzU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmZpbHRlckRhdGFBcnJheVt0aGlzLnNlbGVjdGVkRmlsdGVyXSAmJiB0aGlzLmZpbHRlckRhdGFBcnJheVt0aGlzLnNlbGVjdGVkRmlsdGVyXS5pbmNsdWRlcyhldmVudCkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgc2VhcmNoIGZpbHRlciBib3ggY2hlY2tib3ggc2VsZWN0XG4gIGNoZWNrZWREYXRhKGV2ZW50OiBhbnksZnJvbT86YW55KSB7XG4gICAgY29uc29sZS5sb2coXCJjaGVja2VkRGF0YVwiLGV2ZW50KVxuICAgIGxldCBzZWxlY3RlZEFycmF5ID0gW11cbiAgICBzZWxlY3RlZEFycmF5ID0gdGhpcy5maWx0ZXJEYXRhQXJyYXlbdGhpcy5zZWxlY3RlZEZpbHRlcl0gPyB0aGlzLmZpbHRlckRhdGFBcnJheVt0aGlzLnNlbGVjdGVkRmlsdGVyXSA6IFtdXG4gICAgaWYgKHNlbGVjdGVkQXJyYXkgJiYgc2VsZWN0ZWRBcnJheS5pbmNsdWRlcyhldmVudCkpIHtcbiAgICAgIHNlbGVjdGVkQXJyYXkgPSBzZWxlY3RlZEFycmF5LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtICE9PSBldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkQXJyYXkucHVzaChldmVudCk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyRGF0YUFycmF5W3RoaXMuc2VsZWN0ZWRGaWx0ZXJdID0gc2VsZWN0ZWRBcnJheVxuICAgIHRoaXMuaXNSZXNpemVkID0gc2VsZWN0ZWRBcnJheT8ubGVuZ3RoID4gMFxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggIT09IHRoaXMudG90YWxSZWNvcmRzICYmIHRoaXMuY29uZmlnUGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTBcbiAgICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZUVtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogTnVtYmVyKHRoaXMucGFnZUluZGV4KSB9LCB0YWJsZVNlYXJjaDogeyBmaWVsZHM6IHRoaXMuZGlzcGxheWVkQ29sdW1ucywgdmFsdWU6IHRoaXMuc2VhcmNoQm94VmFsdWUgfSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld30gfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJSZXRhaW4odGhpcy5maWx0ZXJEYXRhQXJyYXkpXG4gICAgfVxuICAgIGlmKGZyb20gIT09ICdvbkNoYW5nZScpdGhpcy5OeHRUYWJsZVBhcmFtc0VtaXQuZW1pdCh7IHBhZ2luYXRpb246IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXggfSx0YWJsZVNlYXJjaDogdGhpcy5zZWFyY2hCb3hWYWx1ZSwgc2VhcmNoRmlsdGVyRGF0YTogdGhpcy5maWx0ZXJEYXRhQXJyYXksIHNvcnQ6IHsgY29sdW1uOiB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uLCBkaXJlY3Rpb246IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gLGxpc3RWaWV3OiB0aGlzLnNlbGVjdGVkVmlld319KVxuICB9XG5cbiAgLy8gU0tTMTVGRUIyNSAgYWN0aW9uIGNvbHVtbiBkcm9wZG93biBidXR0b25zIGNsb3NlXG4gIHByaXZhdGUgYWRkQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudE9wZW5JbmRleCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vU0tTMTVGRUIyNSBpZiBjbG9zZSB0aGUgZHJvcGRvd24gbWVudSBzdG9wIHRoZSBjbGljayBsaXN0ZW5lclxuICBwcml2YXRlIHJlbW92ZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja0xpc3RlbmVyKCk7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzE1RkVCMjUgIGFjdGlvbiBjb2x1bW4gZHJvcGRvd24gYnV0dG9ucyBvcGVuIC8gY2xvc2VcbiAgdG9nZ2xlRHJvcGRvd24oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudE9wZW5JbmRleCA9IHRoaXMuY3VycmVudE9wZW5JbmRleCA9PT0gaW5kZXggPyBudWxsIDogaW5kZXg7XG4gICAgdGhpcy5hZGRDbGlja091dHNpZGVMaXN0ZW5lcigpO1xuICB9XG5cbiAgLy9TS1MxNUZFQjI1IGFjdGlvbiBidXR0b24gZXZudCBlbWl0XG4gIGFjdGlvbkJ1dHRvbkNsaWNrZWQoZXZlbnQ6IGFueSwgZGF0YTogYW55KSB7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25FbWl0LmVtaXQoeyBldmVudCwgZGF0YSB9KVxuICB9XG5cbiAgcmVtb3ZlQ29sKGNvbHVtbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IG51bGw7XG4gICAgLy8gRW1pdCBkZXNlbGVjdGlvblxuICAgIGlmICghdGhpcy5pc0VkaXRhYmxlKSB7XG4gICAgICAvLyBFeGlzdGluZyBzb3J0L2ZpbHRlciBsb2dpY1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbkRhdGEgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5tYXAocm93ID0+ICh7XG4gICAgICB2YWx1ZTogcm93W2NvbHVtbl0sXG4gICAgICBpZDogcm93LmlkIC8vIG9yIHVuaXF1ZSBpZGVudGlmaWVyXG4gICAgfSkpO1xuICAgIHRoaXMucmVtb3ZlQ29sdW1uLmVtaXQoeyBjb2x1bW4sIGRhdGE6IGNvbHVtbkRhdGEgfSk7XG5cbiAgfVxuICBlbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHVwZGF0ZWRUYWJsZURhdGEpO1xuICB9XG5cbiAgdXBkYXRlRWRpdChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBlbGVtZW50OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB0aGlzLnVwZGF0ZVZhbHVlKGVsZW1lbnQsIGNvbHVtbiwgdmFsdWUpO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuXG4gICAgLy8gU0tTMjBNQVIyNSBFbnN1cmUgdGhpcy5kYXRhIGlzIHVwZGF0ZWQgc2luY2Ugc3VtbWFyeSB1c2VzIHRoZSBmdWxsIGRhdGFzZXRcbiAgICBjb25zdCBkYXRhSW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0gPT09IGVsZW1lbnQpO1xuICAgIGlmIChkYXRhSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmRhdGFbZGF0YUluZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgIH1cbiAgICAvLyBSZWNvbXB1dGUgc3VtbWFyeSBjb2x1bW5zIGZvciB0aGUgdXBkYXRlZCByb3dcbiAgICBpZiAodGhpcy5zdW1tYXJ5Q29sdW1ucyAmJiB0aGlzLnN1bW1hcnlDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc3VtbWFyeUNvbHVtbnMuZm9yRWFjaChzdW1tYXJ5Q29sID0+IHtcbiAgICAgICAgaWYgKHN1bW1hcnlDb2wudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJyAmJiBzdW1tYXJ5Q29sLm9wZXJhbmRzICYmIHN1bW1hcnlDb2wub3BlcmFuZHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VtJykge1xuICAgICAgICAgICAgdXBkYXRlZEVsZW1lbnRbc3VtbWFyeUNvbC5maWVsZE5hbWVdID0gc3VtbWFyeUNvbC5vcGVyYW5kcy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2MsIG9wZXJhbmQpID0+IGFjYyArIChOdW1iZXIodXBkYXRlZEVsZW1lbnRbb3BlcmFuZF0pIHx8IDApLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3VtbWFyeUNvbC5vcGVyYXRpb24gPT09ICdtdWx0aXBseScpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRFbGVtZW50W3N1bW1hcnlDb2wuZmllbGROYW1lXSA9IHN1bW1hcnlDb2wub3BlcmFuZHMucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBvcGVyYW5kKSA9PiBhY2MgKiAoTnVtYmVyKHVwZGF0ZWRFbGVtZW50W29wZXJhbmRdKSB8fCAwKSwgIC8vIFN0YXJ0IHdpdGggMSBpbnN0ZWFkIG9mIDBcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN1bW1hcnlDb2wub3BlcmF0aW9uID09PSAnc3VidHJhY3QnKSB7XG4gICAgICAgICAgICB1cGRhdGVkRWxlbWVudFtzdW1tYXJ5Q29sLmZpZWxkTmFtZV0gPSBzdW1tYXJ5Q29sLm9wZXJhbmRzLnNsaWNlKDEpLnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgb3BlcmFuZCkgPT4gYWNjIC0gKE51bWJlcih1cGRhdGVkRWxlbWVudFtvcGVyYW5kXSkgfHwgMCksXG4gICAgICAgICAgICAgIE51bWJlcih1cGRhdGVkRWxlbWVudFtzdW1tYXJ5Q29sLm9wZXJhbmRzWzBdXSkgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFbaW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgICBpZiAoZGF0YUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmRhdGFbZGF0YUluZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YVtpbmRleF0gPSB0aGlzLnVwZGF0ZVZhbHVlKGVsZW1lbnQsIGNvbHVtbiwgdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmNvbXB1dGVTdW1tYXJ5VmFsdWVzKCk7XG4gIH1cbiAgLy8gU0tTMThNQVIyNSB1cGRhdGUgZWxlbWVudFxuICB1cGRhdGVWYWx1ZShlbGVtZW50OiBhbnksIGNvbHVtbjogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZsZHMgPSBjb2x1bW4/LnNwbGl0KCcuJyk7XG4gICAgbGV0IG9iaiA9IGVsZW1lbnQ7IC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBvYmplY3RcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmxkcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGxldCBzcGxpdEZsZHMgPSBmbGRzW2ldLnNwbGl0KCdbJyk7XG4gICAgICBpZiAoc3BsaXRGbGRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBvYmogPSBvYmpbZmxkc1tpXV0gfHwgKG9ialtmbGRzW2ldXSA9IHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpbmRleCA9IE51bWJlcihzcGxpdEZsZHNbMV0uc3BsaXQoJ10nKVswXSk7XG4gICAgICAgIG9iaiA9IG9ialtzcGxpdEZsZHNbMF1dIHx8IChvYmpbc3BsaXRGbGRzWzBdXSA9IFtdKTtcbiAgICAgICAgb2JqID0gb2JqW2luZGV4XSB8fCAob2JqW2luZGV4XSA9IHt9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGZpbmFsIHByb3BlcnR5XG4gICAgbGV0IGxhc3RLZXkgPSBmbGRzW2ZsZHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IHNwbGl0TGFzdEtleSA9IGxhc3RLZXkuc3BsaXQoJ1snKTtcbiAgICBpZiAoc3BsaXRMYXN0S2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgb2JqW2xhc3RLZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbmRleCA9IE51bWJlcihzcGxpdExhc3RLZXlbMV0uc3BsaXQoJ10nKVswXSk7XG4gICAgICBvYmpbc3BsaXRMYXN0S2V5WzBdXVtpbmRleF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGV4cGVuc2VBdHRhY2htZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVFbWl0LmVtaXQoZXZlbnQpXG4gIH1cbiAgbGlzdFZpZXdFbWl0KGV2ZW50KXtcbiAgICBpZihldmVudC5hY3Rpb24gPT09ICdmaWx0ZXJHZXQnKXtcbiAgICAgIGV2ZW50WydkYXRhJ109IHRoaXMuZmlsdGVyQ29sdW1uc1xuICAgICAgaWYoIXRoaXMudGFibGVGaWx0ZXJEYXRhIHx8IHRoaXMudGFibGVGaWx0ZXJEYXRhLmxlbmd0aCA9PT0gMCl7XG4gICAgICAgIHRoaXMuTnh0VGFibGVGaWx0ZXJFbWl0LmVtaXQoZXZlbnQpXG4gICAgICB9XG4gICAgfSBlbHNleyBcbiAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdzZWxlY3QnIHx8IGV2ZW50LmFjdGlvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gZXZlbnQuZGF0YS5maWx0ZXJOYW1lO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3RmlsdGVyID0gZXZlbnQuZGF0YTtcbiAgICAgICAgdGhpcy5uZ09uQ2hhbmdlcyh7fSlcbiAgICAgIH1cbiAgICAgIHRoaXMuTnh0VGFibGVGaWx0ZXJFbWl0LmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtbGF5b3V0XCIgW2lkXT1cInRhYmxlSWRcIiBbbmdTdHlsZV09XCJ7J3BhZGRpbmctdG9wJzogJzFweCcsICd3aWR0aCc6IHRhYmxlV2lkdGh9XCIgW2Rpcl09XCJkaXJlY3Rpb25cIj5cbiAgICA8ZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRhYmxlLXRpdGxlIGFsaWduLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICB7e3RpdGxlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc05vc0luZGljYXRvciB8fCBzZWFyY2hCYXIgfHwgaXNCdXR0b25zXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMjBweDtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTS1MyNkFQUjI1IExpc3QgVmlldyBGaWx0ZXIgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1saXN0LXZpZXctZmlsdGVyICpuZ0lmPVwibGlzdFZpZXdzICYmIGxpc3RWaWV3cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpc3RWaWV3c109XCJsaXN0Vmlld3NcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWaWV3XT1cInNlbGVjdGVkVmlld1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXSA9ICdjb2x1bW5zJ1xuICAgICAgICAgICAgICAgICAgICBbdGFibGVGaWx0ZXJBcnJheV09XCJ0YWJsZUZpbHRlckFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgKGxpc3RWaWV3RW1pdCk9XCJsaXN0Vmlld0VtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWxpc3Qtdmlldy1maWx0ZXI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIighbGlzdFZpZXdzIHx8IGxpc3RWaWV3cy5sZW5ndGggPT09IDApICYmIGlzTm9zSW5kaWNhdG9yXCIgY2xhc3M9XCJub09mUmVjXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1lbmQ7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDsgbWFyZ2luLXJpZ2h0OiA1cHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vcyA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogcmdiKDQzLCA4NywgMjQ5KTtcIj57e3RvdGFsUmVjb3JkcyB8fCB0b3RhbENvdW50fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoQmFyXCIgY2xhc3M9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc2VhcmNoLWJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDIyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS42NDEzIDE5LjI1QzE2LjYzMjIgMTkuMjUgMjAuNjc4MSAxNS4zNTExIDIwLjY3ODEgMTAuNTQxN0MyMC42NzgxIDUuNzMyMTggMTYuNjMyMiAxLjgzMzMzIDExLjY0MTMgMS44MzMzM0M2LjY1MDQgMS44MzMzMyAyLjYwNDQ5IDUuNzMyMTggMi42MDQ0OSAxMC41NDE3QzIuNjA0NDkgMTUuMzUxMSA2LjY1MDQgMTkuMjUgMTEuNjQxMyAxOS4yNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNzg3NDg2XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxLjYyOTUgMjAuMTY2N0wxOS43MjcxIDE4LjMzMzNcIiBzdHJva2U9XCIjNzg3NDg2XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hDb25maWdzID8gZW1wdHlTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSkgOiBhcHBseUZpbHRlcigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlYXJjaEJveFZhbHVlIHx8ICcnXCIgI2lucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNlYXJjaENvbmZpZ3MgJiYgc2VhcmNoQmFyXCIgY2xhc3M9XCJjb25maWdTZWFyY2hcIiAoY2xpY2spPVwib25TZWFyY2goaW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCA1SDIwXCIgc3Ryb2tlPVwiI2ZmZmZmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCA4SDE3XCIgc3Ryb2tlPVwiI2ZmZmZmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMSAxMS41QzIxIDE2Ljc1IDE2Ljc1IDIxIDExLjUgMjFDNi4yNSAyMSAyIDE2Ljc1IDIgMTEuNUMyIDYuMjUgNi4yNSAyIDExLjUgMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjIgMjJMMjAgMjBcIiBzdHJva2U9XCIjZmZmZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCIgKm5nSWY9XCJpc0J1dHRvbnNcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogN3B4OyBnYXA6IDdweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbkFycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bnh0LWJ1dHRvbiBjbGFzcz1cImRhdGEtdGFibGUtZnNidG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja0VtaXQpPVwiKGJ1dHRvbi50eXBlID09PSAnZ3JvdXAnIHx8IGJ1dHRvbi50eXBlID09PSAnZHJvcGRvd24nKSA/IGNvbW1vbkJ1dHRvbkNsaWNrKCRldmVudCkgOiBjb21tb25CdXR0b25DbGljayhidXR0b24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJidXR0b24uY2xhc3NcIiBbYnV0dG9uVmFsdWVdPVwiYnV0dG9uLm5hbWVcIiBbYnV0dG9uQ29uZmlnXT1cImJ1dHRvbi5idXR0b25Db25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCIgY2xhc3M9XCJtcy0yIG1lLTJcIiBbYnRuSWNvbkxlZnRTcmNdPVwiYnV0dG9uLmJ0bkljb25MZWZ0U3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbWFnZVN2Z109XCJidXR0b24uaXNJbWFnZVN2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ueHQtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtbWFyZ2luXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGlzUGFnaW5hdGlvbiA/ICc0NTBweCcgOiAnYXV0bycgfVwiICN0YWJsZUNvbnRhaW5lclxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwodGFibGVDb250YWluZXIpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgVGFibGUgSGVhZGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiIFtuZ0NsYXNzXT1cInsgJ3NoYWRvdyc6IGlzU2Nyb2xsZWQgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgQ2hlY2tib3ggQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2l0aENoZWNrQm94XCIgY2xhc3M9XCJ0YWJsZS1jZWxsIHN0aWNreS1jb2x1bW4gaGVhZC1jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2hhbmdlKT1cIm1hc3RlclRvZ2dsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24/Lmhhc1ZhbHVlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbj8uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBEYXRhIENvbHVtbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjdXJyZW50RGlzcGxheWVkQ29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNlbGwgdGFibGVIZWFkZXIgaGVhZC1jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RpY2t5LWNvbHVtbl09XCJpID09PSAoc3RpY2t5Q29uZGl0aW9uIC0gMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZS1jb2x1bW5dPVwiYWN0aXZlQ29sdW1uID09PSBjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkLWNvbHVtbl09XCJtb2RlID09PSAnZWRpdCcgJiYgaXNFZGl0YWJsZSAmJiBzZWxlY3RlZENvbHVtbiA9PT0gY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uQ29sdW1uQ2xpY2soY29sdW1uKTsgY3VycmVudFNvcnRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbikgPyBzb3J0RGF0YShjb2x1bW4pIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZENvbHVtbiA9IGNvbHVtblwiIChtb3VzZWxlYXZlKT1cImhvdmVyZWRDb2x1bW4gPSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uRGl2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGQgY2xvc2UgYnV0dG9uIGZvciBzZWxlY3RlZCBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnZWRpdCcgJiYgaXNFZGl0YWJsZSAmJiBzZWxlY3RlZENvbHVtbiA9PT0gY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xvc2UtY29sdW1uLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2woY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImN1cnJlbnRIZWFkZXJMYWJlbHNbY3VycmVudERpc3BsYXllZENvbHVtbnMuaW5kZXhPZihjb2x1bW4pXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudEhlYWRlckxhYmVsc1tjdXJyZW50RGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbildIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjdXJyZW50RmlsdGVyQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZmlsdGVyKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDogMnB4O1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuNzUgMS4yNUgwLjc1TDQuNzUgNS43MTcyMlY4LjgwNTU2TDYuNzUgOS43NVY1LjcxNzIyTDEwLjc1IDEuMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzI0MjUzM1wiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgUmVkIGRvdCBmb3IgYWN0aXZlIGZpbHRlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVyRGF0YUFycmF5ICYmIGZpbHRlckRhdGFBcnJheVtjb2x1bW5dPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3g9XCI5XCIgY3k9XCIyXCIgcj1cIjIuNVwiIGZpbGw9XCJyZWRcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRTb3J0Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pXCIgY2xhc3M9XCJzb3J0LWluZGljYXRvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImN1cnJlbnRTb3J0Q29sdW1uID09PSBjb2x1bW5cIiBjbGFzcz1cInNvcnQtZGlyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICfihpEnIDogY3VycmVudFNvcnREaXJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09ICdkZXNjJyA/ICfihpMnIDogJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJob3ZlcmVkQ29sdW1uID09PSBjb2x1bW4gJiYgY3VycmVudFNvcnRDb2x1bW4gIT09IGNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic29ydC1kaXJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmlsdGVyICYmIGNvbHVtbiA9PT0gc2VsZWN0ZWRGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWNvbXBvbmVudCBwb3NpdGlvbi1hYnNvbHV0ZVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzZWFyY2hcIiBbY2xhc3MucmVzaXplZF09XCJpc1Jlc2l6ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzZWFyY2gtYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic2VhcmNoU3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDIyXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjY0MTMgMTkuMjVDMTYuNjMyMiAxOS4yNSAyMC42NzgxIDE1LjM1MTEgMjAuNjc4MSAxMC41NDE3QzIwLjY3ODEgNS43MzIxOCAxNi42MzIyIDEuODMzMzMgMTEuNjQxMyAxLjgzMzMzQzYuNjUwNCAxLjgzMzMzIDIuNjA0NDkgNS43MzIxOCAyLjYwNDQ5IDEwLjU0MTdDMi42MDQ0OSAxNS4zNTExIDYuNjUwNCAxOS4yNSAxMS42NDEzIDE5LjI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM3ODc0ODZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuNjI5NSAyMC4xNjY3TDE5LjcyNzEgMTguMzMzM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM3ODc0ODZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3aWR0aC0xMDBcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hpbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNSZXNpemVkXCIgKGNsaWNrKT1cImNsb3NlZmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsb3NlLWljb25cIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4xNjk5OCAxNC44M0wxNC44MyA5LjE3MDAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC44MyAxNC44M0w5LjE2OTk4IDkuMTcwMDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05IDIySDE1QzIwIDIyIDIyIDIwIDIyIDE1VjlDMjIgNCAyMCAyIDE1IDJIOUM0IDIgMiA0IDIgOVYxNUMyIDIwIDQgMjIgOSAyMlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRlbnRcIiBbc3R5bGVdPVwiJ292ZXJmbG93LXk6IGF1dG8nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJBcnJheSB8IHNlYXJjaEZpbHRlciA6IHNlYXJjaFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbWItMyBjaGVja2JveGRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImdhcDogNXB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChkYXRhKVwiIFt2YWx1ZV09XCJkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YVwiIChjaGFuZ2UpPVwiY2hlY2tlZERhdGEoZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0yIGxhYmVsLWRhdGFcIj57e2RhdGF9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZVwiPjwvZGl2PiA8IS0tU0tTMTVGRUIyNSBhcHBSb3dSZXNpemVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IEFjdGlvbiBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25CdXR0b24gfHwgaXNEZWxldGVSb3cgfHwgaXNFZGl0Um93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY2VsbCBoZWFkLWNvbG9yIGFjdGlvbkNvbCBzdGlja3ktY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMTJweCAhaW1wb3J0YW50O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3thY3Rpb25Db2x1bUhlYWRlcn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IFRhYmxlIEJvZHkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZGF0YVNvdXJjZS5kYXRhOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGVDbGljayhlbGVtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBDaGVja2JveCBDZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2l0aENoZWNrQm94XCIgY2xhc3M9XCJ0YWJsZS1jZWxsIHN0aWNreS1jb2x1bW4gYm9keS1jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXBhcmF0ZVJvd1NlbGVjdChzZWxlY3Rpb24udG9nZ2xlKGVsZW1lbnQpLCBlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZWxlbWVudC5pc1BheVByb2Nlc3NlZCA9PT0gdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgRGF0YSBDZWxscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zOyBsZXQgbGFzdCA9IGxhc3Q7IGVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY2VsbCBib2R5LWNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSBjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImh5cGVyTGlua0NvbHVtbnM/LmluY2x1ZGVzKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZUNvbHVtbihjb2x1bW4pOyBlbHNlIGNoZWNrVGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DbGlja0h5cGVybGluayhjb2x1bW4sZWxlbWVudCwgY2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NoZWNrSHlwZXJsaW5rQ2hlY2soY29sdW1uKSA/ICcgaHlwZXItbGluayBjbGlja2FibGUgJyA6ICcnfX0gZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7e3Jvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCd9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKCctJyB8IGdldFZhbHVlOiBlbGVtZW50IDogY29sdW1uKSB8IGRhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja1RpbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUaW1lQ29sdW1uKGNvbHVtbik7IGVsc2UgZGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uQ2xpY2tIeXBlcmxpbmsoY29sdW1uLGVsZW1lbnQsIGNoZWNrSHlwZXJsaW5rQ2hlY2soY29sdW1uKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pID8gJyBoeXBlci1saW5rIGNsaWNrYWJsZSAnIDogJyd9fSBlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7e3Jvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCd9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICgnLScgfCBnZXRWYWx1ZTogZWxlbWVudCA6IGNvbHVtbikgfCB0aW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DbGlja0h5cGVybGluayhjb2x1bW4sZWxlbWVudCwgY2hlY2tIeXBlcmxpbmtDaGVjayhjb2x1bW4pKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NoZWNrSHlwZXJsaW5rQ2hlY2soY29sdW1uKSA/ICcgaHlwZXItbGluayBjbGlja2FibGUgJyA6ICcnfX0gZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7e3Jvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCd9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJy0nIHwgZ2V0VmFsdWU6IGVsZW1lbnQgOiBjb2x1bW4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSByaWdodG5hdiBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYmplY3RDb2x1bW5zPy5pbmNsdWRlcyhjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXMtMlwiIChjbGljayk9XCJvblNpZGVOYXZJbmZvQ2xpY2soZWxlbWVudCwgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAwMDMzIDExLjgzMzRDMi43Nzg2NiAxMS44MzM0IDAuMTY2OTkyIDkuMjIxNzEgMC4xNjY5OTIgNi4wMDAwOEMwLjE2Njk5MiAyLjc3ODQyIDIuNzc4NjYgMC4xNjY3NDggNi4wMDAzMyAwLjE2Njc0OEM5LjIyMTk2IDAuMTY2NzQ4IDExLjgzMzcgMi43Nzg0MiAxMS44MzM3IDYuMDAwMDhDMTEuODMzNyA5LjIyMTcxIDkuMjIxOTYgMTEuODMzNCA2LjAwMDMzIDExLjgzMzRaTTUuNDE2OTkgNS40MTY3NVY4LjkxNjc1SDYuNTgzNjZWNS40MTY3NUg1LjQxNjk5Wk01LjQxNjk5IDMuMDgzNDFWNC4yNTAwOEg2LjU4MzY2VjMuMDgzNDFINS40MTY5OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQzNDU1NVwiIGZpbGwtb3BhY2l0eT1cIjAuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRDb2x1bW4/LmluY2x1ZGVzKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjaGVja0h5cGVybGlua0NoZWNrKGNvbHVtbikgJiYgIWZpbGVDb2x1bW5zPy5pbmNsdWRlcyhjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7e3Jvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCd9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEYXRlQ29sdW1uKGNvbHVtbik7IGVsc2UgY2hlY2tUaW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyBnZXRWYWx1ZShlbGVtZW50LGNvbHVtbikgfCBkYXRlIH19IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICgnLScgfCBnZXRWYWx1ZTogZWxlbWVudCA6IGNvbHVtbikgfCBkYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tUaW1lPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RpbWVDb2x1bW4oY29sdW1uKTsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3sgZ2V0VmFsdWUoZWxlbWVudCxjb2x1bW4pIHwgdGltZSB9fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKCctJyB8IGdldFZhbHVlOiBlbGVtZW50IDogY29sdW1uKSB8IHRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyBnZXRWYWx1ZShlbGVtZW50LGNvbHVtbil9fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnLScgfCBnZXRWYWx1ZTogZWxlbWVudCA6IGNvbHVtbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IHJpZ2h0bmF2IGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYmplY3RDb2x1bW5zPy5pbmNsdWRlcyhjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1zLTJcIiAoY2xpY2spPVwib25TaWRlTmF2SW5mb0NsaWNrKGVsZW1lbnQsIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDAwMzMgMTEuODMzNEMyLjc3ODY2IDExLjgzMzQgMC4xNjY5OTIgOS4yMjE3MSAwLjE2Njk5MiA2LjAwMDA4QzAuMTY2OTkyIDIuNzc4NDIgMi43Nzg2NiAwLjE2Njc0OCA2LjAwMDMzIDAuMTY2NzQ4QzkuMjIxOTYgMC4xNjY3NDggMTEuODMzNyAyLjc3ODQyIDExLjgzMzcgNi4wMDAwOEMxMS44MzM3IDkuMjIxNzEgOS4yMjE5NiAxMS44MzM0IDYuMDAwMzMgMTEuODMzNFpNNS40MTY5OSA1LjQxNjc1VjguOTE2NzVINi41ODM2NlY1LjQxNjc1SDUuNDE2OTlaTTUuNDE2OTkgMy4wODM0MVY0LjI1MDA4SDYuNTgzNjZWMy4wODM0MUg1LjQxNjk5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQzNDU1NVwiIGZpbGwtb3BhY2l0eT1cIjAuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMThNQVIyNSBmaWxlIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbGVDb2x1bW5zPy5pbmNsdWRlcyhjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7eyByb3dUZXh0U2l6ZSA/IHJvd1RleHRTaXplIDogJzEzcHgnIH19OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3BvdmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdmVyLWJhc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTQgMTZcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMgNy43ODUyNUw3LjA0ODU5IDEzLjc2MDJDNi44MTc2NyAxMy45OTQ1IDYuNTQyMTcgMTQuMTgwNSA2LjIzODE5IDE0LjMwNzZDNS45MzQyIDE0LjQzNDYgNS42MDc4NCAxNC41IDUuMjc4MTcgMTQuNUM0Ljk0ODQ5IDE0LjUgNC42MjIxMyAxNC40MzQ2IDQuMzE4MTQgMTQuMzA3NkM0LjAxNDE2IDE0LjE4MDUgMy43Mzg2NiAxMy45OTQ1IDMuNTA3NzQgMTMuNzYwMkwxLjcyNzMyIDExLjk1NzhDMS4yNjEyNCAxMS40ODY0IDEgMTAuODUxNiAxIDEwLjE5MDJDMSA5LjUyODc2IDEuMjYxMjQgOC44OTM4OCAxLjcyNzMyIDguNDIyNTdMOC4wNjg4MyAyLjA4OTEzQzguMjU0OCAxLjkwMjQ1IDguNDc2MDUgMS43NTQyOSA4LjcxOTgzIDEuNjUzMTdDOC45NjM2MSAxLjU1MjA2IDkuMjI1MDggMS41IDkuNDg5MTcgMS41QzkuNzUzMjUgMS41IDEwLjAxNDcgMS41NTIwNiAxMC4yNTg1IDEuNjUzMTdDMTAuNTAyMyAxLjc1NDI5IDEwLjcyMzUgMS45MDI0NSAxMC45MDk1IDIuMDg5MTNMMTEuNjE5NyAyLjc5NjE2QzExLjgwNzIgMi45ODEzMSAxMS45NTYgMy4yMDE1OSAxMi4wNTc2IDMuNDQ0MjlDMTIuMTU5MSAzLjY4Njk5IDEyLjIxMTQgMy45NDczMSAxMi4yMTE0IDQuMjEwMjNDMTIuMjExNCA0LjQ3MzE2IDEyLjE1OTEgNC43MzM0OCAxMi4wNTc2IDQuOTc2MThDMTEuOTU2IDUuMjE4ODggMTEuODA3MiA1LjQzOTE2IDExLjYxOTcgNS42MjQzMUw1Ljk5ODM0IDExLjI0MDhDNS45MDUzNSAxMS4zMzQxIDUuNzk0NzIgMTEuNDA4MiA1LjY3Mjg0IDExLjQ1ODdDNS41NTA5NSAxMS41MDkzIDUuNDIwMjEgMTEuNTM1MyA1LjI4ODE3IDExLjUzNTNDNS4xNTYxMiAxMS41MzUzIDUuMDI1MzkgMTEuNTA5MyA0LjkwMzUgMTEuNDU4N0M0Ljc4MTYxIDExLjQwODIgNC42NzA5OCAxMS4zMzQxIDQuNTc4IDExLjI0MDhMNC4yMjc5MSAxMC44ODIzQzQuMTM0MTYgMTAuNzg5NyA0LjA1OTc1IDEwLjY3OTUgNC4wMDg5NyAxMC41NTgyQzMuOTU4MTkgMTAuNDM2OCAzLjkzMjA1IDEwLjMwNjcgMy45MzIwNSAxMC4xNzUyQzMuOTMyMDUgMTAuMDQzOCAzLjk1ODE5IDkuOTEzNjEgNC4wMDg5NyA5Ljc5MjI2QzQuMDU5NzUgOS42NzA5MSA0LjEzNDE2IDkuNTYwNzcgNC4yMjc5MSA5LjQ2ODE5TDcuOTk4ODEgNS43NDM4MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDM0NTU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQb3BvdmVyIENvbnRlbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG92ZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHBlbnNlQ29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZWxlbWVudFtjb2x1bW5dXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZXhwZW5zZS1maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwZW5zZUF0dGFjaG1lbnQoZGF0YT8uZmlsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5maWxlTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgYWRkZWQgaW5wdXQgYm94IGZvciBpbmxpbmUgZWRpdCBpbnB1dC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0Q29sdW1uICYmIGVkaXRDb2x1bW4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiICgnLScgfCBlZGl0Q29sdW1uQ2hlY2s6IGNvbHVtbiA6IGVkaXRDb2x1bW4pID09PSAoJ3N0cmluZycpIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9uLWVkaXQgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI2VkaXRDb2xFbGVtZW50IGNsYXNzPVwibnh0LWxvcC1pbnB1dCB0YWJsZS13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdpbnB1dC1ib3gnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJlbGVtZW50LmVkaXRSb3cgPyAnRW50ZXInIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFZhbHVlKGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRWRpdChpLCRldmVudCwgZWxlbWVudCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiZWxlbWVudC5lZGl0Um93ID8gZmFsc2UgOiB0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBJbiB0YWJsZSwgbGlrZSB0ZXh0IGlucHV0LCBhZGRlZCBkcm9wIGRvd24gYW5kIHRpbWUgaW5wdXRzIGFzIHdlbGwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIgKCctJyB8IGVkaXRDb2x1bW5DaGVjazogY29sdW1uIDogZWRpdENvbHVtbikgPT09ICgnb2JqZWN0JykgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib24tZWRpdCBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiICgnLScgfCBlZGl0Q29sdW1uVHlwZTogY29sdW1uIDogZWRpdENvbHVtbikgPT09ICgndGV4dCcpIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2VkaXRDb2xFbGVtZW50IGNsYXNzPVwibnh0LWxvcC1pbnB1dCB0YWJsZS13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdpbnB1dC1ib3gnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJlbGVtZW50LmVkaXRSb3cgPyAnRW50ZXInIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFZhbHVlKGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRWRpdChpLCRldmVudCxlbGVtZW50LGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJlbGVtZW50LmVkaXRSb3cgPyBmYWxzZSA6IHRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiICgnLScgfCBlZGl0Q29sdW1uVHlwZTogY29sdW1uIDogZWRpdENvbHVtbikgPT09ICgndGltZScpIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIiBjbGFzcz1cIm54dC1sb3AtaW5wdXQgdGFibGUtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7eyByb3dUZXh0U2l6ZSA/IHJvd1RleHRTaXplIDogJzEzcHgnIH19OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFZhbHVlKGVsZW1lbnQsY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdpbnB1dC1ib3gnIDogJycgXCIgcGxhY2Vob2xkZXI9XCJISDptbTpzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRWRpdChpLCRldmVudCxlbGVtZW50LGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJlbGVtZW50LmVkaXRSb3cgPyBmYWxzZSA6IHRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiICgnLScgfCBlZGl0Q29sdW1uVHlwZTogY29sdW1uIDogZWRpdENvbHVtbikgPT09ICgnZHJvcGRvd24nKSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHR5cGU9XCJkcm9wZG93blwiICpuZ0lmPVwiZWxlbWVudC5lZGl0Um93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJueHQtbG9wLWlucHV0IHRhYmxlLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IHt7IHJvd1RleHRTaXplID8gcm93VGV4dFNpemUgOiAnMTNweCcgfX07IGNvbG9yOiB7e3Jvd1RleHRDb2xvciA/IHJvd1RleHRDb2xvciA6ICcjMmMzMTM3J319O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJlbGVtZW50LmVkaXRSb3cgPyAnaW5wdXQtYm94JyA6ICcnIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUVkaXQoaSwkZXZlbnQsZWxlbWVudCxjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW2Rpc2FibGVkXT1cImVsZW1lbnQuZWRpdFJvdyA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbXSB8IGVkaXRDb2x1bW5Ecm9wZG93bjogY29sdW1uIDogZWRpdENvbHVtbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGF0YS52YWx1ZSB8fCBkYXRhLm5hbWVcIj57e2RhdGEubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWVsZW1lbnQuZWRpdFJvd1wiICNlZGl0Q29sRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm54dC1sb3AtaW5wdXQgdGFibGUtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToge3sgcm93VGV4dFNpemUgPyByb3dUZXh0U2l6ZSA6ICcxM3B4JyB9fTsgY29sb3I6IHt7cm93VGV4dENvbG9yID8gcm93VGV4dENvbG9yIDogJyMyYzMxMzcnfX07XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuZWRpdFJvdyA/ICdpbnB1dC1ib3gnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZWxlbWVudC5lZGl0Um93ID8gJ0VudGVyJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VmFsdWUoZWxlbWVudCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRWRpdChpLCRldmVudCxlbGVtZW50LGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgQWN0aW9uIEJ1dHRvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25CdXR0b24gfHwgaXNEZWxldGVSb3cgfHwgaXNFZGl0Um93XCIgY2xhc3M9XCJ0YWJsZS1jZWxsIGFjdGlvbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbkJ1dHRvblwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IEVkaXQgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0VkaXRSb3dcIiBjbGFzcz1cImVpY29uLWNvbnRhaW5lclwiIG1hdFRvb2x0aXA9XCJFZGl0IFJlY29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMnB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjOyBib3JkZXItcmFkaXVzOiA1cHg7IG1hcmdpbi1sZWZ0OiAzcHg7IG1hcmdpbi1yaWdodDogM3B4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGVkaXQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDJweCA0cHg7IGJvcmRlci1yYWRpdXM6IDVweDsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cIm9uRWRpdChlbGVtZW50KVwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTA2NyA2LjA3MTc0TDkuOTI4MzMgNC44OTM0TDIuMTY2NjcgMTIuNjU1MVYxMy44MzM0SDMuMzQ1TDExLjEwNjcgNi4wNzE3NFpNMTIuMjg1IDQuODkzNEwxMy40NjMzIDMuNzE1MDdMMTIuMjg1IDIuNTM2NzRMMTEuMTA2NyAzLjcxNTA3TDEyLjI4NSA0Ljg5MzRaTTQuMDM1IDE1LjUwMDFIMC41VjExLjk2NDJMMTEuNjk1OCAwLjc2ODQwM0MxMS44NTIxIDAuNjEyMTc3IDEyLjA2NCAwLjUyNDQxNCAxMi4yODUgMC41MjQ0MTRDMTIuNTA2IDAuNTI0NDE0IDEyLjcxNzkgMC42MTIxNzcgMTIuODc0MiAwLjc2ODQwM0wxNS4yMzE3IDMuMTI1OUMxNS4zODc5IDMuMjgyMTggMTUuNDc1NyAzLjQ5NDEgMTUuNDc1NyAzLjcxNTA3QzE1LjQ3NTcgMy45MzYwNCAxNS4zODc5IDQuMTQ3OTYgMTUuMjMxNyA0LjMwNDI0TDQuMDM1ODMgMTUuNTAwMUg0LjAzNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzZDNzU3RFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IERlbGV0ZSBCdXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRGVsZXRlUm93XCIgY2xhc3M9XCJkaWNvbi1jb250YWluZXJcIiBtYXRUb29sdGlwPVwiRGVsZXRlIFJlY29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMnB4OyBib3JkZXI6IDFweCBzb2xpZCAjZmZiNWI1OyBib3JkZXItcmFkaXVzOiA1cHg7IG1hcmdpbi1sZWZ0OiAzcHg7IG1hcmdpbi1yaWdodDogM3B4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAycHggNHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZWVlZWQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJkZWxldGVSZWNvcmQoZWxlbWVudCxpKVwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiNGRjJDMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiNGRjJDMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVNLUzE1RkVCMjUgUmVuZGVyIGlubGluZSBidXR0b25zIHVwIHRvIFNpemUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGFjdGlvbkJ1dHRvbkFycmF5Py5idXR0b25BcnJheTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA8IGFjdGlvbkJ1dHRvbkFycmF5Py5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiIG1hcmdpbi1sZWZ0OiAzcHg7IG1hcmdpbi1yaWdodDogM3B4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQ29uZGl0aW9uTWV0KGVsZW1lbnQsIGJ1dHRvbi5jb25kaXRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPWJ1dHRvbi50b29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCIkZXZlbnQudGFyZ2V0LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgJyArIGJ1dHRvbi5ob3ZlckJvcmRlckNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCIkZXZlbnQudGFyZ2V0LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgJyArIGJ1dHRvbi5ib3JkZXJDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAycHg7IGJvcmRlci1yYWRpdXM6IHt7YnV0dG9uLmJvcmRlclJhZGl1c319cHg7ICBib3JkZXI6IDFweCBzb2xpZCB7e2J1dHRvbi5ib3JkZXJDb2xvcn19O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKG1vdXNlZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBidXR0b24uaG92ZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCIkZXZlbnQudGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJ1dHRvbi5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IHt7YnV0dG9uLnBhZGRpbmd9fXB4IHt7YnV0dG9uLnBhZGRpbmcgKyAyfX1weDsgYm9yZGVyLXJhZGl1czoge3tidXR0b24uYm9yZGVyUmFkaXVzfX1weDsgYmFja2dyb3VuZC1jb2xvcjoge3tidXR0b24uYmFja2dyb3VuZENvbG9yfX07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJidXR0b24uaWNvblNyY1wiICNpbWdFbGVtZW50IFtzcmNdPVwiYnV0dG9uLmljb25TcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaW1nRWxlbWVudC5zcmMgPSBidXR0b24uaG92ZXJJY29uU3JjIHx8IGJ1dHRvbi5pY29uU3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImltZ0VsZW1lbnQuc3JjID0gYnV0dG9uLmljb25TcmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcGRvd25BY3Rpb25CdXR0b24gJiYgZHJvcGRvd25BY3Rpb25CdXR0b24ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pbWdcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgbWFyZ2luLWxlZnQ6IDNweDsgbWFyZ2luLXJpZ2h0OiAzcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OyBwYWRkaW5nOiAycHggNHB4OyBib3JkZXItcmFkaXVzOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7IGJvcmRlci1yYWRpdXM6IDVweDsgYm9yZGVyOiAxcHggc29saWQgIzZjNzU3ZDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5Ljk5OTkgMjUuNjY2N0MyMy42ODE4IDI1LjY2NjcgMjYuNjY2NiAyMi42ODE5IDI2LjY2NjYgMTlDMjYuNjY2NiAxNS4zMTgxIDIzLjY4MTggMTIuMzMzNCAxOS45OTk5IDEyLjMzMzRDMTYuMzE4IDEyLjMzMzQgMTMuMzMzMyAxNS4zMTgxIDEzLjMzMzMgMTlDMTMuMzMzMyAyMi42ODE5IDE2LjMxOCAyNS42NjY3IDE5Ljk5OTkgMjUuNjY2N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1taXRlcmxpbWl0PVwiMTBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42NDY3IDE4LjE2TDIwLjAwMDEgMjAuNTA2N0wyMi4zNTM0IDE4LjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnJpZ2h0XT1cIigoYWN0aW9uQnV0dG9uQXJyYXk/LnNpemUgPz8gMCkgLSAoYWN0aW9uQnV0dG9uQXJyYXk/LmJ1dHRvbkFycmF5Py5zaXplID8/IDApICsgKGlzRWRpdFJvdyA/IDEgOiAwKSArIChpc0RlbGV0ZVJvdyA/IDEgOiAwKSArIChkcm9wZG93bkFjdGlvbkJ1dHRvbj8ubGVuZ3RoID4gMCA/IDEgOiAwKSkgKiAxMDAgKyAnJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50T3BlbkluZGV4ID09PSBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidG4gb2YgZHJvcGRvd25BY3Rpb25CdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNDb25kaXRpb25NZXQoZWxlbWVudCwgYnRuLmNvbmRpdGlvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJlbGVtZW50LmlkXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiB7e2J0bi5idXR0b25UeXBlfX0gdG9vbHRpcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09YnRuLnRvb2x0aXAgW2Rpc2FibGVkXT1cImJ0bi5idXR0b25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnRuLGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJidG4uaWNvblNyY1wiIFtzcmNdPVwiYnRuLmljb25TcmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZjLWJ0bi10ZXh0XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2J0bi5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNLUzIwTUFSMjUgU3VtbWFyeSBSb3dzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VtbWFyeVJvd3MgJiYgc3VtbWFyeVJvd3MubGVuZ3RoID4gMCAmJiBkYXRhU291cmNlLmRhdGEgJiYgZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhaXNMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRnVsbFRhYmxlU3VtbWFyeVJvdyAmJiBpc1N1bW1hcnlDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHN1bW1hcnlSb3dzXCIgY2xhc3M9XCJ0YWJsZS1yb3cgc3VtbWFyeS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWwgaW4gdGhlIGZpcnN0IGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aXRoQ2hlY2tCb3hcIiBjbGFzcz1cIm5vbi1zdW1tYXJ5LXRhYmxlLWNlbGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRW1wdHkgY2VsbHMgdG8gYWxpZ24gd2l0aCBkYXRhIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2YgaXNTdW1tYXJ5U3RhcnRDb2x1bW47IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub24tc3VtbWFyeS10YWJsZS1jZWxsXCIgW2NsYXNzLmxhc3QtY2VsbF09XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gPCEtLSBWYWx1ZSBvciBpbnB1dCBpbiB0aGUgbGFzdCBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS10YWJsZS1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJtb2RlID09PSAnZWRpdCcgJiYgaXNFZGl0YWJsZSAmJiBzZWxlY3RlZENvbHVtbiA9PT0gcm93LmZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25Db2x1bW5DbGljayhyb3cuZmllbGROYW1lKVwiPnt7IHJvdy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS10YWJsZS1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJtb2RlID09PSAnZWRpdCcgJiYgaXNFZGl0YWJsZSAmJiBzZWxlY3RlZENvbHVtbiA9PT0gcm93LmZpZWxkTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cudHlwZSA9PT0gJ2NhbGN1bGF0aW9uJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZCBjbG9zZSBidXR0b24gZm9yIHNlbGVjdGVkIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0JyAmJiBpc0VkaXRhYmxlICYmIHNlbGVjdGVkQ29sdW1uID09PSByb3cuZmllbGROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xvc2UtY29sdW1uLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2wocm93LmZpZWxkTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKclVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXSB8IG51bWJlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cudHlwZSA9PT0gJ2lucHV0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwic3VtbWFyeVZhbHVlc1tyb3cuZmllbGROYW1lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblN1bW1hcnlJbnB1dENoYW5nZSgpXCIgY2xhc3M9XCJueHQtbG9wLWlucHV0IHRhYmxlLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiB7eyByb3dUZXh0U2l6ZSA/IHJvd1RleHRTaXplIDogJzEzcHgnIH19OyBjb2xvcjoge3tyb3dUZXh0Q29sb3IgPyByb3dUZXh0Q29sb3IgOiAnIzJjMzEzNyd9fTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTS1MyME1BUjI1IEVtcHR5IGNlbGxzIHRvIGFsaWduIHdpdGggZGF0YSBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIGlzU3VtbWFyeUVuZENvbHVtbjsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vbi1zdW1tYXJ5LXRhYmxlLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbkJ1dHRvbiB8fCBpc0RlbGV0ZVJvdyB8fCBpc0VkaXRSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm9uLXN1bW1hcnktdGFibGUtY2VsbCBhY3Rpb25Db2wgc3RpY2t5LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNLUzEzSlVOMjUgZnVsbCB0YWJsZSBzdW1tYXJ5IHJvdyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Z1bGxUYWJsZVN1bW1hcnlSb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc3VtbWFyeVJvd3NcIiBjbGFzcz1cInRhYmxlLXJvdyBzdW1tYXJ5LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTS1MxM0pVTjI1IENoZWNrYm94IGNvbHVtbiAoaWYgZW5hYmxlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2l0aENoZWNrQm94XCIgY2xhc3M9XCJob3Jpem9udGFsLXN1bW1hcnktdGFibGUtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMTNKVU4yNSBzdW1tYXJ5IGNlbGwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2YgZGlzcGxheWVkQ29sdW1uczsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG9yaXpvbnRhbC1zdW1tYXJ5LXRhYmxlLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJvdz8uY29sdW1ucz8uaW5jbHVkZXMoY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3VtbWFyeVZhbHVlc1tjb2xdIHwgbnVtYmVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aW9uQnV0dG9uIHx8IGlzRGVsZXRlUm93IHx8IGlzRWRpdFJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG9yaXpvbnRhbC1zdW1tYXJ5LXRhYmxlLWNlbGwgYWN0aW9uQ29sIHN0aWNreS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMjhNQVIyNSBJbiB0aGUgTG9hZGluZyBzZWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmVwZWF0IGZvciA1IHNrZWxldG9uIHJvd3MgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgXyBvZiBbMSwyLDMsNCw1XVwiIGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2l0aENoZWNrQm94XCIgY2xhc3M9XCJza2VsZXRvbi1jZWxsIHN0aWNreS1jb2x1bW5cIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGEgQ29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIGN1cnJlbnREaXNwbGF5ZWRDb2x1bW5zXCIgY2xhc3M9XCJza2VsZXRvbi1jZWxsIFwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbkJ1dHRvbiB8fCBpc0RlbGV0ZVJvdyB8fCBpc0VkaXRSb3dcIiBjbGFzcz1cInNrZWxldG9uLWNlbGwgYWN0aW9uQ29sXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IE5vIERhdGEgUm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFTb3VyY2UuZGF0YSAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiBmcm9tICE9PSAnZm9ybUJ1aWxkZXInXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyByZWNvcmRzL2RhdGEgZm91bmQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImRhdGFTb3VyY2UuZGF0YSAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiBmcm9tID09PSAnZm9ybUJ1aWxkZXInXCIgY2xhc3M9XCJmb3JtLWJ1aWxkZXItdGFibGUtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkICAvIGRyYWdzIGZpZWxkcyBmcm9tIGVsZW1lbnRzIHNlY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBbY2xhc3Muc2hhZG93LWhpZGRlbl09XCJpc1NoYWRvd0hpZGRlblwiPlxuICAgICAgICAgICAgICAgIDwhLS0gdGFibGUgaW5wdXQgc2F2ZSBidXR0b24gY2hhbmdlcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGlubGluZUFkZCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFkZEljb25Cb3IgY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImFkZElubGluZVJlY29yZCBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFRhYmxlUmVjb3JkKGlubGluZUVsZW1lbnQpXCIgbWF0VG9vbHRpcD1cIkFkZCBSZWNvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm5hdi1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00NDAtMjgwaDgwdi0xNjBoMTYwdi04MEg1MjB2LTE2MGgtODB2MTYwSDI4MHY4MGgxNjB2MTYwWm00MCAyMDBxLTgzIDAtMTU2LTMxLjVUMTk3LTE5N3EtNTQtNTQtODUuNS0xMjdUODAtNDgwcTAtODMgMzEuNS0xNTZUMTk3LTc2M3E1NC01NCAxMjctODUuNVQ0ODAtODgwcTgzIDAgMTU2IDMxLjVUNzYzLTc2M3E1NCA1NCA4NS41IDEyN1Q4ODAtNDgwcTAgODMtMzEuNSAxNTZUNzYzLTE5N3EtNTQgNTQtMTI3IDg1LjVUNDgwLTgwWm0wLTgwcTEzNCAwIDIyNy05M3Q5My0yMjdxMC0xMzQtOTMtMjI3dC0yMjctOTNxLTEzNCAwLTIyNyA5M3QtOTMgMjI3cTAgMTM0IDkzIDIyN3QyMjcgOTNabTAtMzIwWlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS1TS1MxNUZFQjI1IHJlbW92ZWQgYnV0dG9uIGRpc2FibGUgbG9naWMsIGFkZGVkIGFub3RoZXIgY29uZGl0aW9uIGZvciBidXR0b24gc2hvd2luZy0tPlxuICAgICAgICAgICAgICAgICAgICA8IS0tU0tTMTVGRUIyNSBTUjA2SkFOMjAyNSBidXR0b24gZGlzYWJsZSBsb2dpYyBmb3Igbm90IHNlbGVjdCBhbnkgZW1wbG95ZWUtLT5cbiAgICAgICAgICAgICAgICAgICAgPG54dC1idXR0b24gKm5nSWY9XCIoZWRpdENvbHVtbj8ubGVuZ3RoID4gMCAgfHwgdGFibGVTYXZlQnV0dG9uKSAmJiBmcm9tICE9ICdmb3JtQnVpbGRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVHlwZT1cImJ0biBidG4tcHJpbWFyeVwiIFtidXR0b25EaXNhYmxlXT1cInNlbGVjdGlvbj8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tFbWl0KT1cInNhdmVCdXR0b24oKVwiIGJ1dHRvblZhbHVlPVwiU2F2ZVwiPjwvbnh0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bnh0LXBhZ2luYXRpb24gKm5nSWY9XCJpc1BhZ2luYXRpb25cIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIFtjb2xsZWN0aW9uU2l6ZV09XCJjb25maWdQYWdpbmF0aW9uID8gdG90YWxSZWNvcmRzIHx8IHRvdGFsQ291bnQgOiBmaWx0ZXJUYWJsZU5vc1wiXG4gICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIFtjdXJyZW50UGFnZV09XCJwYWdlSW5kZXhcIiBbZmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKGV2ZW50KT1cInBhZ2VQYXJhbXMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvbnh0LXBhZ2luYXRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLVNLUzE1RkVCMjUgYWxlcnQgb24gZGVsZXRpbmcgcmVjb3JkIC0tPlxuPGRpdiAqbmdJZj1cImRlbGV0ZU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBtb2RhbC1iYWNrZHJvcCBzaG93ICBkLWJsb2NrXCIgaWQ9XCJkZWxldGVSZWNvcmRcIiB0YWJpbmRleD1cIi0xXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkZWxldGVSZWNvcmRMYWJlbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFkZWxldGVNb2RhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8YiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZzLTVcIiBpZD1cImRlbGV0ZVJlY29yZExhYmVsXCI+RGVsZXRlIFJlY29yZDwvYj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU1vZGFsID0gZmFsc2VcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGUgdGhlIHJlY29yZCA/XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlTW9kYWwgPSBmYWxzZVwiPk5vPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWNvcmREYXRhKClcIj5ZZXM8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|