ms-data-grid 0.0.156 → 0.0.157
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.
|
@@ -2260,8 +2260,11 @@ export class DataGridComponent {
|
|
|
2260
2260
|
if (target.checked) {
|
|
2261
2261
|
this.selectedTableLayout = layoutType;
|
|
2262
2262
|
this.setTableLayout(layoutType);
|
|
2263
|
-
this.
|
|
2264
|
-
|
|
2263
|
+
this.computeViewportRows();
|
|
2264
|
+
setTimeout(async () => {
|
|
2265
|
+
this.updateVisibleRows(this.mainScroll?.nativeElement?.scrollTop);
|
|
2266
|
+
await this.refreshHeaders();
|
|
2267
|
+
}, 200);
|
|
2265
2268
|
}
|
|
2266
2269
|
if (this.tableFilterViewId) {
|
|
2267
2270
|
this.savePreset('mouseUp');
|
|
@@ -4977,4 +4980,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4977
4980
|
type: ViewChild,
|
|
4978
4981
|
args: ['fullscreenImageTemplate']
|
|
4979
4982
|
}] } });
|
|
4980
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFPTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFNaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsT0FBTywyQ0FBMkMsQ0FBQztBQWtCbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2SSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQWlCRCxNQUFNLE9BQU8saUJBQWlCO0lBMkw1QixZ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O2dCQXVRdEMsT0FBTztzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1KMUMsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBZ1hjLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBSZW5kZXJlcjIsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgVGVtcGxhdGVSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgaW5qZWN0LFxuICBJbmplY3RvclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwbGl0Q29sdW1uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGxpdC1jb2x1bW5zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm93QWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jvdy1hY3Rpb24uc2VydmljZSdcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBDZGtEcmFnLFxuICBDZGtEcmFnRHJvcCxcbiAgQ2RrRHJhZ0VudGVyLFxuICBDZGtEcmFnRXhpdCxcbiAgQ2RrRHJhZ01vdmUsXG4gIENka0RyYWdTb3J0RXZlbnQsXG4gIG1vdmVJdGVtSW5BcnJheSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7IENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2VsbC1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0ICdib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHRtbENvbnRlbnRTYW5pdGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi9zZXJ2aWNlcy9odG1sLWNvbnRlbnQtc2FuaXRpemVyLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkQ29uZmlnIHtcbiAgZm9udEZhaW1seTogc3RyaW5nO1xuICBib2R5VGV4dEZvbnRzU2l6ZTogbnVtYmVyO1xuICBoZWFkZXJUZXh0Rm9udHNTaXplOiBudW1iZXI7XG4gIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgc2hvd1ZlcnRpY2FsQm9yZGVyOiBib29sZWFuO1xuICBzZWxlY3RlZFRhYmxlTGF5b3V0OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICBnbG9iYWxTZWFyY2g6IHN0cmluZztcbiAgZmlsdGVyTmFtZXM6IHN0cmluZztcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICByb3dTaGFkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgYWN0aXZlRmlsdGVyczogYm9vbGVhbjtcbiAgZ3JvdXBlZENvbHVtbnM/OiBzdHJpbmdbXTtcbn1cbmltcG9ydCB7IGFjY29yZGlvblRvZ2dsZUFuaW1hdGlvbiwgc2xpZGVUb2dnbGVBbmltYXRpb24sIHNsaWRlVXBBbmltYXRpb24sIHJvd0R5bmFtaWNBbmltYXRpb24sIHNvcnRpbmdBbmltYXRpb24gfSBmcm9tICcuLi9hbmltYXRpb25zJ1xuXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcbiAgTm9uZSA9ICdub25lJyxcbiAgU3ByZWFkID0gJ3NwcmVhZEFuaW1hdGlvbicsXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcbiAgRmxpcCA9ICdmbGlwQW5pbWF0aW9uJyxcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIGFjY29yZGlvblRvZ2dsZUFuaW1hdGlvbixcbiAgICBzbGlkZVRvZ2dsZUFuaW1hdGlvbixcbiAgICBzbGlkZVVwQW5pbWF0aW9uLFxuICAgIHJvd0R5bmFtaWNBbmltYXRpb24sXG4gICAgc29ydGluZ0FuaW1hdGlvblxuICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbkNvbmZpZzogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgZGF0YVNldDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgY29sdW1uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcm93SGVpZ2h0OiBudW1iZXIgPSA0NDtcbiAgQElucHV0KCkgaGVhZGVyUm93SGVpZ2h0OiBudW1iZXIgPSA1MDtcbiAgQElucHV0KCkgc2hvd1ZlcnRpY2FsQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgQElucHV0KCkgb2RkUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmMmYyZjInO1xuICBASW5wdXQoKSBoZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBzaG93Q29sdW1uc0dyb3VwaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBib2R5QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIHJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIHNpZGVtZW51QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xuICBASW5wdXQoKSBoZWFkZXJUZXh0Rm9udHNTaXplOiBudW1iZXIgfCB1bmRlZmluZWQgPSAxNDtcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xuICBASW5wdXQoKSBoZWFkZXJGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA1MDA7XG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XG4gIEBJbnB1dCgpIGNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdhbGljZWJsdWUnO1xuICBASW5wdXQoKSBkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGY4JztcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIEBJbnB1dCgpIHNob3dSb3dzR3JvdXBpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ZpbHRlclJvdzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XG4gIEBJbnB1dCgpIHNob3dTaWRlTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XG4gIEBJbnB1dCgpIHJvd1NoYWRpbmdFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZXJpYWxOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2luZ2xlU3BhQXNzZXRzUGF0aDogc3RyaW5nID0gJ2Fzc2V0cy8nO1xuICBASW5wdXQoKSBmaWx0ZXJzQ29uZmlnOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGg6ICdhdXRvJyB8ICd0aGluJyA9ICdhdXRvJztcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRlRm9ybWF0OiBzdHJpbmcgPSAnJ1xuICBASW5wdXQoKSB0YWJsZVNlYXJjaDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGFjdGlvbnM6IGFueVtdID0gWydlZGl0JywgJ2RlbGV0ZSddO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93VGFza2JhciA9IGZhbHNlXG4gIEBJbnB1dCgpIHRhYmxlTmFtZSA9IHRydWVcbiAgQElucHV0KCkgbGlzdGluZ1R5cGU6IHN0cmluZyB8IGJvb2xlYW4gPSAnJztcbiAgQElucHV0KCkgY2hlY2tib3hTdGF0ZTogeyByZXNldDogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9XG4gIEBJbnB1dCgpIHRhc2tiYXJBY3Rpb25zOiBhbnlbXSA9IFtdXG4gIEBJbnB1dCgpIHNvcnRpbmdDb25maWc6IHsgZmllbGQ6IHN0cmluZywgb3JkZXJfYnk6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyVmlld0lkOiBhbnkgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWJsZUxheW91dDogYW55ID0gJ21lZGl1bSdcbiAgQElucHV0KCkgY2xvc2VEcm9wZG93bjogeyBwcmVzZXQ6IHsgY2xvc2VkOiBib29sZWFuLCBsb2FkaW5nOiBib29sZWFuIH0gfSA9IHsgcHJlc2V0OiB7IGNsb3NlZDogZmFsc2UsIGxvYWRpbmc6IGZhbHNlIH0gfTtcbiAgQElucHV0KCkgZ2xvYmFsU2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93Rm9udHNpemUgPSAxNDtcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHQgPSA0MDtcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dIZWlnaHQgPSA0NTtcbiAgQElucHV0KCkgcGFja2FnZURhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1VuTGluazogYW55O1xuICBASW5wdXQoKSBncmlkVHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VycmVuY3lGb3JtYXQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsZWZ0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjOGFjNWZmJztcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgbmVzdGVkVGFibGVSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZWFlYWVhJztcbiAgQElucHV0KCkgdGFibGVWaWV3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBidXR0b25zOiB7IG5hbWU6IHN0cmluZzsgaXNfc2hvd0ljb246IGJvb2xlYW47IGljb246IHN0cmluZywgaGFzX3Blcm1pc3Npb246IGJvb2xlYW4gfVtdID0gW107XG4gIEBJbnB1dCgpIGtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VG90YWxBbW91bnRSb3cgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlR2xvYmFsU2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFibGVUeXBlID0gJyc7XG4gIEBJbnB1dCgpIGVuYWJsZUV4cG9ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVDdXQgPSBmYWxzZTtcbiAgQElucHV0KCkgdGFiczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ZXMgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VGFibGVMYXlvdXQgPSB0cnVlO1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDI1LCA1MCwgNzUsIDEwMCwgMTUwLCAyMDAsIDI1MCwgMzAwLCA1MDBdO1xuICBASW5wdXQoKSByZXNldEFsbEZpbHRlcnMgPSB7IHJlc2V0QWxsOiBmYWxzZSB9O1xuICBASW5wdXQoKSBkZWZhdWx0Q29uZmlnOiBEYXRhR3JpZENvbmZpZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnID0ge1xuICAgIHNob3dQaW5sZWZ0OiB0cnVlLFxuICAgIHNob3dQaW5yaWdodDogdHJ1ZSxcbiAgICBzaG93QXNjZW5kaW5nOiB0cnVlLFxuICAgIHNob3dEZXNjZW5kaW5nOiB0cnVlLFxuICAgIHNob3dGaWx0ZXI6IHRydWUsXG4gICAgc2hvd1Jvd3NHcm91cGluZzogdGhpcy5zaG93Um93c0dyb3VwaW5nLFxuICAgIHNob3dBdXRvc2l6ZUFsbENvbHVtbnM6IHRydWUsXG4gICAgc2hvd0F1dG9zaXplVGhpc0NvbHVtbjogZmFsc2UsXG4gICAgc2hvd0Nob3NlQ29sdW1uczogZmFsc2UsXG4gICAgc2hvd1Jlc2V0Q29sdW1uczogZmFsc2UsXG4gIH07XG4gIEBJbnB1dCgpIHZhbGlkYXRlSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE91dCBQdXQgRXZlbnRzXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2VsbEhvc3REaXJlY3RpdmUpIGNlbGxIb3N0cyE6IFF1ZXJ5TGlzdDxDZWxsSG9zdERpcmVjdGl2ZT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTGF5b3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VzdG9tQ2VsbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsdGVyT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZ2VuZXJpY0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHRhYmxlUHJlc2V0Q29uZmlnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNvcnRpbmdPcmRlck9wdGlvbnM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHN0b3JlUHJlc2V0TmFtZTogc3RyaW5nID0gJyc7XG4gIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICBhY3RpdmVUYWI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBncm91cGVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgYWN0aXZlQ29sOiBhbnkgPSBudWxsO1xuICBhY3RpdmVGaWx0ZXJDZWxsOiBhbnkgPSBudWxsO1xuICBzaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XG4gIHNpZGVNZW51VmlzaWJsZSA9IGZhbHNlO1xuICBwaXZvdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29sdW1uU2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgZXhwYW5kQWxsQWNjb3JkaWFucyA9IHRydWU7XG4gIGN1cnJlbnRPcGVuZWRTaWRlTWVudWU6ICdjb2xzJyB8ICdmaWx0cnMnIHwgbnVsbCA9IG51bGw7XG4gIG9yaWdpbmFsQ29sdW1uczogYW55W10gPSBbXTtcbiAgb3JpZ2luYWxEYXRhU2V0OiBhbnlbXSA9IFtdO1xuICBhY3RpdmVUb3BCdXR0b246IHN0cmluZyB8IG51bGwgPSAnJztcbiAgZmlsdGVyQ29sdW1uc0xpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwQm94UGFkZGluZyA9IDIwMDtcbiAgcHJlc2V0TmFtZTogc3RyaW5nID0gJyc7XG4gIHByZXNldEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWFyY2hUZXh0UHJlc2V0VGFibGUgPSAnJztcbiAgYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcbiAgc2VhcmNoSW5Ecm9wZG93biA9ICcnO1xuICBwcml2YXRlIHNlY3JldEtleSA9ICd0Yi1zdXBlci1hZG1pbidcbiAgYWRkRmlsdGVyRHJvcGRvd25TZWFyY2ggPSAnJ1xuICB0b3BTaG93SGlkZUNvbHVtbnMgPSAnJztcbiAgY2hvc2VDb2x1bW5zU2VhcmNoID0gJydcbiAgc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA9ICcnXG4gIGVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XG4gIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICBjb25maXJtRGVsZXRlID0gZmFsc2U7XG4gIHByaXZhdGUgb3JpZ2luYWxBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBmb250RmFtaWxpZXM6IHN0cmluZ1tdID0gW107XG4gIGZvbnRTaXplczogc3RyaW5nW10gPSBbJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyNCddO1xuICBoYXNTY3JvbGwgPSBmYWxzZTtcbiAgbGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XG4gIHJpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBwcmV2aWV3Q2VudGVyQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblxuICBAVmlld0NoaWxkKCdkYXRhR3JpZENvbnRhaW5lcicpXG4gIGRhdGFHcmlkQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcbiAgdGFza01hbmFnZW1lbnRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbmVzdGVkVGFibGVDb250YWluZXInKVxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXG4gIGxlZnRQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEJvZHknKVxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0UGlubmVkQm9keScpXG4gIHJpZ2h0UGlubmVkQm9keSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkSGVhZGVyJylcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRIZWFkZXInKVxuICBjZW50ZXJQaW5uZWRIZWFkZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxuICByaWdodFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdnbG9iYWxTZWFyY2hJbnB1dCcpXG4gIGdsb2JhbFNlYXJjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY29sdW1uc0dyb3VwZWRCb3gnKVxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJGYWtlU2Nyb2xsYmFyJylcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZWxsVGV4dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjZWxsVGV4dCE6IGFueTtcbiAgQFZpZXdDaGlsZCgnbmVzdGVkSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5lc3RlZEhlYWRlciE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2x1bW5TZXJ2aWNlOiBTcGxpdENvbHVtbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBjb21tb25TZXZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjb3B5U2VydmljZTogQ29weVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXG4gICAgcHJpdmF0ZSBhY3Rpb25WYWxpZGF0b3I6IFJvd0FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uc1NlcnZpY2U6IFZhbGlkYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGh0bWxTYW5hdGl6ZXJTZXJ2aWNlOiBIdG1sQ29udGVudFNhbml0aXplclNlcnZpY2UsXG4gICAgcHVibGljIGNlbGxTZWxlY3Rpb25TZXJ2aWNlOiBDZWxsU2VsZWN0aW9uU2VydmljZSxcblxuICApIHsgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgICB0aGlzLmNvbXB1dGVWaWV3cG9ydFJvd3MoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuXG4gICAgICBpZiAodGhpcy5jZWxsVGV4dCkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJlbmRlckN1c3RvbUNlbGxzKCk7XG4gICAgICB0aGlzLmJ1aWxkUGFnZVNpemVLZXlNYXAoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmdldENvbHVtbkJ5SW5kZXggPSAoaSkgPT4gdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLmluZGV4ID09PSBpKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnZlcnRpY2FsQ29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5ob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uucm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgdGhpcy5mb250RmFtaWxpZXMgPSB0aGlzLmNvbW1vblNldmljZS5mb250RmFtaWxpZXM7XG5cbiAgfVxuXG4gIGNyZWF0ZUNlbGxJbmplY3Rvcihyb3c6IGFueSwgY29sOiBhbnkpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiAncm93RGF0YScsIHVzZVZhbHVlOiByb3cgfSxcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHJlbmRlckN1c3RvbUNlbGxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RzID0gdGhpcy5jZWxsSG9zdHMudG9BcnJheSgpO1xuICAgIGxldCBob3N0SW5kZXggPSAwO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy52aXNpYmxlUm93cykge1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBob3N0c1tob3N0SW5kZXgrK107XG4gICAgICAgIGlmICghaG9zdCB8fCAhY29sLmNlbGxSZW5kZXJlcikgY29udGludWU7XG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXIgPSBob3N0LnZpZXdDb250YWluZXJSZWY7XG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgcm93LFxuICAgICAgICAgIGNvbCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXG4gICAgICAgICAgYXBpOiB0aGlzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoY29tcFJlZi5pbnN0YW5jZSBhcyBhbnkpLmdyaWRJbml0KSB7XG4gICAgICAgICAgKGNvbXBSZWYuaW5zdGFuY2UgYXMgYW55KS5ncmlkSW5pdChwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBzaG91bGRSZXN0b3JlU2Nyb2xsID0gZmFsc2U7XG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFN0eWxlc1RvSW1hZ2VzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG91bGRSZXN0b3JlU2Nyb2xsICYmXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50XG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xuICAgICAgY29uc3Qgc3RvcmVkRGF0ZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlZm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkRGF0ZUZvcm1hdCkge1xuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBzdG9yZWREYXRlRm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWREYXRlRm9ybWF0KSA6ICdkZC9NTS95eXl5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lGb3JtYXQpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Rm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeUZvcm1hdCA9IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeUZvcm1hdCkgOiAnMSwyMzQsNTY3Ljg5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lTeW1ib2wpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5U3ltYm9sID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5U3ltYm9sJyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHN0b3JlZEN1cnJlbmN5U3ltYm9sID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeVN5bWJvbCkgOiAnJCc7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBkYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyh0aGlzLmNvbHVtbnMpO1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpO1xuXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgICBjb25zdCBhbGxUYWJzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWN0aXZlVGFicycpIHx8ICd7fScpO1xuICAgICAgICBsZXQgc2F2ZWRUYWJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA/IChzYXZlZFRhYiA9IHRoaXMuc2VsZWN0ZWRUYWIpIDogKHNhdmVkVGFiID0gYWxsVGFic1t0aGlzLnRhYmxlVHlwZV0pXG4gICAgICAgIGlmICh0aGlzLnRhYnMuaW5jbHVkZXMoJ0N1cnJlbnQgUG9saWN5JykpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBzYXZlZFRhYiB8fCB0aGlzLnRhYnM/LlswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XG4gICAgICB0aGlzLmNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddPy5jdXJyZW50VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKHRydWUpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcblxuICAgICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAuLi5jb2wsXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgICA6IFtdLFxuICAgICAgfSkpO1xuXG5cbiAgICAgIGlmICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCkge1xuICAgICAgICBhd2FpdCB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zZXRTZWN0aW9uc1dpZHRoKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTZXQnXSkge1xuICAgICAgdGhpcy5kYXRhU2V0ID0gdGhpcy5kYXRhU2V0Py5tYXAoKHJvdywgaSkgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgICBfX3ZpcnR1YWxJbmRleDogaSArIDEsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5kYXRhU2V0ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ7XG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICBpZiAodGhpcy5jb21tb25TZXZpY2U/Lm1haW5Db250YWluZXJMZWZ0ID4gMjAwKVxuICAgICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdm9pZCB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxuICAgICAgICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuZm9yRWFjaChncm91cGVkQ29sID0+IHtcbiAgICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBncm91cGVkQ29sLmZpZWxkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xuXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgICAgb2JqOiBpZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjbG9zZURyb3Bkb3duJ10gJiYgdGhpcy5jbG9zZURyb3Bkb3duLnByZXNldC5jbG9zZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnByZXNldE5hbWUgPSAnJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xuICAgICAgICBsZXQgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxuICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX3RlbXApXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGlmICghdGVtcHJvcnlTZWxlY3RlZCkge1xuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcbiAgICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2RlZmF1bHQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IHRlbXByb3J5U2VsZWN0ZWQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcbiAgICAgICAgdGhpcy5zdG9yZVByZXNldE5hbWUgPSB0ZW1wcm9yeVNlbGVjdGVkPy5uYW1lIHx8ICcnO1xuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZDtcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5mb250RmFpbWx5O1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmhlYWRlclRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuYm9keVRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZ2xvYmFsU2VhcmNoO1xuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcbiAgICAgICAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0ZW1wcm9yeVNlbGVjdGVkPy5jb25maWc/Lm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgfHwgJyNmMWYxZjEnO1xuICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gdGVtcHJvcnlTZWxlY3RlZD8uY29uZmlnPy5ncm91cGVkQ29sdW1ucztcbiAgICAgICAgICBpZiAoZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZShncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMuZGF0YVNldCwgdGhpcy5ncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRDb25maWcpIHtcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGhpcy5kZWZhdWx0Q29uZmlnLnJvd1NoYWRpbmdFbmFibGVkIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gdGhpcy5kZWZhdWx0Q29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciB8fCBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0aGlzLmRlZmF1bHRDb25maWcuZm9udEZhaW1seSB8fCAnSW50ZXInO1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuZGVmYXVsdENvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRoaXMuZGVmYXVsdENvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0O1xuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuYm9keVRleHRGb250c1NpemUgfHwgMTQ7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbFNlYXJjaDtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCk7XG4gICAgICAgICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSB0aGlzLmRlZmF1bHRDb25maWc/Lmdyb3VwZWRDb2x1bW5zO1xuICAgICAgICAgIGlmIChncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gc3RydWN0dXJlZENsb25lKGdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5kYXRhU2V0LCB0aGlzLmdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgfHwgJ21lZGl1bSc7XG4gICAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddICYmIGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYnVpbGRQYWdlU2l6ZUtleU1hcCgpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHJldHVybjtcbiAgICB0aGlzLmNvbHVtbnMgPSBhd2FpdCB0aGlzLmNvbW1vblNldmljZS5jb3B5RHJvcGRvd25EYXRhUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIGFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzRnJvbVN0YXRlID0gdGhpcy5yZXN0b3JlU2VsZWN0aW9uKHRoaXMudGFibGVUeXBlKTtcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgICBvYmo6IGlkc1xuICAgICAgICB9LFxuICAgICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3tcInNlbGVjdGVkUm93c1wiOiB7fX0nKTtcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcbiAgICAgIGRlbGV0ZSBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV07XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgJ2RhdGF0YWJsZVNlbGVjdGlvbnMnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoc3RvcmVkKVxuICAgICk7XG4gIH1cblxuXG5cbiAgYXN5bmMgYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbLi4udXBkYXRlZENvbHVtbnNdO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBhc3luYyB1cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoY29sdW1uczogYW55ID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxuICAgICAgICBjb2x1bW5zID8gY29sdW1ucyA6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgY29udGFpbmVyV2lkdGhcbiAgICAgICk7XG4gICAgICByZXNvbHZlKHByZXBhcmVkKTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCAwKSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgLy8gV3JhcCBwcmVwYXJlQ29sdW1ucyBpbiBhIFByb21pc2UgdG8gbWFrZSBpdCBhd2FpdGFibGVcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuY29sdW1uU2VydmljZS5wcmVwYXJlQ29sdW1ucyhcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXG4gICAgICApO1xuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyA9IGxlZnQ7XG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMgPSByaWdodDtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGFzeW5jIFNldENvbHVtbnNEZWZhdWx0V2lkdGgoKSB7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICBjb250YWluZXJXaWR0aFxuICAgICk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XG4gICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sZWZ0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY2VudGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnJpZ2h0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmxlZnRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBsZWZ0LnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLnJpZ2h0UGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9YDtcbiAgICB9XG4gIH1cblxuICBmYWtlU2Nyb2xsYmFyU2Nyb2xsTGVmdCA9IDA7XG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHZhbHVlID0gZmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcbiAgICBpZiAodGhpcy5pc1N0YXR1c0ZpZWxkKGZpZWxkKSAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlID8gdGhpcy5jYXBpdGFsaXplU3RhdHVzKHZhbHVlLnZhbHVlKSA6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgIG5hbWU6IHZhbHVlLm5hbWUgPyB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUubmFtZSkgOiB2YWx1ZS5uYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpc05lc3RlZFZhbHVlQXJyYXkob2JqOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiAoYWNjICYmIGFjY1twYXJ0XSAhPT0gdW5kZWZpbmVkID8gYWNjW3BhcnRdIDogdW5kZWZpbmVkKSwgb2JqKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW47XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyDwn5SlIENhY2hlIERPTSArIGluaXRpYWwgd2lkdGhzIG9uY2VcbiAgICBjb25zdCBjaGlsZE1ldGEgPSBjaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudHNbMF0/Lm9mZnNldFdpZHRoIHx8IDgwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICBpbml0aWFsV2lkdGg6IHdpZHRoLFxuICAgICAgICByYXRpbzogMCwgICAgICAgLy8gZmlsbGVkIGxhdGVyXG4gICAgICAgIGZpbmFsV2lkdGg6IHdpZHRoXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWxJbml0aWFsV2lkdGggPSBjaGlsZE1ldGEucmVkdWNlKFxuICAgICAgKHN1bTogYW55LCBjOiBhbnkpID0+IHN1bSArIGMuaW5pdGlhbFdpZHRoLFxuICAgICAgMFxuICAgICk7XG5cbiAgICAvLyDwn5SlIFByZWNvbXB1dGUgcmF0aW9zIG9uY2VcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkTWV0YSkge1xuICAgICAgY2hpbGQucmF0aW8gPSBjaGlsZC5pbml0aWFsV2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcbiAgICB9XG5cbiAgICAvLyDwn5SlIENhY2hlIGdyb3VwIGhlYWRlciBvbmNlXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtncm91cD1cIiR7Y29sLmhlYWRlcn1cIl1gXG4gICAgKTtcblxuICAgIGxldCBsYXRlc3REZWx0YSA9IDA7XG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGFwcGx5V2lkdGhzID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgICAgY2hpbGQuaW5pdGlhbFdpZHRoICsgbGF0ZXN0RGVsdGEgKiBjaGlsZC5yYXRpbyxcbiAgICAgICAgICA4MFxuICAgICAgICApO1xuXG4gICAgICAgIGNoaWxkLmZpbmFsV2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgdG90YWxOZXdXaWR0aCArPSBuZXdXaWR0aDtcblxuICAgICAgICBjb25zdCB3aWR0aFB4ID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGNoaWxkLmVsZW1lbnRzKSB7XG4gICAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICAgIGVsLnN0eWxlLm1pbldpZHRoID0gd2lkdGhQeDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xuICAgICAgICBncm91cEhlYWRlckVsLnN0eWxlLndpZHRoID0gYCR7dG90YWxOZXdXaWR0aH1weGA7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgaWYgKGlzUmlnaHRQaW5uZWQpIGRlbHRhWCA9IC1kZWx0YVg7XG5cbiAgICAgIC8vIPCflKUgUHJldmVudCBzaHJpbmtpbmcgYmVsb3cgbWluXG4gICAgICBpZiAodG90YWxJbml0aWFsV2lkdGggKyBkZWx0YVggPCBjaGlsZHJlbi5sZW5ndGggKiA4MCkgcmV0dXJuO1xuXG4gICAgICBsYXRlc3REZWx0YSA9IGRlbHRhWDtcblxuICAgICAgaWYgKHJhZklkID09PSBudWxsKSB7XG4gICAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFwcGx5V2lkdGhzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgLy8g8J+UpSBDb21taXQgd2lkdGhzIE9OQ0VcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoXG4gICAgICAgICAgY2hpbGQuZmllbGQsXG4gICAgICAgICAgY2hpbGQuZmluYWxXaWR0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuXG4gICAgICBpZiAocmFmSWQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjcmVhdGVVcGRhdGVDb2x1bW5Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdGFibGVfY29uZmlnOiB7XG4gICAgICAgIHJvd1NoYWRpbmdFbmFibGVkOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkIHx8IGZhbHNlLFxuICAgICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyIHx8IGZhbHNlLFxuICAgICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHkgfHwgJ0ludGVyJyxcbiAgICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogTnVtYmVyKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSkgfHwgMTQsXG4gICAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCB8fCAnbWVkaXVtJyxcbiAgICAgICAgYm9keVRleHRGb250c1NpemU6IE51bWJlcih0aGlzLmJvZHlUZXh0Rm9udHNTaXplKSB8fCAxNCxcbiAgICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLmdsb2JhbFNlYXJjaFRleHQsXG4gICAgICAgIGZpbHRlck5hbWVzOiAnJyxcbiAgICAgICAgdG90YWxDb3VudDogMCxcbiAgICAgICAgYWN0aXZlRmlsdGVyczogdHJ1ZSxcbiAgICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogJyNmMWYxZjEnXG4gICAgICB9LFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfVxuICB9XG5cbiAgY2xlYW5Db2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sKSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIF9fdHlwZW5hbWUsXG4gICAgICAgIF9pZCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxuICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgZXhwYW5kZWRGaWx0ZXIsXG4gICAgICAgIGNlbGxSZW5kZXJlcixcbiAgICAgICAgZmlsdGVyUmVuZGVyZXIsXG4gICAgICAgIGNlbGxDb21wb25lbnRSZWYsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICBpc1Jvd0dyb3VwZWQsXG4gICAgICAgIGluZGV4LFxuICAgICAgICAuLi5yZXN0XG4gICAgICB9ID0gY29sO1xuXG4gICAgICAvLyBDbGVhbiBkcm9wZG93biB2YWx1ZXMgKF9fdHlwZW5hbWUgcmVtb3ZlZClcbiAgICAgIGNvbnN0IGNsZWFuZWREcm9wZG93biA9IEFycmF5LmlzQXJyYXkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxuICAgICAgICA/IGNvbHVtbl9kcm9wZG93bl92YWx1ZS5tYXAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpXG4gICAgICAgIDogY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpKGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIC8vIENsZWFuIHF1ZXJ5IChfX3R5cGVuYW1lIHJlbW92ZWQpXG4gICAgICBjb25zdCBjbGVhbmVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHF1ZXJ5KVxuICAgICAgICA/IHF1ZXJ5Lm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5xUmVzdCB9KSA9PiBxUmVzdClcbiAgICAgICAgOiBxdWVyeVxuICAgICAgICAgID8gKCh7IF9fdHlwZW5hbWUsIF9pZHMsIC4uLnFSZXN0IH0pID0+IHFSZXN0KShxdWVyeSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY2xlYW5lZERyb3Bkb3duLFxuICAgICAgICBxdWVyeTogY2xlYW5lZFF1ZXJ5LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVzaXplQ29sdW1uKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYClcbiAgICApO1xuXG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IGVsZW1lbnRzWzBdLm9mZnNldFdpZHRoIHx8IDE1MDtcbiAgICBjb25zdCBpc1JpZ2h0UGlubmVkID0gY29sLnBpbm5lZCA9PT0gJ3JpZ2h0JztcbiAgICBjb25zdCBoaWdobGlnaHRDbGFzcyA9IGlzUmlnaHRQaW5uZWRcbiAgICAgID8gJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCdcbiAgICAgIDogJ3Jlc2l6aW5nLWhpZ2hsaWdodCc7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoaGlnaGxpZ2h0Q2xhc3MpKTtcbiAgICBsZXQgbGF0ZXN0V2lkdGggPSBpbml0aWFsV2lkdGg7XG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBhcHBseVdpZHRoID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuICAgICAgY29uc3Qgd2lkdGhQeCA9IGAke2xhdGVzdFdpZHRofXB4YDtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICBlbC5zdHlsZS5taW5XaWR0aCA9IHdpZHRoUHg7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSBkZWx0YVggPSAtZGVsdGFYO1xuXG4gICAgICBjb25zdCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcbiAgICAgIGlmIChuZXdXaWR0aCA8IDgwKSByZXR1cm47XG5cbiAgICAgIGxhdGVzdFdpZHRoID0gbmV3V2lkdGg7XG5cbiAgICAgIGlmIChyYWZJZCA9PT0gbnVsbCkge1xuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhcHBseVdpZHRoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgY29sLndpZHRoID0gbGF0ZXN0V2lkdGg7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbGF0ZXN0V2lkdGgpO1xuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5yZW1vdmUoaGlnaGxpZ2h0Q2xhc3MpKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG5cbiAgICAgIGlmIChyYWZJZCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwLCB7IG9uY2U6IHRydWUgfSk7XG4gIH1cblxuXG5cblxuICBvblJlc2l6ZUdyb3VwQm94KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgICBjb25zdCB0YXJnZXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cEJveEhlYWRlckRpdicpO1xuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XG5cbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuXG4gICAgICBsZXQgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xuXG4gICAgICBpZiAodGFyZ2V0RWwpIHtcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgICAgIHRhcmdldEVsLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IG5ld1dpZHRoO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgfVxuXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGNvbCk7XG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKGNvbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBjb2wuZmlsdGVyVmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcbiAgICBpZiAoIWNvbD8ucXVlcnkpIHtcbiAgICAgIGNvbC5xdWVyeSA9IHtcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxuICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxuICAgICAgICBjb25kaXRpb246IG51bGxcbiAgICAgIH1cbiAgICB9XG4gICAgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlID0gZmlsdGVyVmFsdWU7XG4gICAgdGhpcy5maXJzdFZhbHVlID0gZmlsdGVyVmFsdWU7XG4gIH1cblxuICBnZXQgYm9keVdyYXBwZXJIZWlnaHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmhlYWRlclJvd0hlaWdodCAqIHJvd3MgKyAodGhpcy5oYXNTY3JvbGwgPyAxNyA6IDApO1xuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHtvZmZzZXR9cHgpYDtcbiAgfVxuXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIG9uUm93SG92ZXIocm93OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IHJvdy5faWQgfHwgcm93LmlkO1xuICB9XG5cbiAgb25Sb3dMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkluZGV4ID0gbnVsbDtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXG4gICAgICAgICd0aHJlZS1kb3RzJyxcbiAgICAgICAgJ2ZpbHRlci1pY29uLXdyYXBwZXInLFxuICAgICAgICAnY29sdW1uLW1lbnUnLFxuICAgICAgICAnZmlsdGVyLW1lbnUnLFxuICAgICAgXSlcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGluc2lkZVRvcEZpbHRlclJvdyA9IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXRhZ3MnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLmFkZC1maWx0ZXItYnV0dG9uLW1lbnUnKSB8fFxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoJy50YWJsZS1yaWdodC10b3AtYWN0aW9ucycpIHx8IHRhcmdldC5jbG9zZXN0KCcudGFibGUtbGF5b3V0JykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItcm93LWZpbHRlci13cmFwcGVyJyk7XG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XG4gICAgaWYgKCFpc0NsaWNrZWRJbnNpZGVUaHJlZURvdHNGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY2xvc2VUaHJlZURvdHNNZW51RmlsdGVyKCk7XG4gICAgfVxuICAgIGlmICghaW5zaWRlVG9wRmlsdGVyUm93KSB7XG4gICAgICB0aGlzLmNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLnNldC1kZWZhdWx0LXByZXNldCcpKSB7XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2V0LWRlZmF1bHQtcHJlc2V0Jyk/LmNsYXNzTGlzdD8ucmVtb3ZlKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmZ1bGwtdGV4dC1ib3gnKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXInKSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZEtleXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuYWN0aXZlQ2VsbCA9IG51bGw7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkJvdW5kcyA9IHsgdG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IG51bGwsIHJpZ2h0OiBudWxsIH07XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRhdGEtZ3JpZC1ib2R5JykpIHtcbiAgICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG5cbiAgY2xvc2VGaWx0ZXJEcm9wZG93bnMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgY2xhc3NMaXN0OiBzdHJpbmdbXVxuICApOiBib29sZWFuIHtcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZWwuY2xhc3NMaXN0ICYmXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc01lbnVlSGlkZGVuID0gZmFsc2U7XG4gIG9wZW5UaHJlZURvdHNNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBjaGlsZDogYW55LCBrZWVwT3JpZ2luYWxQb3NpdGlvbiA9IGZhbHNlKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSB0cnVlO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBjaGlsZDtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW4tbWVudScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHggPiAoY29udGFpbmVyV2lkdGggLyAyKSkge1xuICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3ggLSAyNDB9cHhgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQhLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc01lbnVlSGlkZGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIENvbHVtbiBUaHJlZSBEb3RzIEFjdGlvbnNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgc29ydEFzYyhjb2w6IGFueSkge1xuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb3JkZXI6ICdhc2MnLFxuICAgICAgY29sdW1uOiBjb2xcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XG4gICAgaWYgKCFjb2wuaXNfc29ydGFibGUpIHJldHVybjtcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2Rlc2MnO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb3JkZXI6ICdkZXNjJyxcbiAgICAgIGNvbHVtbjogY29sXG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XG4gIH1cblxuICByZXNldFNvcnQoY29sOiBhbnkpIHtcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XG4gICAgY29uc3QgZXZlbnQgPSB7IGZpZWxkOiBudWxsLCBvcmRlcl9ieTogbnVsbCB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG5cbiAgYXN5bmMgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxuICAgIGNvbHVtbjogYW55LFxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXG4gICAgaXNOZXN0ZWRUYWJsZTogYW55ID0gZmFsc2UsXG4gICAgY29sdW1ucz86IGFueVxuICApIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgaWYgKGlzTmVzdGVkVGFibGUpIHtcbiAgICAgIHRoaXMucGluVW5waW5Db2x1bShjb2x1bW4sIHBpbm5lZCwgY29sdW1ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gMe+4j+KDoyBVcGRhdGUgcGlubmVkIHN0YXRlIHJlY3Vyc2l2ZWx5XG4gICAgY29uc3QgdXBkYXRlUGlubmVkID0gKGNvbHM6IGFueVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHVwZGF0ZVBpbm5lZChjb2wuY2hpbGRyZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdXBkYXRlUGlubmVkKHRoaXMuY29sdW1ucyk7XG5cbiAgICBjb25zdCBmbGF0dGVuQ29sdW1ucyA9IChjb2xzOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChmbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgYWxsQ29scyA9IGZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgcGlubmVkTGVmdCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgY2VudGVyID0gYWxsQ29scy5maWx0ZXIoYyA9PiAhYy5waW5uZWQpO1xuICAgIGNvbnN0IHBpbm5lZFJpZ2h0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgcmVvcmRlcmVkQ29sdW1ucyA9IFsuLi5waW5uZWRMZWZ0LCAuLi5jZW50ZXIsIC4uLnBpbm5lZFJpZ2h0XTtcbiAgICB0aGlzLmNvbW1vblNldmljZS5hc3NpZ25VbmlxdWVDb2x1bW5JbmRleGVzKHJlb3JkZXJlZENvbHVtbnMpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucztcblxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cblxuICBwcml2YXRlIGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgYXV0b3NpemVDb2x1bW4oY29sczogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcblxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG5cbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94ZXMpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGNvbnRhaW5lcldpZHRoIC09IDU7XG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpO1xuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1uc1RvUmVzaXplKSB7XG4gICAgICBpZiAoY29sICYmIGNvbC5maWVsZCkge1xuICAgICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0sIDEwMDApO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBnZXRHcm91cFdpZHRoKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBncm91cD8uY2hpbGRyZW5cbiAgICAgICAgPy5maWx0ZXIoKGNvbDogYW55KSA9PiBjb2w/LmlzX3Zpc2libGUpXG4gICAgICAgID8ucmVkdWNlKChhY2M6IG51bWJlciwgY29sOiBhbnkpID0+IGFjYyArIChjb2w/LndpZHRoIHx8IDApLCAwKSB8fCAwXG4gICAgKTtcbiAgfVxuXG4gIGF1dG9zaXplQWxsQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCksIDE1MCk7XG5cbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICBjb2wuaXNSb3dHcm91cGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZChjb2wuY2hpbGRyZW4sIGZpZWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBncm91cEJ5KGNvbDogYW55KSB7XG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgaWYgKCFjb2wpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAoY29sPy5pc19ncm91cGFibGUpIHtcbiAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xuICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKHRoaXMuY29sdW1ucywgY29sLmZpZWxkKTtcbiAgICB9XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0sIDEwKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFzeW5jIGdyb3VwRGF0YUFzeW5jKGRhdGE6IGFueVtdLCBncm91cEZpZWxkczogc3RyaW5nW10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JvdXBEYXRhKGRhdGEsIGdyb3VwRmllbGRzKTtcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG4gIH1cblxuXG5cblxuICBjaG9vc2VDb2x1bW5zKCkge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVzZXRDb2x1bW5zKCkge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAuLi5jb2wsXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgOiBbXSxcbiAgICB9KSk7XG4gICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sOiBhbnkpIHtcbiAgICBjb2wuZmlyc3RWYWx1ZSA9ICcnO1xuICAgIGNvbC5zZWNvbmRWYWx1ZSA9ICcnO1xuICAgIGNvbC5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcbiAgICBjb2wuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcbiAgICBjb2wubG9naWMgPSAnQU5EJztcbiAgICBjb2wuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgY29sLnNlbGVjdGVkT3B0aW9ucyA9IHt9O1xuICAgIGNvbC5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gIH1cblxuXG4gIGFwcGx5RmlsdGVyKGNvbDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zTGlzdC5wdXNoKGNvbCk7XG4gIH1cblxuICBzZWxlY3RlZFJvd3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuICBwcml2YXRlIGdldFJvd0lkKHJvdzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm93LmlkID8/IHJvdy5faWQ7XG4gIH1cblxuICB0b2dnbGVSb3dTZWxlY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xuICAgIH1cbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZGF0YTogYW55W10pOiB2b2lkIHtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XG4gICAgY29uc3QgYWxsSWRzID0gbGVhZlJvd3MubWFwKHIgPT4gdGhpcy5nZXRSb3dJZChyKSk7XG5cbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGFsbElkcy5ldmVyeShpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpO1xuICB9XG5cbiAgaXNBbGxTZWxlY3RlZChkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcbiAgICByZXR1cm4gbGVhZlJvd3MubGVuZ3RoID4gMCAmJiBsZWFmUm93cy5ldmVyeShyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSk7XG4gIH1cblxuXG4gIGlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSBsZWFmUm93cy5maWx0ZXIociA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyKSkpLmxlbmd0aDtcblxuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgbGVhZlJvd3MubGVuZ3RoO1xuICB9XG5cbiAgZ2V0QWxsTGVhZlJvd3MoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgbGVhZjogYW55W10gPSBbXTtcblxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xuICAgICAgaWYgKCFub2RlKSByZXR1cm47XG5cbiAgICAgIGlmIChub2RlLmlzR3JvdXApIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCh0cmF2ZXJzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWFmLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRhdGEuZm9yRWFjaCh0cmF2ZXJzZSk7XG4gICAgcmV0dXJuIGxlYWY7XG4gIH1cblxuICB0b2dnbGVTaWRlTWVudShjbGlja2VkT246ICdjb2xzJyB8ICdmaWx0cnMnKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSBjbGlja2VkT24pIHtcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSAmJlxuICAgICAgY2xpY2tlZE9uICE9IHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZVxuICAgICkge1xuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcbiAgICB9XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sOiBhbnkpIHtcbiAgICBjb25zdCBhbGxWaXNpYmxlID0gY29sLmNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcbiAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gKGNoaWxkLmlzX3Zpc2libGUgPSAhYWxsVmlzaWJsZSkpO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbnM6IGFueSkge1xuICAgIGlmIChjb2x1bW5zPy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGNvbHVtbnMuY2hpbGRyZW4uZXZlcnkoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5pc192aXNpYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sdW1ucz8uaXNfdmlzaWJsZTtcbiAgfVxuXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IG5vbkFsd2F5c1Zpc2libGUgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gIWNvbC5pc19hbHdheXNfdmlzaWJsZSk7XG4gICAgcmV0dXJuIG5vbkFsd2F5c1Zpc2libGUubGVuZ3RoID4gMCAmJiBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkOiBzdHJpbmcsIGNvbHM6IGFueVtdKTogYW55IHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGNvbDtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCwgY29sLmNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW46IGFueSwgaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZUNvbHVtbnMoKT8ubGVuZ3RoIDw9IDIgJiYgY29sdW1uLmlzX3Zpc2libGUgfHwgKGNvbHVtbj8uaXNfYWx3YXlzX3Zpc2libGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLmlzX3Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBjb25zdCBub25BbHdheXNWaXNpYmxlID0gZmxhdHRlbi5maWx0ZXIoY29sID0+ICFjb2wuaXNfYWx3YXlzX3Zpc2libGUpO1xuICAgICAgY29uc3QgYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUgPSBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBpZiAoYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUpIHtcbiAgICAgICAgbm9uQWx3YXlzVmlzaWJsZS5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgY29sLmlzX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWx3YXlzVmlzaWJsZUNvdW50ID0gZmxhdHRlbi5maWx0ZXIoY29sID0+IGNvbC5pc19hbHdheXNfdmlzaWJsZSkubGVuZ3RoO1xuICAgICAgICBjb25zdCBjb2x1bW5zTmVlZGVkID0gTWF0aC5tYXgoMCwgMiAtIGFsd2F5c1Zpc2libGVDb3VudCk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNOZWVkZWQgPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihjb2x1bW5zTmVlZGVkLCBub25BbHdheXNWaXNpYmxlLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgbm9uQWx3YXlzVmlzaWJsZVtpXS5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW4uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuXG4gIHZpc2libGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xuICAgIHJldHVybiB2aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGZsYXR0ZW5Db2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGhpcy5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KGNvbCk7XG4gICAgICB9XG4gICAgfSwgW10pO1xuICB9XG5cbiAgZmlsdGVyZWRDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGNvbHNcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyZWRDb2x1bW5zKGNvbC5jaGlsZHJlbik7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcbiAgICAgICAgICAgIGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSA/IGNvbCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0IGFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgZ2V0IGZpbHRlckFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgLy8gUmVjdXJzaXZlbHkgY29sbGVjdCBhbGwgZ3JvdXAgY29sdW1uc1xuICBwcml2YXRlIGdldEFsbEdyb3VwQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBncm91cHMucHVzaChjb2wpO1xuICAgICAgICBncm91cHMgPSBncm91cHMuY29uY2F0KHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbC5jaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9XG5cbiAgLy8gVG9nZ2xlIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGVcbiAgdG9nZ2xlQWxsQWNjb3JkaW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICB0aGlzLnNldEFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5maWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCcgPyBmYWxzZSA6IHRydWU7XG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGZvciAobGV0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XG4gICAgICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUoY29sLmNoaWxkcmVuLCBzdGF0ZSk7IC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWRcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuXG4gIGNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpIHtcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcbiAgfVxuXG4gIGdldCBoYXNSaWdodFBpbm5lZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1JpZ2h0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0xlZnRQaW5uZWRDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldEV4cGFuZGVkUm93Q291bnQodGhpcy5kYXRhU2V0KTtcbiAgfVxuXG5cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB0aGlzLmF1dG9TaXplQ29sdW1uc0J5UmF0aW8oKTtcbiAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB0aGlzLnZpZXdwb3J0Um93cyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcbiAgfVxuXG4gIGF1dG9TaXplQ29sdW1uc0J5UmF0aW8oc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBpZiAoIXZpc2libGVDb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XG5cbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcblxuICAgIGNvbnN0IHRvdGFsT2xkV2lkdGggPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoc3VtLCBjb2wpID0+IHN1bSArIChjb2wud2lkdGggfHwgMCksXG4gICAgICAwXG4gICAgKTtcblxuICAgIGlmICh0b3RhbE9sZFdpZHRoID09PSAwKSByZXR1cm47XG5cbiAgICBpZiAoc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCAmJiAoY29udGFpbmVyV2lkdGggPD0gdG90YWxPbGRXaWR0aCkpIHJldHVybjtcblxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgcmF0aW8gPSBjb2wud2lkdGggLyB0b3RhbE9sZFdpZHRoO1xuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoICogcmF0aW8pLCAxMDApO1xuXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVmcmVzaEhlYWRlcnMoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDApKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNWaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0FueUluVmlzaWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMuZm9vdGVyUm93SGVpZ2h0fSlgO1xuICB9XG5cbiAgZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aXNpYmxlUm93Q291bnQgPSAyNTtcbiAgc3RhcnRJbmRleCA9IDA7XG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwZWRSb3dzKFxuICAgIHJvd3M6IGFueVtdID0gW10sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHJlc3VsdDogYW55W10gPSBbXVxuICApOiBhbnlbXSB7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgcmVzdWx0LnB1c2goeyAuLi5yb3csIF9fZGVwdGg6IGxldmVsIH0pO1xuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyhyb3cuY2hpbGRyZW4sIGxldmVsICsgMSwgW10pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3NpZ25WaXJ0dWFsSW5kZXhlcyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcbiAgICBjb25zdCB3YWxrID0gKGl0ZW1zOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgaWYgKGl0ZW0/LmlzR3JvdXApIHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IGl0ZW07XG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICB3YWxrKGdyb3VwLmNoaWxkcmVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsoZGF0YSk7XG4gICAgLy8gY29uc29sZS5sb2coJ1RoaXMgZGF0YXNldDogJywgdGhpcy52aXNpYmxlUm93cylcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG5cbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcblxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcblxuICAgIGlmICh0aGlzLmRhdGFTZXQ/Lmxlbmd0aCA8PSAxNSkge1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xuICAgICAgdGhpcy5maXJzdEluZGV4ID0gMDtcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdG90YWwgPSBmbGF0RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCB0b3RhbCAtIHRoaXMudmlld3BvcnRSb3dzKTtcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBmaXJzdCk7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWwsIGZpcnN0ICsgdGhpcy52aWV3cG9ydFJvd3MpO1xuXG4gICAgdGhpcy5maXJzdEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5zdGFydEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgdHJhY2tCeVJlbmRlcmVkSW5kZXggPSAoaTogbnVtYmVyLCBfcm93OiBhbnkpID0+IHRoaXMucmVuZGVyU3RhcnQgKyBpO1xuXG4gIC8vIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcbiAgLy8gcHJpdmF0ZSBpc1N5bmNpbmdGcm9tRmFrZSA9IGZhbHNlO1xuICAvLyBwcml2YXRlIG1haW5TY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uaWQgfHwgaXRlbT8uX2lkIHx8IGl0ZW0/LnZhbHVlIHx8IGl0ZW0/Lm5hbWUgfHwgaW5kZXg7XG4gIH1cblxuICBmbGF0dGVuZWREYXRhOiBhbnlbXSA9IFtdO1xuXG4gIHVwZGF0ZUZsYXR0ZW5lZERhdGEoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZsYXR0ZW5lZERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZVkgPSAwO1xuICBsYXN0U2Nyb2xsVG9wID0gMDtcbiAgcGVuZGluZ0FuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgKDEwKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSkgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpO1xuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxpbmdEb3duID0gc2Nyb2xsVG9wID4gdGhpcy5sYXN0U2Nyb2xsVG9wO1xuICAgICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuXG4gICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XG4gICAgICAvLyBjb25zdCBkeW5hbWljT3ZlcnNjYW4gPSBzY3JvbGxpbmdEb3duID8gb3ZlcnNjYW4gOiBvdmVyc2NhbjtcblxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gdGhpcy5vdmVyc2Nhbik7XG4gICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcbiAgICAgICAgbmV3U3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgdGhpcy5vdmVyc2NhblxuICAgICAgKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5zdGFydEluZGV4ICE9PSBzdGFydCB8fCB0aGlzLnZpc2libGVSb3dzLmxlbmd0aCAhPT0gZW5kIC0gc3RhcnQpIHtcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNTY3JvbGxiYXJWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5tYWluU2Nyb2xsKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gZWwuc2Nyb2xsSGVpZ2h0ID4gZWwuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kKHJvdzogYW55KSB7XG4gICAgaWYgKHJvdy5kZXRhaWxzKSB7XG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy5pc0V4cGFuZCA9ICFyb3cuaXNFeHBhbmQ7XG4gICAgfVxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gIH1cblxuICB2aWV3cG9ydFJvd3MgPSAwO1xuICBmaXJzdEluZGV4ID0gMDtcbiAgcmVuZGVyU3RhcnQgPSAwO1xuXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZW5kaW5nU2Nyb2xsVG9wID0gMDtcblxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdmYWtlU2Nyb2xsJykgZmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdob3JpemludGFsRmFrZVNjcm9sbCcpXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbGFibGVCb2R5JylcbiAgY2VudGVyU2Nyb2xsYWJsZUJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDQ7IC8vIGJ1ZmZlciByb3dzIGFib3ZlIGFuZCBiZWxvd1xuXG4gIGNvbXB1dGVWaWV3cG9ydFJvd3MoKSB7XG4gICAgaWYgKHRoaXMuZmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwO1xuXG4gICAgICAvLyByb3dzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgICAgIGNvbnN0IHJvd3NJblZpZXdwb3J0ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xuXG4gICAgICAvLyBhZGQgYnVmZmVyIHJvd3MgKG92ZXJzY2FuKVxuICAgICAgdGhpcy52aWV3cG9ydFJvd3MgPSByb3dzSW5WaWV3cG9ydCArIHRoaXMub3ZlcnNjYW47XG5cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIH1cbiAgfVxuXG4gIG9uQ2VudGVyQm9keVNjcm9sbChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcikge1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25DZW50ZXJIZWFkZXJTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cblxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xuICBkcmFnU3RhcnRJbmRleDogYW55ID0gMDtcbiAgY2FuRW50ZXJUb1Jvd3NHcm91cGluZyA9IChkcmFnOiBDZGtEcmFnPGFueT4sIGRyb3A6IENka0Ryb3BMaXN0PGFueT4pID0+IHtcbiAgICBjb25zdCBkYXRhID0gZHJhZy5kYXRhO1xuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBkYXRhLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuaXNfdmlzaWJsZSAmJiBkYXRhLmlzX2dyb3VwYWJsZTtcbiAgfTtcblxuICBlbnRlclRvVG9wUm93R3JvdXBpbmcoZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcbiAgICAgICk7XG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxuICAgICAgKTtcblxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xuICAgICAgICB0YXJnZXRDb2x1bW4uaXNSb3dHcm91cGVkID0gISF0YXJnZXRDb2x1bW4uaXNfZ3JvdXBhYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Ecm9wTGlzdEVudGVyKFxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcbiAgICBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCdcbiAgKSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uOiBhbnkgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICk7XG5cbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xuXG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh0YXJnZXRDb2x1bW4/LmNoaWxkcmVuKVxuICAgICkge1xuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRDb2x1bW4uY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgIG1hdGNoaW5nQ2hpbGQucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0Q29sdW1uLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XG4gICAgICB0YXJnZXRDb2x1bW5bJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBleGl0ZWRGcm9tVGhlVG9wUm93KGRyb3BMaXN0OiBDZGtEcmFnRXhpdDxhbnk+KSB7XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICAgKTtcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICk7XG5cbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gZmFsc2U7XG4gIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcbiAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IGFsbENoaWxkcmVuRGlzYWJsZWQgPSBjb2wuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXG4gICAgICApO1xuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGFsbENoaWxkcmVuRGlzYWJsZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBjb2wuaXNfZ3JvdXBhYmxlID09PSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xuICBkcmFnU3RhcnRPbkdyb3VwKGNvbDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XG4gIH1cblxuICBvblNvcnRHcm91cCA9IChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNJbmRleCA9PT0gZXZlbnQuY3VycmVudEluZGV4KSByZXR1cm47XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2w6IGFueSkgPT5cbiAgICAgIGNvbD8uY2hpbGRyZW4/LnNvbWU/LigoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSkgPz8gY29sLmlzX3Zpc2libGVcbiAgICApO1xuXG4gICAgY29uc3QgcHJldkNvbCA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IGN1cnJDb2wgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdO1xuXG4gICAgY29uc3QgZ2V0RmllbGRzID0gKGNvbDogYW55KSA9PiBjb2w/LmNoaWxkcmVuPy5tYXAoKGM6IGFueSkgPT4gYy5maWVsZCkgPz8gW2NvbC5maWVsZF07XG4gICAgY29uc3QgYWxsRmllbGRzID0gWy4uLmdldEZpZWxkcyhwcmV2Q29sKSwgLi4uZ2V0RmllbGRzKGN1cnJDb2wpXTtcblxuICAgIGNvbnN0IGNlbGxzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxFbGVtZW50W10+KCk7XG4gICAgYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY2VsbHNNYXAuc2V0KGZpZWxkLCBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W10pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XG4gICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICBjZWxscy5mb3JFYWNoKGVsID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuXG4gICAgLy8gTW92ZSBjb2x1bW5zIGluIGFycmF5c1xuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gcHJldkNvbC5oZWFkZXIpO1xuICAgIGNvbnN0IGN1cnJJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gY3VyckNvbC5oZWFkZXIpO1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmNvbHVtbnMsIHByZXZJbmRleCwgY3VyckluZGV4KTtcblxuICAgIC8vIFNpbmdsZSBkZXRlY3RDaGFuZ2VzIGNhbGwgYmVmb3JlIGFuaW1hdGlvblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAvLyBCYXRjaCBhbmltYXRpb25cbiAgICAgIGNlbGxzTWFwLmZvckVhY2goY2VsbHMgPT4ge1xuICAgICAgICBjZWxscy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpISAtIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgaWYgKCFkZWx0YVgpIHJldHVybjtcblxuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICAgICAgY2VsbHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBlYXNlJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIG9uRHJvcEdyb3VwKCkge1xuICAgIGNvbnN0IGFsbENvbHMgPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgcGlubmVkTGVmdCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgY2VudGVyID0gYWxsQ29scy5maWx0ZXIoYyA9PiAhYy5waW5uZWQpO1xuICAgIGNvbnN0IHBpbm5lZFJpZ2h0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgcmVvcmRlcmVkQ29sdW1ucyA9IFsuLi5waW5uZWRMZWZ0LCAuLi5jZW50ZXIsIC4uLnBpbm5lZFJpZ2h0XTtcbiAgICB0aGlzLmNvbW1vblNldmljZS5hc3NpZ25VbmlxdWVDb2x1bW5JbmRleGVzKHJlb3JkZXJlZENvbHVtbnMpO1xuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XG4gICAgdGhpcy5yaWdodFBpbm5lZENvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zKTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWVwQ2xvbmVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgLi4uY29sLFxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXG4gICAgICAgIDogW10sXG4gICAgICAvLyBSZWN1cnNpdmVseSBkZWVwIGNsb25lIGNoaWxkcmVuIGlmIHByZXNlbnRcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG4gIH1cblxuXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyKSByZXR1cm47XG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xuICAgIGlmIChkcmFnZ2VkRGF0YT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShkcmFnZ2VkRGF0YS5jaGlsZHJlbikpIHtcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XG4gICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGlmIChncm91cD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMTAwMCk7XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgc2hvdWxkVGhlR3JvdXBIZWFkZXJTaG93KGdyb3VwOiBhbnkpIHtcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXA/LmlzX3Zpc2libGUgJiYgIWdyb3VwPy5pc1Jvd0dyb3VwZWQ7XG4gIH1cblxuICBvbkNoaWxkRHJvcGxpc3RTb3J0ZWQgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGlubmVkID1cbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcbiAgICAgICAgPyAnbGVmdCdcbiAgICAgICAgOiBzZWN0aW9uID09ICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJ1xuICAgICAgICAgID8gJ3JpZ2h0J1xuICAgICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxuICAgICk7XG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cbiAgICAgICAgKHBpbm5lZCA9PT0gXCJcIiAmJiAoIWNvbD8ucGlubmVkIHx8IGNvbD8ucGlubmVkID09PSBcIlwiKSkgfHwgY29sPy5waW5uZWQgPT09IHBpbm5lZDtcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcbiAgICBjb25zdCB2aXNpYmxlUHJldkluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxuICAgICk7XG4gICAgY29uc3QgdmlzaWJsZUN1cnJJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxuICAgICk7XG4gICAgY29uc3QgYWxsRmllbGRzID0gW3ByZXZpb3VzRmllbGQsIGN1cnJlbnRGaWVsZF07XG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXG4gICAgICAgIC4uLmFsbEZpZWxkcy5tYXAoKGZpZWxkKSA9PlxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXVxuICAgICAgICApXG4gICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXG4gICAgICAoY29sOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJHcm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcblxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uSW5kZXggPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXBJblNlY3Rpb24uaGVhZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICB0aGlzLmNvbHVtbnNbZ3JvdXBJbmRleF0/LmNoaWxkcmVuLFxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcbiAgICAgIHZpc2libGVDdXJySW5kZXhcbiAgICApO1xuXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgKHRoaXMgYXMgYW55KVtzZWN0aW9uXT8uW2dyb3VwSW5TZWN0aW9uSW5kZXhdLmNoaWxkcmVuLFxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICk7XG5cbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcbiAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xuICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcbiAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXG5cbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuXG4gICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc29sZS5ncm91cCgnR3JvdXA6ICcsIGdyb3VwKTtcbiAgfVxuXG5cbiAgb25DaGlsZERyb3BsaXN0RHJvcGVkKGNka0RyYWdEcm9wZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcbiAgICBjb25zdCBhbGxDb2xzID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHBpbm5lZExlZnQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xuICAgIGNvbnN0IGNlbnRlciA9IGFsbENvbHMuZmlsdGVyKGMgPT4gIWMucGlubmVkKTtcbiAgICBjb25zdCBwaW5uZWRSaWdodCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSBbLi4ucGlubmVkTGVmdCwgLi4uY2VudGVyLCAuLi5waW5uZWRSaWdodF07XG4gICAgdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyhyZW9yZGVyZWRDb2x1bW5zKTtcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMik7XG4gIH1cblxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICBsZXQgZGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcbiAgICBpZiAoIWdyb3VwRmllbGRzLmxlbmd0aCkgcmV0dXJuIGRhdGE7XG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcbiAgICBjb25zdCBncm91cGVkTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU2V0KSB7XG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xuICAgICAgbGV0IGdyb3VwS2V5OiBzdHJpbmc7XG4gICAgICBpZiAoY3VycmVudEZpZWxkID09PSAnaXNfZGVsZXRlZCcgfHwgY3VycmVudEZpZWxkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2lzX2RlbGV0ZWQnKSkge1xuICAgICAgICBpZiAoa2V5VmFsdWUgPT09IHRydWUgfHwga2V5VmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gJ0FyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXlWYWx1ZSA9PT0gZmFsc2UgfHwga2V5VmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICBncm91cEtleSA9ICdVbmFyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XG4gICAgICAgIGlmIChrZXlWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxuICAgICAgICAgICAgLm1hcChvYmogPT4gKG9iaj8uZGVwYXJ0bWVudF9uYW1lIHx8IG9iai5yb2xlTmFtZSB8fCBvYmo/LmZ1bGxfbmFtZSB8fCBvYmo/LnZhbHVlIHx8IG9iaj8ubmFtZSkgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoa2V5VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2Yga2V5VmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihEYXRlLnBhcnNlKGtleVZhbHVlKSkpKSB7XG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBrZXlWYWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBrZXlWYWx1ZSA6IG5ldyBEYXRlKGtleVZhbHVlKTtcbiAgICAgICAgZ3JvdXBLZXkgPSB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUoZGF0ZU9iaiwgdGhpcy5kYXRlRm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0eXBlb2Yga2V5VmFsdWUgPT09ICdvYmplY3QnICYmIGtleVZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGtleVZhbHVlKSkge1xuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlLnZhbHVlID8/XG4gICAgICAgICAga2V5VmFsdWUubmFtZSA/P1xuICAgICAgICAgIGtleVZhbHVlLmlkID8/XG4gICAgICAgICAga2V5VmFsdWUubGFiZWwgPz9cbiAgICAgICAgICBrZXlWYWx1ZVtPYmplY3Qua2V5cyhrZXlWYWx1ZSlbMF1dID8/XG4gICAgICAgICAgXCJfQmxhbmtcIjtcblxuICAgICAgICBpZiAodHlwZW9mIGdyb3VwS2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gXCJfQmxhbmtcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGdyb3VwS2V5KS50cmltKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZSA/IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGtleVZhbHVlKS50cmltKCkpIDogXCJfQmxhbmtcIjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XG4gICAgICBncm91cGVkTWFwLmdldChncm91cEtleSkhLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcbiAgICAgIGlzR3JvdXA6IHRydWUsXG4gICAgICBncm91cEZpZWxkOiBjdXJyZW50RmllbGQsXG4gICAgICBncm91cFZhbHVlLFxuICAgICAgY2hpbGRyZW46IHRoaXMuZ3JvdXBEYXRhKGdyb3VwSXRlbXMsIHJlc3RGaWVsZHMpLFxuICAgICAgaXNFeHBhbmQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHRvVGl0bGVDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyXG4gICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgPy5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgID8uam9pbignICcpO1xuICB9XG5cblxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIGlmICghZ3JvdXAuY2hpbGRyZW4gfHwgIWdyb3VwLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuIDA7XG5cbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gY291bnQgKyAoY2hpbGQuaXNHcm91cCA/IHRoaXMuY291bnRMZWFmUm93cyhjaGlsZCkgOiAxKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSAhdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW47XG4gIH1cblxuICB0b2dnbGVBY3Rpb25zKHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbikgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcbiAgdG9nZ2xlU3ViQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gKHRoaXMucHJlc2V0TmFtZSA9ICcnKSA6ICh0aGlzLnByZXNldE5hbWUgPSB0aGlzLnN0b3JlUHJlc2V0TmFtZSlcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVTdWJCdXR0b24pIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQWN0aW9uc0Ryb3Bkb3duKCkge1xuICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9ICF0aGlzLnNob3dBY3Rpb25zRHJvcERvd247XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuXG4gIGFzeW5jIGNoYW5nZVRhYmxlTGF5b3V0KGV2ZW50OiBFdmVudCwgbGF5b3V0VHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dChsYXlvdXRUeXBlKVxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cyh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKVxuICB9XG5cbiAgc2V0VGFibGVMYXlvdXQobGF5b3V0VHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKCFsYXlvdXRUeXBlKSByZXR1cm47XG4gICAgaWYgKGxheW91dFR5cGUgPT09ICdzbWFsbCcpIHtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gMzY7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQwO1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTA7XG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTA7XG5cbiAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdtZWRpdW0nKSB7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDQ0O1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0NDtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0O1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gNjA7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTY7XG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTY7XG4gICAgfVxuICAgIC8vIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdGFydEluZGV4RGF0YSgpIHtcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQ7XG4gIH1cblxuICBnZXQgZW5kSW5kZXgoKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuc3RhcnRJbmRleCArIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyk7XG4gIH1cblxuICBnZXQgdmlzaWJsZVBhZ2VzKCk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICAgIGNvbnN0IHBhZ2VzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW107XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgPD0gNykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXM7IGkrKykge1xuICAgICAgICBwYWdlcy5wdXNoKGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlcy5wdXNoKDEpO1xuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID4gMykge1xuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcbiAgICAgIH1cbiAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDIsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSk7XG4gICAgICBsZXQgZW5kID0gTWF0aC5taW4odGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAxLCB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSArIDEpO1xuXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIDwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAyKSB7XG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xuICAgICAgfVxuICAgICAgcGFnZXMucHVzaCh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG5cblxuICBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcbiAgdG9nZ2xlQ29sdW1uSW5GaWx0ZXJEcm9wZG93bihjb2w6IGFueSkge1xuXG4gIH1cblxuICByZW1vdmVDb2x1bW5Gcm9tRmlsdGVyKG9wdGlvbjogYW55KSB7XG5cbiAgfVxuXG4gIGhhbmRsZUJhY2tzcGFjZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbGFzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zW3RoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihsYXN0KTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVNlYXJjaElucHV0JykgZmlsdGVyTWVudWVTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCcpIGZpbHRlck1lbnVlVGV4dGNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG5cbiAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sOiBhbnkpIHtcbiAgICBpZiAoY29sLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sPy50eXBlIHx8ICFjb2wuaXNfc2VhcmNoX2FibGUpIHJldHVybjtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5maWx0ZXIoXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxuICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0KSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6ICgoY29sLnR5cGUgPT0gJ2RhdGUnIHx8IGNvbC50eXBlID09ICd0aW1lJyB8fCBjb2wudHlwZSA9PSAnbnVtYmVyJykgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcbiAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uID8gY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA6ICgoY29sLnR5cGUgPT0gJ2RhdGUnIHx8IGNvbC50eXBlID09ICd0aW1lJyB8fCBjb2wudHlwZSA9PSAnbnVtYmVyJykgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTWVudWVUZXh0Y2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXG4gIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyOiBhbnk7XG4gIHNob3dGaWx0ZXJzID0gdGhpcy5zaG93U2lkZU1lbnUgPyBmYWxzZSA6IGZhbHNlO1xuICBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjb2w6IGFueSkge1xuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJyAmJiBjb2wudHlwZSAhPT0gJ2FycmF5JyB8fCAhY29sLmlzX3NlYXJjaF9hYmxlKSByZXR1cm47XG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XG4gIH1cblxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XG4gICAgaWYgKCFjb2wuaXNfc2VhcmNoX2FibGUpIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgIHRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbC50eXBlID09ICdhcnJheScpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcbiAgICAgICAgKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnLCAndGltZSddLmluY2x1ZGVzKGNvbC50eXBlKSkge1xuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9XG4gICAgICAgIGNvbD8ucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiA/P1xuICAgICAgICAoKGNvbC50eXBlID09PSAnbnVtYmVyJyB8fCBjb2wudHlwZSA9PT0gJ3RpbWUnIHx8IGNvbC50eXBlID09PSAnZGF0ZScpXG4gICAgICAgICAgPyAnZXF1YWwnXG4gICAgICAgICAgOiAnY29udGFpbicpO1xuXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcbiAgICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID1cbiAgICAgICAgY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA/P1xuICAgICAgICAoKGNvbC50eXBlID09PSAnbnVtYmVyJyB8fCBjb2wudHlwZSA9PT0gJ3RpbWUnIHx8IGNvbC50eXBlID09PSAnZGF0ZScpXG4gICAgICAgICAgPyAnZXF1YWwnXG4gICAgICAgICAgOiAnY29udGFpbicpO1xuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBmaXJzdFZhbHVlOiBhbnkgPSAnJztcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcbiAgc2Vjb25kVmFsdWU6IGFueSA9ICcnO1xuICBzZWNvbmRDb25kaXRpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjb25kaXRpb246IHN0cmluZyB8IG51bGwgPSAnJztcblxuICByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XG4gICAgdGhpcy5maXJzdFZhbHVlID0gJyc7XG4gICAgdGhpcy5jb25kaXRpb24gPSAnbm9uZSc7XG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2Vjb25kVmFsdWUgPSAnJztcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgfVxuXG4gIHRvZ2dsZUFsbFZhbHVzU2VsZWN0aW9uSW5Ecm9wZG93bkZpbHRlcihjb2x1bW46IGFueSkge1xuXG4gIH1cblxuXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcbiAgICBkZWJ1Z2dlclxuICAgIGNvbnN0IGlkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZS5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uKSlcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgfVxuXG4gIGFwcGx5RHJvcGRvd25GaWx0ZXIoKSB7XG4gICAgY29uc3QgY29sdW1uc3MgPSB0aGlzLmZpbmRDb2x1bW4odGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmZpZWxkKTtcbiAgICBpZiAoIWNvbHVtbnNzKSByZXR1cm47XG5cbiAgICBpZiAoY29sdW1uc3MudHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2x1bW5zcy50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBpZiAoIXRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzIHx8IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLnNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXMoY29sdW1uc3MudHlwZSkpIHtcbiAgICAgIGNvbnN0IGlzRW1wdHkgPVxuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgdGhpcy5maXJzdFZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5maXJzdFZhbHVlID09PSAnJztcblxuICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsb3NlQWxsRmlsdGVyTWVudXMoKTtcbiAgICB0aGlzLmNsb3NlQWxsRXhwYW5kZWRSb3dzKCk7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5maW5kQ29sdW1uKHRoaXMuY29sdW1ucywgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlci5maWVsZCk7XG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0gY29sdW1uLnF1ZXJ5IHx8IHt9O1xuICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IGNvbHVtbi5xdWVyeS5faWRzIHx8IFtdO1xuXG4gICAgICAgIC8vIFJlbW92ZSBzdGFsZSBJRHMgKG5vdCBwcmVzZW50IGluIFNldClcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcy5maWx0ZXIoXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgIGlmICghY29sdW1uLnF1ZXJ5Ll9pZHMuaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogdGhpcy5maXJzdENvbmRpdGlvbiB8fCAnY29udGFpbicsXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxuICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuY29uZGl0aW9uIDogJ25vbmUnLFxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246IHRoaXMuc2Vjb25kVmFsdWUgPyB0aGlzLnNlY29uZENvbmRpdGlvbiA6IG51bGwsXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyID0ge1xuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcbiAgICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcblxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xuICAgIH1cblxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJzKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIHByaXZhdGUgZmluZENvbHVtbihjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHJldHVybiBjb2w7XG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmRDb2x1bW4oY29sLmNoaWxkcmVuLCBmaWVsZCk7XG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbHVtbjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc0NvbmZpZz8uc29tZShjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8uY2hlY2tlZDtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb2wucXVlcnkuX2lkcyA9IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5tYXAoXG4gICAgICAgIChvcHQ6IGFueSkgPT4gb3B0LmlkIHx8IG9wdC5faWQgfHwgb3B0XG4gICAgICApO1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oY29sLnF1ZXJ5Ll9pZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuXG4gIGlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghY29sPy5xdWVyeT8uX2lkcyB8fCAhQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBjb2wucXVlcnkuX2lkcy5sZW5ndGggPT09IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgb25PcHRpb25Ub2dnbGUoY29sOiBhbnksIG9wdGlvbjogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uSWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XG4gICAgaWYgKCFjb2wucXVlcnkuX2lkcykge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBbXTtcbiAgICB9XG4gICAgY29uc3QgaWR4ID0gY29sLnF1ZXJ5Ll9pZHMuaW5kZXhPZihvcHRpb25JZCk7XG4gICAgaWYgKGlkeCA+IC0xKSB7XG4gICAgICBjb2wucXVlcnkuX2lkcy5zcGxpY2UoaWR4LCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMucHVzaChvcHRpb25JZCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgcmVzZXRTaWRlRmlsdGVyKGNvbDogYW55KSB7XG4gICAgY29uc3QgcmVzZXRDb2x1bW5SZWN1cnNpdmVseSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLmZpZWxkID09PSBjb2wuZmllbGQpIHtcbiAgICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XG4gICAgICAgICAgICBfaWRzOiBbXSxcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxuICAgICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXG4gICAgICAgICAgICBjb25kaXRpb246ICdub25lJyxcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sdW1uPy5jaGlsZHJlbikgJiYgY29sdW1uPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkoY29sdW1uLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICByZXNldENvbHVtblJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG5cbiAgY2xlYXJBbGxGaWx0ZXJzKHNob3VsZFVwZGF0ZUNvbmZpZ0xpc3RpbmcgPSBmYWxzZSkge1xuICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMgPSBbXTtcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XG4gICAgY29uc3QgcmVzZXRBbGxSZWN1cnNpdmVseSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLnF1ZXJ5KSB7XG4gICAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgICAgX2lkczogW10sXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJlc2V0QWxsUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XG4gICAgaWYgKCFzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nKSB7XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgaWYgKCFzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfSwgMzAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGFwcGx5U2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXG4gICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICBfaWRzOiBjb2x1bW4uX2lkcyB8fCBbXVxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuXG4gIHJlbW92ZVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmNsb3NlQWxsRXhwYW5kZWRSb3dzKCk7XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGV4aXN0aW5nSW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpIHtcbiAgICBpZiAodGhpcy5leHBhbmRlZENlbGxzPy5zaXplID4gMCkge1xuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuXG4gIHRyYWNrQnlGaWVsZChpbmRleDogbnVtYmVyLCBjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbD8uZmllbGQ7XG4gIH1cblxuICBnZXQgYWN0aXZlRmlsdGVyZWRDb2x1bW5zKCk6IGFueVtdIHtcbiAgICBjb25zdCBjb2xsZWN0RmlsdGVyZWQgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xuXG4gICAgICBjb2x1bW5zPy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNJbkZpbHRlcnNDb25maWcgPSB0aGlzLmZpbHRlcnNDb25maWcuc29tZShmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG4gICAgICAgIGlmIChpc0luRmlsdGVyc0NvbmZpZykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICByZXR1cm4gY29sbGVjdEZpbHRlcmVkKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuXG5cblxuICB0b2dnbGVPcGVuRmlsdGVyKCkge1xuICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSAhdGhpcy5zaG93RmlsdGVycztcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cblxuICAvLyBDZWxsIEVkaXRpbmcgV29yayBzdGFydCBoZXJlXG5cbiAgZWRpdGluZ0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGFjdGl2ZUNlbGw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHNldEFjdGl2ZUNlbGwocm93OiBhbnksIGNvbHVtbjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJDZWxsIExvY2F0aW9uOiBcIiwgcm93Ll9fdmlydHVhbEluZGV4ICsgJycgKyBjb2x1bW4/LmluZGV4KTtcbiAgICB0aGlzLmFjdGl2ZUNlbGwgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc0FjdGl2ZUNlbGwocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2VsbCA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWFkSW5wdXQnKSB0ZXh0QXJlYWRJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG4gIG1lbnVSZWFkeSA9IGZhbHNlO1xuICBlbmFibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY2xpY2tlZEZyb21EZXRhaWxzQm94ID0gZmFsc2UsIGNlbGxDb250YWluZXI/OiBIVE1MRWxlbWVudCkge1xuICAgIGlmICgoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sdW1uLnR5cGUgPT0gJ2FycmF5JykgJiYgIWNvbHVtbj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XG4gICAgaWYgKHJvdz8uX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuO1xuICAgIGlmICghY29sdW1uPy5pc19lZGl0YWJsZSkgcmV0dXJuO1xuICAgIHRoaXMubWVudVJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGRyb3Bkb3duTWVudSkge1xuICAgICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBkcm9wZG93bk1lbnUub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9XG4gICAgICAgICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3QgbWVudVJlY3QgPSBkcm9wZG93bk1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3BhY2VCZWxvdyA9IGNvbnRhaW5lclJlY3QuYm90dG9tIC0gbWVudVJlY3QudG9wO1xuICAgICAgICAgIGNvbnN0IHNwYWNlQWJvdmUgPSBtZW51UmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCAtICh0aGlzLnNob3dGaWx0ZXJSb3cgJiYgdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nID8gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiAzIDogKHRoaXMuc2hvd0ZpbHRlclJvdyB8fCB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgPyB0aGlzLmhlYWRlclJvd0hlaWdodCAqIDIgOiB0aGlzLmhlYWRlclJvd0hlaWdodCkpIC0gKHRoaXMuc2hvd1Jvd3NHcm91cGluZyA/IHRoaXMudG9wRmlsdGVyUm93SGVpZ2h0IDogMCk7XG5cbiAgICAgICAgICBpZiAoc3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gYC0ke21lbnVIZWlnaHR9cHhgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY2xpY2tlZEZyb21EZXRhaWxzQm94ICYmIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpPy5sZW5ndGggPiA1MCkge1xuICAgICAgdGhpcy50b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbHVtbiwgdGhpcy5jb2x1bW5zLCBmYWxzZSlcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWNlbGxDb250YWluZXIpIHJldHVybjtcblxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duQnV0dG9uID0gY2VsbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICcuZHJvcGRvd24tZWRpdC1idXR0b24nXG4gICAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGlmIChkcm9wZG93bkJ1dHRvbikge1xuICAgICAgICAgIGRyb3Bkb3duQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGhpcy5nZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZHJvcGRvd25CdXR0b24pO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgc2VsPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIHNlbD8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0Om5vdChbdHlwZT1cImZpbGVcIl0pLCB0ZXh0YXJlYSwgc2VsZWN0LCBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSdcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgIGZvY3VzYWJsZS5zdHlsZS5mb250U2l6ZSA9ICcxNnB4JztcbiAgICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGZvY3VzYWJsZS5zZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgICAgICAgKGZvY3VzYWJsZS50eXBlID09PSAnZGF0ZScgfHwgZm9jdXNhYmxlLnR5cGUgPT09ICd0aW1lJykgJiZcbiAgICAgICAgICB0eXBlb2YgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNWYWx1ZVZhbGlkKHJvdzogYW55LCBjb2x1bW46IGFueSwgY29udHJvbDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgY29udHJvbD8uY29udHJvbD8udmFsdWUpXG4gIH1cblxuICBkaXNhYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w/OiBhbnkpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIGlmICghdGhpcy5lZGl0aW5nS2V5KSByZXR1cm5cbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnByaXN0aW5lKSB7XG4gICAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLnR5cGUgIT09ICdkcm9wZG93bicgJiYgY29sdW1uLnR5cGUgIT09ICdhcnJheScgJiYgY29udHJvbD8uaW52YWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8uY29udHJvbD8udmFsdWU7XG4gICAgY29uc3QgdmlzaWJsZVJvdyA9IHRoaXMudmlzaWJsZVJvd3MuZmluZChyID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgaWYgKHZpc2libGVSb3cpIHtcbiAgICAgIHRoaXMuc2V0TmVzdGVkRmxhdFZhbHVlKHZpc2libGVSb3csIGNvbHVtbj8uZmllbGQsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgdmFsdWUpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdywgY29sdW1uLCB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgaWYgKChjb2x1bW4udHlwZSA9PSAnZW1haWwnICYmICF0aGlzLnZhbGlkYXRlRW1haWwoY3VycmVudCkpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmQoaXRlbSA9PiAoKGl0ZW0uaWQgJiYgaXRlbS5pZCA9PSByb3cuaWQpIHx8IChpdGVtLmlkICYmIGl0ZW0uaWQgPT0gcm93Ll9pZCkpKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLCBvcmlnaW5hbCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25JbWFnZUNoYW5nZShldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKCFpbnB1dC5maWxlcyB8fCAhaW5wdXQuZmlsZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICBpZiAoIWZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnNldE5lc3RlZEZsYXRWYWx1ZShyb3csIGNvbC5maWVsZCwgcmVhZGVyLnJlc3VsdCk7XG4gICAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbCwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH1cblxuICBzZXROZXN0ZWRGbGF0VmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm47XG5cbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGlmICghYWNjW2tleV0pIGFjY1trZXldID0ge307XG4gICAgICByZXR1cm4gYWNjW2tleV07XG4gICAgfSwgb2JqKTtcblxuICAgIHBhcmVudFtsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgdmFsaWRhdGVFbWFpbCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW1haWxSZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcbiAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3c6IGFueSwgY29sdW1uOiBhbnksIHZhbHVlPzogYW55KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldD8uZmluZChcbiAgICAgIChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKVxuICAgICk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5kYXRhU2V0Py5maW5kKChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgY29uc3QgY2hhbmdlZFZhbHVlID0gb3JpZ2luVmFsdWUudmVyaWZpZWQgPT0gdmFsdWU7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHsgLi4ub3JpZ2luVmFsdWUgfSxcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgdmFsdWU6IGNvbHVtbi50eXBlICE9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgdmFsdWVzOiBjb2x1bW4udHlwZSA9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopXG4gIH1cblxuXG4gIGlzRWRpdGluZyhyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nS2V5ID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBmb2N1c0FmdGVyVmFsdWVTZWxlY3Qocm93SW5kZXg6IGFueSwgY29sSW5kZXg6IGFueSwgc3ViY29sSW5kZXg6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViY29sSW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChvYmosIGNvbHVtbiwgb3B0aW9uKTtcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFZhbGlkYXRpb24gRXJyb3Igb24gZmllbGQgJHtjb2x1bW59YClcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgb2JqKTtcblxuICAgIGlmIChwYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uKSkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb24ubWFwKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IHR5cGVvZiBzZWxlY3RlZEl0ZW0gPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbS5pZCA/PyBzZWxlY3RlZEl0ZW0uX2lkID8/IHNlbGVjdGVkSXRlbS52YWx1ZSA/PyBzZWxlY3RlZEl0ZW0ubmFtZSA/PyBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgIDogc2VsZWN0ZWRJdGVtO1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+XG4gICAgICAgICAgICAob3B0Ll9pZCAmJiBvcHQuX2lkID09PSBzZWxlY3RlZElkKSB8fCAob3B0LmlkICYmIG9wdC5pZCA9PT0gc2VsZWN0ZWRJZClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoID8geyAuLi5tYXRjaCB9IDogeyBpZDogc2VsZWN0ZWRJZCwgdmFsdWU6IHNlbGVjdGVkSWQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gb3B0aW9uLmlkID8/IG9wdGlvbi5faWQgPz8gb3B0aW9uLnZhbHVlID8/IG9wdGlvbi5uYW1lID8/IG9wdGlvbjtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+IChvcHQuX2lkICYmIG9wdC5faWQgPT09IHNlbGVjdGVkSWQpIHx8IChvcHQuaWQgJiYgb3B0LmlkID09PSBzZWxlY3RlZElkKSk7XG5cbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gbWF0Y2ggPyB7IC4uLm1hdGNoIH0gOiB7IGlkOiBzZWxlY3RlZElkLCB2YWx1ZTogc2VsZWN0ZWRJZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0geyBpZDogb3B0aW9uLCB2YWx1ZTogb3B0aW9uIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhU2V0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5hbERhdGFTZXQpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQuZmluZEluZGV4KHIgPT5cbiAgICAgICAgKHI/LmlkICYmIHI/LmlkID09PSBvYmo/LmlkKSB8fCAocj8uX2lkICYmIHIuX2lkID09PSBvYmouX2lkKVxuICAgICAgKTtcbiAgICAgIGlmIChvcmlnaW5hbFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgdGhpcy5vcmlnaW5hbERhdGFTZXRbb3JpZ2luYWxSb3dJbmRleF0pO1xuICAgICAgICBpZiAob3JpZ2luYWxQYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgICAgIG9yaWdpbmFsUGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNldCkpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXRSb3dJbmRleCA9IHRoaXMuZGF0YVNldC5maW5kSW5kZXgociA9PlxuICAgICAgICAoci5pZCAmJiByLmlkID09PSBvYmouaWQpIHx8IChyLl9pZCAmJiByLl9pZCA9PT0gb2JqLl9pZClcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YXNldFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBkYXRhc2V0UGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gYWNjW2tleV0gPz89IHt9LCB0aGlzLmRhdGFTZXRbZGF0YXNldFJvd0luZGV4XSk7XG4gICAgICAgIGlmIChkYXRhc2V0UGFyZW50ICYmIGxhc3RLZXkpIHtcbiAgICAgICAgICBkYXRhc2V0UGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhbGxlZEZyb21JbnB1dCkge1xuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUob2JqLCBjb2x1bW4sIG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcm9sbEJhY2tDZWxsVmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyb3cgfHwgIWNvbHVtbikgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMub3JpZ2luYWxEYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbi5maWVsZCk7XG5cbiAgICBjb25zdCB2aXNpYmxlUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMudmlzaWJsZVJvd3MsIHJvdy5pZCA/PyByb3cuX2lkKTtcbiAgICBpZiAodmlzaWJsZVJvdykgdmlzaWJsZVJvd1tjb2x1bW4uZmllbGRdID0gb3JpZ2luYWxWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFSb3cgPSB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5maW5kT3JpZ2luYWxSb3codGhpcy5kYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKGRhdGFSb3cpIGRhdGFSb3dbY29sdW1uLmZpZWxkXSA9IG9yaWdpbmFsVmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhcnJheVRlbXBNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgcHJpdmF0ZSBhcnJheUtleShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyb3cuaWQgfHwgcm93Ll9pZH1fJHtjb2wuZmllbGR9YDtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uSWQob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24uaWQgPz8gb3B0aW9uLl9pZDtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWUgPz8gb3B0aW9uLm5hbWUgPz8gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uKTtcbiAgfVxuXG4gIGdldEFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnkpOiBhbnlbXSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5hcnJheUtleShyb3csIGNvbCk7XG5cbiAgICBpZiAoIXRoaXMuYXJyYXlUZW1wTWFwLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQpXG4gICAgICAgID8gY3VycmVudC5tYXAodiA9PiB0aGlzLmdldEFycmF5T3B0aW9uSWQodikpXG4gICAgICAgIDogW107XG5cbiAgICAgIHRoaXMuYXJyYXlUZW1wTWFwLnNldChrZXksIG5vcm1hbGl6ZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5VGVtcE1hcC5nZXQoa2V5KSE7XG4gIH1cblxuXG4gIGlzQXJyYXlTZWxlY3RlZChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpLmluY2x1ZGVzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZUFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpO1xuXG4gICAgdGhpcy5hcnJheVRlbXBNYXAuc2V0KFxuICAgICAgdGhpcy5hcnJheUtleShyb3csIGNvbCksXG4gICAgICBsaXN0LmluY2x1ZGVzKGlkKSA/IGxpc3QuZmlsdGVyKHYgPT4gdiAhPT0gaWQpIDogWy4uLmxpc3QsIGlkXVxuICAgICk7XG4gIH1cblxuICBjb21taXRBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG4gICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgaWRzLCB0cnVlKTtcbiAgfVxuXG5cbiAgb25BcnJheUJsdXIocm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21taXRBcnJheShyb3csIGNvbCk7XG4gIH1cblxuXG4gIGNsZWFudXBBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFycmF5VGVtcE1hcC5kZWxldGUodGhpcy5hcnJheUtleShyb3csIGNvbCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gIH1cblxuXG4gIGRpc3BsYXlBcnJheVZhbHVlcyhpZHM6IGFueVtdLCBjb2w/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghY29sKSByZXR1cm4gaWRzLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICAgIChjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdKS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xuICAgICAgbWFwLnNldCh0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0KSwgb3B0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHNcbiAgICAgIC5tYXAoaWQgPT4gbWFwLmdldChpZCk/LnZhbHVlID8/IG1hcC5nZXQoaWQpPy5uYW1lID8/IGlkKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBkaXNwbGF5QXJyYXlMYWJlbHMocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG5cbiAgICBpZiAoIWlkcy5sZW5ndGgpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8YW55LCBhbnk+KCk7XG4gICAgKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfHwgW10pLmZvckVhY2goKG9wdDogYW55KSA9PiB7XG4gICAgICBtYXAuc2V0KHRoaXMuZ2V0QXJyYXlPcHRpb25JZChvcHQpLCBvcHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkc1xuICAgICAgLm1hcChpZCA9PiBtYXAuZ2V0KGlkKT8udmFsdWUgPz8gbWFwLmdldChpZCk/Lm5hbWUgPz8gaWQpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG5cblxuXG5cbiAgZ29Ub1BhZ2UocGFnZTogYW55KSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZz8ucGFnZSA9PSBwYWdlKSByZXR1cm47XG4gICAgaWYgKHBhZ2UgPCAxIHx8IHBhZ2UgPiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gcGFnZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxuICAgIH07XG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSAxO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBvYmo6IHtcbiAgICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxuICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlLFxuICAgICAgICB9LFxuICAgICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcbiAgICAgIH07XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuICAgIH0sIDcwMCk7XG4gIH1cblxuICBhY3Rpb25QcmVzZXQoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBkYXRhLmNvbHVtbnMgPSBkYXRhPy5jb2x1bW5zPy5tYXAoKHsgX2lkLCBmaWx0ZXJWYWx1ZSwgc2VhcmNoLCBjb2x1bW5fZHJvcGRvd25fdmFsdWUsIHF1ZXJ5LCBfX3R5cGVuYW1lLCAuLi5yZXN0IH06IGFueSkgPT4gcmVzdCk7XG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xuXG4gICAge1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxuICAgICAgICBkYXRhPy5maWx0ZXJzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5fX3R5cGVuYW1lO1xuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcbiAgICB9XG4gICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XG4gICAgZGVsZXRlIGRhdGE/LmlzX3RlbXA7XG4gICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IHR5cGVcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIGN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9ICcnO1xuICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU6IGFueTtcbiAgdGVtcF9zdGF0ZSA9IHtcbiAgICBpZDogJycsXG4gICAgaXNfdGVtcDogZmFsc2VcbiAgfVxuICBhc3luYyBzZWxlY3RGaWx0ZXIoZGF0YTogYW55KSB7XG4gICAgdGhpcy50ZW1wX3N0YXRlID0ge1xuICAgICAgaWQ6IGRhdGEuaWQsXG4gICAgICBpc190ZW1wOiB0cnVlXG4gICAgfVxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcbiAgICB0aGlzLnRhYmxlVmlldyA9IHRoaXMudGFibGVWaWV3Lm1hcChpdGVtID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgaXNfdGVtcDogaXRlbS5pZCA9PSBkYXRhPy5pZFxuICAgIH0pKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAge1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxuICAgICAgICBkYXRhLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcblxuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplLFxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBkYXRhLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGRhdGEuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcixcbiAgICAgICAgdGhpcy5jdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSBkYXRhLmlkO1xuICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XG4gICAgICB0aGlzLnByZXNldE5hbWUgPSBkYXRhPy5uYW1lO1xuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBkYXRhPy5hY3RpdmVGaWx0ZXJzIHx8IGZhbHNlO1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnID0gZGF0YS5maWx0ZXJzO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGRhdGEuY29sdW1ucyA9IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICBkZWxldGUgZGF0YT8uX190eXBlbmFtZTtcbiAgICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xuICAgICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xuICAgIH1cbiAgICBpZiAoZGF0YT8uaXNfZGVhZnVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uUHJlc2V0KGRhdGEsICdzZXRQcmVzZXQnKVxuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnc2VsZWN0J1xuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgc2F2ZVByZXNldChjb250cm9sPzogYW55KSB7XG4gICAgaWYgKGNvbnRyb2w/LmludmFsaWQpIHtcbiAgICAgIGNvbnRyb2w/LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEZpbHRlckhlYWRlcnModGhpcy5maWx0ZXJzQ29uZmlnLCB0aGlzLmNvbHVtbnMpO1xuICAgIHRoaXMucHJlc2V0RmlsdGVyID0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCA/IHRydWUgOiB0aGlzLnByZXNldEZpbHRlcjtcbiAgICBsZXQgc2VsZWN0ZWREYXRhOiBhbnkgPSB0aGlzLnRhYmxlVmlldy5maW5kKChlbGUpID0+IGVsZS5pZCA9PSB0aGlzLnRhYmxlRmlsdGVyVmlld0lkKTtcbiAgICBsZXQgY29uZmlnID0ge1xuICAgICAgZm9udEZhaW1seTogdGhpcy5mb250RmFpbWx5LFxuICAgICAgYm9keVRleHRGb250c1NpemU6ICsodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxNCksXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiArKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNCksXG4gICAgICBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkLFxuICAgICAgc2hvd1ZlcnRpY2FsQm9yZGVyOiB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcixcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcbiAgICAgIGdsb2JhbFNlYXJjaDogdGhpcy50YWJsZVNlYXJjaCxcbiAgICAgIGZpbHRlck5hbWVzOiBuYW1lcyxcbiAgICAgIHRvdGFsQ291bnQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMsXG4gICAgICByb3dTaGFkaW5nRW5hYmxlZDogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZFxuXG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIG5hbWU6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyBzZWxlY3RlZERhdGE/Lm5hbWUgOiB0aGlzLnByZXNldE5hbWUsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnM6IHRoaXMucHJlc2V0RmlsdGVyLFxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgICBmaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlclxuICAgICAgICAgID8gdGhpcy5maWx0ZXJzQ29uZmlnPy5tYXAoKHsgX190eXBlbmFtZSwgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBfX3R5cGVuYW1lOiBfX2lubmVyLCAuLi5jbGVhblF1ZXJ5IH0gPSBxdWVyeSB8fCB7fTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3QsIHF1ZXJ5OiBjbGVhblF1ZXJ5IH07XG4gICAgICAgICAgfSlcbiAgICAgICAgICA6IFtdLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgaWQ6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgfHwgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU/LmlkLFxuICAgICAgICBsb2FkaW5nQ2FsbDogY29udHJvbCA9PSAnbW91c2VVcCcgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8ICF0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gJ3VwZGF0ZVByZXNldCcgOiAnY3JlYXRlUHJlc2V0J1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XG4gICAgY29uc3QgY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyA9IGZpbHRlcmVkQ29sdW1ucy5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA1MDApO1xuICB9XG5cblxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZEhlYWRlcnMgPSBmaWx0ZXJzXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbiA/IGNvbHVtbi5oZWFkZXIgOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcblxuICAgIHJldHVybiBtYXRjaGVkSGVhZGVycy5qb2luKCcsICcpO1xuICB9XG5cblxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xuICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyAnI2YxZjFmMScgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHRyYWNrQnlUYWJsZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgYWN0aXZlUm93OiBhbnlcbiAgYWN0aXZlUm93Q29sOiBhbnk7XG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nZXRSb3dJZChyb3cpfV8ke2NvbD8uZmllbGR9YDtcbiAgfVxuXG4gIGV4cGFuZGVkQ2VsbHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHpDb3VudGVyID0gMjE7XG5cbiAgc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcblxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcbiAgICByb3c6IGFueSxcbiAgICBjb2w6IGFueSxcbiAgICBjb2x1bW5zOiBhbnlbXSxcbiAgICBleHBhbmRXaG9sZVJvdyA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcblxuICAgICAgICBpZiAoKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwKSB8fCAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Py5sZW5ndGggPiAxKSkge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XG4gICAgICAgICAgdGhpcy56Q291bnRlcisrO1xuICAgICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuXG4gICAgY29uc3QgY29sbGVjdEtleXNGb3JSb3cgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0ZXh0ID0gdGFyZ2V0Um93W2MuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQubGVuZ3RoID4gNTAgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGtleXM7XG4gICAgfTtcblxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xuICAgICAgbGV0IHJvd0tleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJvd0tleXMgPSBjb2xsZWN0S2V5c0ZvclJvdyhyb3cpO1xuICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhbGxFeHBhbmRlZCA9IHJvd0tleXMuZXZlcnkoayA9PiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGspKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgaWYgKCFhbGxFeHBhbmRlZCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cuY2hpbGRyZW4pICYmIHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcbiAgICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiBleHBhbmRDZWxscyhjaGlsZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkO1xuICAgICAgaWYgKGNvbC50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgICB0aGlzLnpDb3VudGVyKys7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcbiAgICB9LCAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc09wZW5Ub1RvcChyb3c6IGFueSkge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHknKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKCF3cmFwcGVyKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpZCA9IChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpO1xuICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGJveFJlY3QgPSBib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nVG9wID0gYm94UmVjdC50b3AgPCB3cmFwcGVyUmVjdC50b3A7XG4gICAgICBpZiAoaXNPdmVyZmxvd2luZ0JvdHRvbSAmJiAhaXNPdmVyZmxvd2luZ1RvcCkge1xuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJveEhlaWdodCArIDQ7XG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgJHstb2Zmc2V0fXB4YDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm94LnN0eWxlLmJvdHRvbSA9IGBhdXRvYDtcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcbiAgICAgICAgYm94LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKDApYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KVxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cblxuXG5cblxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBnZXRaSW5kZXgocm93OiBhbnksIGNvbDogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmdldCh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpID8/IDIxO1xuICB9XG5cbiAgaXNPdmVyZmxvd2luZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIC8vIFBpY3R1cmUgY2VsbCBMb2dpY1xuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xuICBnZXREeW5hbWljQ2xhc3MobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25bMF07XG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XG4gICAgY29uc3QgaW5kZXggPSBoYXNoICUgdGhpcy5jb2xvckNvbWJpbmF0aW9uPy5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JDb21iaW5hdGlvbltpbmRleF07XG4gIH1cblxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSB8fCAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xuICB4UG9zID0gMDtcbiAgeVBvcyA9IDA7XG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBkZWF0aWxzTGlzdDogYW55O1xuICBvcGVuRXhwZW5kSW5kZXg6IGFueTtcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xuXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBhbnksIGRlYXRpbHNMaXN0OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEFjdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnZhbGlkYXRlSWNvbikge1xuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMgPSBbLi4udGhpcy5hY3Rpb25zXTsgLy8gRGVlcCBjb3B5IHRvIHByZXNlcnZlIG9yaWdpbmFsXG4gICAgfVxuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMudmFsaWRhdGVJY29uXG4gICAgICA/IHRoaXMuZ2V0VmFsaWRBY3Rpb25zKGRlYXRpbHNMaXN0KVxuICAgICAgOiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCA/IGRlYXRpbHNMaXN0LmFjdGlvbnMgOiB0aGlzLmFjdGlvbnMpO1xuXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgY2xpY2tYID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIGNvbnN0IGNsaWNrWSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcblxuICAgIHRoaXMueFBvcyA9IGNsaWNrWDtcbiAgICB0aGlzLnlQb3MgPSBjbGlja1k7XG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuZGVhdGlsc0xpc3QgPSBkZWF0aWxzTGlzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGV4dC1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBtZW51V2lkdGggPSBtZW51RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBjb25zdCB0YWJsZVJlY3QgPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB0YWJsZVRvcCA9IHRhYmxlUmVjdC50b3A7XG4gICAgICBjb25zdCB0YWJsZUJvdHRvbSA9IHRhYmxlUmVjdC5ib3R0b207XG4gICAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlUmVjdC5oZWlnaHQ7XG5cbiAgICAgIGxldCB4ID0gY2xpY2tYO1xuICAgICAgbGV0IHkgPSBjbGlja1k7XG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgICAgeCA9IHZpZXdwb3J0V2lkdGggLSBtZW51V2lkdGggLSAxMDtcbiAgICAgIH1cbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHRhYmxlQm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGlja1kgLSBtZW51SGVpZ2h0O1xuICAgICAgICBpZiAoeSA8IHRhYmxlVG9wKSB7XG4gICAgICAgICAgeSA9IHRhYmxlQm90dG9tIC0gbWVudUhlaWdodCAtIDEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh5IDwgdGFibGVUb3ApIHtcbiAgICAgICAgeSA9IHRhYmxlVG9wICsgMTA7XG4gICAgICB9XG4gICAgICB0aGlzLnhQb3MgPSB4O1xuICAgICAgdGhpcy55UG9zID0geTtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IHNlbmRPYmogPSB7XG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXG4gICAgICBldmVudFR5cGU6IGFjdGlvbixcbiAgICB9O1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopO1xuICB9XG5cblxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlkc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xuICAgICAgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlLnB1c2goe1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgb2JqOiBpZHNBcnJheSxcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxuICB9XG5cbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRDZWxsQ2xhc3Nlcyhjb2x1bW4sIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlckZyb21Db2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gW107XG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZSddLmluY2x1ZGVzKGNvbHVtbi50eXBlKSkge1xuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIG9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpIHtcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgY2xlYW5GaWx0ZXJkQ29sdW1ucygpIHtcbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xuICB9XG5cbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcbiAgICBjb25zdCBjb25maWc6IGFueSA9IHtcbiAgICAgIGhlYWRlckJnQ29sb3I6IHRoaXMuaGVhZGVyQmFja2dyb3VuZENvbG9yLFxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcbiAgICAgIGJvZHlUZXh0Q29sb3I6ICcjMDAwMDAwJyxcbiAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhaW1seSxcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgem9vbVNjYWxlOiAxMjUsXG4gICAgICBoZWFkZXJSb3dIZWlnaHQ6IDMwXG4gICAgfVxuICAgIGlmICh0aGlzLmVuYWJsZUV4cG9ydCkge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBtbSA9IFN0cmluZyhub3cuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCB5eXl5ID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIGNvbnN0IE1NID0gU3RyaW5nKG5vdy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPVxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XG5cbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdHRlZCk7XG5cbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnREYXRhKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhU2V0LCBmb3JtYXR0ZWQsIHR5cGUsIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLCBjb25maWcpO1xuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgIGZpbHRlcnM6IFtdXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnZG93bmxvYWRDc3YnXG4gICAgfVxuICAgIGlmICh0eXBlID09ICd4bHN4Jykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG5cbiAgfVxuXG4gIG9uRm9udENoYW5nZSgpIHtcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplLFxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2hcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgZGF0YTogY29uZmlnXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnY29uZmlnJ1xuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgb25HbG9iYWxTZWFyY2goKSB7XG4gICAgdGhpcy5jbG9zZUFsbEV4cGFuZGVkUm93cygpO1xuXG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgdGFibGVTZWFyY2g6IHRoaXMudGFibGVTZWFyY2hcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gIH1cblxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudGFibGVTZWFyY2ggPSAnJztcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKTogYW55IHtcbiAgICBpZiAoIXRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHJldHVybiB0cnVlXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XG4gICAgY29uc3Qgbm9ybWFsaXplRmlsdGVycyA9IChmaWx0ZXJzOiBhbnlbXSB8IHVuZGVmaW5lZCk6IGFueVtdID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkgcmV0dXJuIFtdO1xuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGYgPz8ge30pKTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0uX2lkcykpIGl0ZW0uX2lkcyA9IFtdO1xuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XG4gICAgICAgICAgcmV0dXJuICgnJyArIGEpLmxvY2FsZUNvbXBhcmUoJycgKyBiKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGl0ZW0ucXVlcnkgPT09IG51bGwpIHtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbS5xdWVyeS5faWRzKSkgaXRlbS5xdWVyeS5faWRzID0gW107XG4gICAgICAgICAgaXRlbS5xdWVyeS5faWRzID0gaXRlbS5xdWVyeS5faWRzLnNsaWNlKCkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XG4gICAgICAgICAgICByZXR1cm4gKCcnICsgYSkubG9jYWxlQ29tcGFyZSgnJyArIGIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICAgIGNsb25lZC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmYSA9IChhLmZpZWxkIHx8ICcnKSArICd8JyArIChhLnR5cGUgfHwgJycpO1xuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xuICAgICAgICByZXR1cm4gZmEubG9jYWxlQ29tcGFyZShmYik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVlcEVxdWFsID0gKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYSA9PT0gYjtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkgIT09IEFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICAgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgICAgICBpZiAoIWtleXNCLmluY2x1ZGVzKGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRBID0gbm9ybWFsaXplRmlsdGVycyhmaW5kRGVmYXVsdEZpbHRlcj8uZmlsdGVycyk7XG4gICAgY29uc3Qgbm9ybWFsaXplZEIgPSBub3JtYWxpemVGaWx0ZXJzKHRoaXMuZmlsdGVyc0NvbmZpZyk7XG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XG4gICAgcmV0dXJuIGlzU2FtZTtcbiAgfVxuXG5cblxuXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gUm93IFNlbGVjdGlvbiBmcm9tIHRoZSBJbmRleGluZyBJbXBsZW1lbnRlZCBIZXJlXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICByb3dTZWxlY3RlZEluZGV4ZXM6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpO1xuICByb3dTZWxlY3RpbmcgPSBmYWxzZTtcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGF1dG9TY3JvbGxJbnRlcnZhbDogYW55ID0gbnVsbDtcblxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcbiAgfVxuXG4gIGdldCBsYXN0U2VsZWN0ZWRSb3coKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBNYXRoLm1heCguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XG4gIH1cblxuXG4gIG9uUm93TW91c2VEb3duKGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJvd1NlbGVjdGluZyA9IHRydWU7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZEtleXMuY2xlYXIoKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmFjdGl2ZUNlbGwgPSBudWxsO1xuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IGluZGV4O1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuYWRkKGluZGV4KTtcbiAgICB0aGlzLmFjdGl2ZUNlbGwgPSAnJztcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBjb25zdCBtb3VzZU1vdmVIYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuaGFuZGxlQXV0b1Njcm9sbChlKTtcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIHRoaXMub25Sb3dNb3VzZVVwKCk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gIH1cblxuICBvblJvd01vdXNlT3ZlcihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuYWRkKGkpO1xuICAgIH1cbiAgfVxuXG4gIG9uUm93TW91c2VVcCgpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGluZyA9IGZhbHNlO1xuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XG4gIH1cbiAgaGFuZGxlQXV0b1Njcm9sbChlOiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVkZ2VTaXplID0gNDBcbiAgICBsZXQgc2Nyb2xsQW1vdW50ID0gMDtcblxuICAgIGlmIChlLmNsaWVudFkgPCByZWN0LnRvcCArIGVkZ2VTaXplKSB7XG4gICAgICBzY3JvbGxBbW91bnQgPSAtMTUwO1xuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xuICAgICAgc2Nyb2xsQW1vdW50ID0gMTUwO1xuICAgIH1cblxuICAgIGlmIChzY3JvbGxBbW91bnQgIT09IDApIHtcbiAgICAgIGlmICghdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcbiAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wICs9IHNjcm9sbEFtb3VudDtcbiAgICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdW5kb1N0YWNrOiBhbnlbXVtdID0gW107XG4gIHJlZG9TdGFjazogYW55W11bXSA9IFtdO1xuXG4gIHByaXZhdGUgY2xvbmVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfVxuXG4gIHBlcmZvcm1DdXQoc2VsZWN0ZWREYXRhOiBhbnlbXVtdKSB7XG4gICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XG4gICAgdGhpcy5yZWRvU3RhY2sgPSBbXTtcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcbiAgICBjb25zdCB7IHVwZGF0ZWRSb3dzIH0gPSB0aGlzLmNvcHlTZXJ2aWNlLmN1dFNlbGVjdGVkU2VsZWN0ZWREYXRhKFxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXG4gICAgKTtcblxuICB9XG5cbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb3B5U2VydmljZS5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KFxuICAgICAgdGhpcy5kYXRhU2V0LFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMsXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgcGFnZVNpemVLZXlNYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgcHJpdmF0ZSBidWlsZFBhZ2VTaXplS2V5TWFwKCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemVLZXlNYXAgPSB7fTtcblxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zLmZvckVhY2goKHNpemUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPVxuICAgICAgICBpbmRleCA8IDlcbiAgICAgICAgICA/IFN0cmluZyhpbmRleCArIDEpXG4gICAgICAgICAgOiBpbmRleCA9PT0gOVxuICAgICAgICAgICAgPyAnMCdcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB0aGlzLnBhZ2VTaXplS2V5TWFwW2tleV0gPSBzaXplO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdmlld3BvcnQ6IGFueTtcbiAgc2Nyb2xsVmlld3BvcnQoYW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnZpZXdwb3J0ID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB7XG4gICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvcCArPSBhbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVmlld3BvcnRUb1RvcCgpIHtcbiAgICB0aGlzLnZpZXdwb3J0ID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBzY3JvbGxWaWV3cG9ydFRvQm90dG9tKCkge1xuICAgIHRoaXMudmlld3BvcnQgPSB0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRoaXMudmlld3BvcnQpIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9wID0gdGhpcy52aWV3cG9ydC5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBzY3JvbGxUb0NlbGwocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXggPSAwKSB7XG4gICAgLy8gMe+4j+KDoyBWZXJ0aWNhbCBzY3JvbGxcbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsKSB7XG4gICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSByb3dJbmRleCAqIHRoaXMucm93SGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIDLvuI/ig6MgSG9yaXpvbnRhbCBzY3JvbGxcbiAgICBjb25zdCBsZWZ0Q29sc1dpZHRoID0gdGhpcy5nZXRMZWZ0T2Zmc2V0Rm9yQ29sdW1uKGNvbEluZGV4LCBzdWJDb2xJbmRleCk7XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gbGVmdENvbHNXaWR0aDtcbiAgICB9XG4gIH1cblxuICBnZXRMZWZ0T2Zmc2V0Rm9yQ29sdW1uKGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4ID0gMCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xJbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBvZmZzZXQgKz0gY29sLndpZHRoID8/IDA7XG4gICAgfVxuXG4gICAgLy8gQWRkIHN1Yi1jb2x1bW4gd2lkdGggaWYgYW55XG4gICAgY29uc3QgY29sID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcbiAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoICYmIHN1YkNvbEluZGV4ID4gMCkge1xuICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBzdWJDb2xJbmRleDsgcysrKSB7XG4gICAgICAgIG9mZnNldCArPSBjb2wuY2hpbGRyZW5bc10ud2lkdGggPz8gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cblxuXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBpc0Zvcm1GaWVsZCA9XG4gICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fFxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcbiAgICAgIHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcbiAgICBpZiAoaXNGb3JtRmllbGQgfHwgdGhpcy5sb2FkaW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBzaGlmdCA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgIGNvbnN0IHNjcm9sbEFtb3VudCA9IHRoaXMudmlld3BvcnRSb3dzICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5jdHJsS2V5UHJlc3NlZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgndXAnLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgnZG93bicsIHNoaWZ0LCB0aGlzLmRhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsKCdsZWZ0Jywgc2hpZnQsIHRoaXMuZGF0YVNldCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsKCdyaWdodCcsIHNoaWZ0LCB0aGlzLmRhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGxCeVJvd3Moc2Nyb2xsQW1vdW50IC8gdGhpcy5yb3dIZWlnaHQsICdkb3duJywgc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFZpZXdwb3J0KHNjcm9sbEFtb3VudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsQnlSb3dzKHNjcm9sbEFtb3VudCAvIHRoaXMucm93SGVpZ2h0LCAndXAnLCBzaGlmdCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQoLXNjcm9sbEFtb3VudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbFRvU3RhcnQoc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvQ2VsbCgwLCAwKTsgLy8gZmlyc3Qgcm93LCBmaXJzdCBjb2x1bW5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLmRhdGFTZXQubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgbGFzdENvbCA9IHRoaXMuY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsVG9FbmQoc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvQ2VsbChsYXN0Um93LCBsYXN0Q29sKTsgLy8gbGFzdCByb3csIGxhc3QgY29sdW1uXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuYWx0S2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub0xhc3RQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQuYWx0S2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5nb1RvRmlyc3RQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5nb1RvTmV4dFBhZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzUGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IE1JTl9IRUlHSFQgPSAyODtcbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCArPSAxO1xuICAgICAgdGhpcy5yb3dIZWlnaHQgKz0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gTWF0aC5tYXgoTUlOX0hFSUdIVCwgdGhpcy5oZWFkZXJSb3dIZWlnaHQgLSAxKTtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gTWF0aC5tYXgoTUlOX0hFSUdIVCwgdGhpcy5yb3dIZWlnaHQgLSAxKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJy8nKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMuZ2xvYmFsU2VhcmNoSW5wdXQpIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuZ2xvYmFsU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaW5wdXRFbC5mb2N1cygpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbE91dGxpbmUgPSBpbnB1dEVsLnN0eWxlLm91dGxpbmU7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQm94U2hhZG93ID0gaW5wdXRFbC5zdHlsZS5ib3hTaGFkb3c7XG4gICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ291dGxpbmUnLCAnMnB4IHNvbGlkICM0ZjljZmYnLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ2JveC1zaGFkb3cnLCAnMCAwIDhweCAycHggIzRmOWNmZicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaW5wdXRFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3V0bGluZScsIG9yaWdpbmFsT3V0bGluZSB8fCAnJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ2JveC1zaGFkb3cnLCBvcmlnaW5hbEJveFNoYWRvdyB8fCAnJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5hbHRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuYXV0b3NpemVBbGxDb2x1bW5zKCk7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleT8udG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gJ3InKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKClcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZG93bmxvYWRDc3YoJ2NzdicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2UnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5kb3dubG9hZENzdigneGxzeCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdiJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gIXRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyO1xuICAgICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnaCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gIXRoaXMucm93U2hhZGluZ0VuYWJsZWQ7XG4gICAgICB0aGlzLm9uRm9udENoYW5nZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3MnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dCgnc21hbGwnKVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdtJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ21lZGl1bScpXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2wnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dCgnbGFyZ2UnKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG5cblxuICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgIGNvbnN0IG5ld0xpbWl0ID0gdGhpcy5wYWdlU2l6ZUtleU1hcFtldmVudC5rZXldO1xuICAgICAgaWYgKG5ld0xpbWl0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQgIT09IG5ld0xpbWl0KSB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ID0gbmV3TGltaXQ7XG4gICAgICAgICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJlxuICAgICAgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJ1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZVxuICAgICAgKSByZXR1cm47XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTtcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoIHx8ICF0aGlzLmVuYWJsZUN1dCkgcmV0dXJuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoICYmXG4gICAgICAgICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplXG4gICAgICApIHJldHVybjtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpO1xuICAgICAgdGhpcy5wZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YSk7XG5cbiAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAneicpIHtcbiAgICAgIGlmICghdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxuICAgICAgdGhpcy51bmRvKCk7XG5cbiAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAneScpIHtcbiAgICAgIGlmICghdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxuICAgICAgdGhpcy5yZWRvKCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICdhJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0QWxsQ2VsbHModGhpcy5vcmlnaW5hbERhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub05leHRQYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2U7XG4gICAgY29uc3QgdG90YWxQYWdlcyA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzO1xuICAgIGlmIChjdXJyZW50UGFnZSA+PSB0b3RhbFBhZ2VzKSByZXR1cm47XG4gICAgdGhpcy5nb1RvUGFnZShjdXJyZW50UGFnZSArIDEpO1xuICB9XG5cbiAgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlO1xuICAgIGlmIChjdXJyZW50UGFnZSA8PSAxKSByZXR1cm47XG4gICAgdGhpcy5nb1RvUGFnZShjdXJyZW50UGFnZSAtIDEpO1xuICB9XG5cbiAgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IDEpIHJldHVybjtcbiAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICB9XG5cbiAgZ29Ub0xhc3RQYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGxhc3RQYWdlID0gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXM7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSBsYXN0UGFnZSkgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UobGFzdFBhZ2UpO1xuICB9XG5cbiAgdW5kbygpIHtcbiAgICBpZiAodGhpcy51bmRvU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xuICAgICAgdGhpcy5yZWRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5jbG9uZURhdGEocHJldlN0YXRlKTtcbiAgICB9XG4gIH1cblxuICByZWRvKCkge1xuICAgIGlmICh0aGlzLnJlZG9TdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLnJlZG9TdGFjay5wb3AoKSE7XG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmNsb25lRGF0YShuZXh0U3RhdGUpO1xuICAgIH1cbiAgfVxuXG5cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpwYXN0ZScsIFsnJGV2ZW50J10pXG4gIGFzeW5jIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUN1dCkgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB0YWcgPSB0YXJnZXQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoIHx8ICF0aGlzLmFjdGl2ZUNlbGwpIHJldHVybjtcblxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm47XG4gICAgY29uc3QgdXNlckNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKFxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xuICAgICk7XG5cbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRDZWxsID0gdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzPy5bMF07XG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcblxuICAgIGNvbnN0IHVwZGF0ZWRSb3dzID0gYXdhaXQgdGhpcy5jb3B5U2VydmljZS5wYXN0ZUZyb21DbGlwYm9hcmRUZXh0KFxuICAgICAgdGV4dCxcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXG4gICAgICBzdGFydENlbGwuY29sSW5kZXgsXG4gICAgICBzdGFydENlbGwuc3ViQ29sSW5kZXhcbiAgICApO1xuXG4gICAgaWYgKHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xuICAgICAgICBkYXRhOiB1cGRhdGVkUm93cz8udXBkYXRlUm93cyxcbiAgICAgICAgZXZlbnRUeXBlOiAnb25DZWxsRWRpdCcsXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgICBjb2x1bW46IHVwZGF0ZWRSb3dzPy5jdXJyZW50Q29sdW1zXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzaG93Q29uZmlybWF0aW9uTW9kYWwobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgb3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdjdXN0b20tb3ZlcmxheS13cmFwcGVyJyk7XG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tb3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW1vZGFsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1vZGFsLW1lc3NhZ2VcIj4ke21lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgY2FuY2VsQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNhbmNlbCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcbiAgICAgIH07XG4gICAgICBjb25maXJtQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgY2FuY2VsQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpc0RhdGUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNOYU4obmV3IERhdGUodmFsdWUpPy5nZXRUaW1lKCkpO1xuICB9XG5cbiAgZXhwYW5kZWRlZERldGFpbFJvd3M6IChzdHJpbmcgfCBudW1iZXIpW10gfCBzdHJpbmcgfCBudW1iZXIgPSAnJztcblxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcbiAgICBjb25zdCBpZCA9IHJvdz8uaWQgfHwgcm93Py5faWQ7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09ICdBc3NldHMnICYmIHJvdz8uZGV0YWlsPy5jb2x1bW5zKSB7XG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGl0ZW0ud2lkdGggPSBpdGVtPy53aWR0aCB8fCAodGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbC5jb2x1bW5zPy5sZW5ndGgpXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcbiAgICB9XG4gICAgaWYgKHRoaXMua2VlcE11bHRpcGxlRXhwYW5kZWREZXRhaWxzKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XG4gICAgICBjb25zdCBpbmRleCA9IGV4cGFuZGVkLmluZGV4T2YoaWQpO1xuXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBleHBhbmRlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB2b2lkIHRoaXMucmlnaHRQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLnJpZ2h0UGlubmVkQm9keT8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAzMDApXG4gIH1cblxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcblxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykgJiZcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cy5pbmNsdWRlcyhpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZDtcbiAgICB9XG4gIH1cblxuICBnZXRGaWx0ZXJWYWx1ZShvcHRpb246IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xuICB9XG5cblxuICBvcGVuSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICB0b2dnbGVNZW51KGk6IG51bWJlciwgZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XG4gICAgdGhpcy5vcGVuSW5kZXggPSB0aGlzLm9wZW5JbmRleCA9PT0gaSA/IG51bGwgOiBpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbmVzdGVkVGFibGUnKVxuICBuZXN0ZWRUYWJsZSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgZ2V0IGhhc0hvcml6b250YWxTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZWwgPSB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XG4gICAgaWYgKCFjb2x1bW4/LmlzX2Ftb3VudCkgcmV0dXJuO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5vcmlnaW5hbERhdGFTZXQucmVkdWNlKChzdW0sIHJvdykgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xuICAgICAgcmV0dXJuIHN1bSArIHZhbHVlO1xuICAgIH0sIDApO1xuICAgIGlmICghdG90YWwpIHJldHVybiBgJHt0aGlzLmN1cnJlbmN5U3ltYm9sfSAwLjAwYFxuICAgIHJldHVybiBgJHt0aGlzLmN1cnJlbmN5U3ltYm9sfSAke3RoaXMuZm9ybWF0Q3VycmVuY3kudHJhbnNmb3JtKHRvdGFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KX1gO1xuICB9XG5cbiAgZHJvcENvbHVtbihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+LCByb3c6IGFueSkge1xuICAgIG1vdmVJdGVtSW5BcnJheShyb3cuZGV0YWlsLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gIH1cbiAgY3VycmVudFN1YlNvcnRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjdXJyZW50U29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcblxuICBzb3J0TmVzdGVkQ29sKGNvbDogYW55LCByb3c6IGFueSkge1xuICAgIGNvbnN0IGRhdGFTZXQgPSByb3c/LmRldGFpbD8ucmVzdWx0O1xuICAgIGlmICh0aGlzLmN1cnJlbnRTdWJTb3J0Q29sdW1uID09PSBjb2wuZmllbGQpIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdWJTb3J0Q29sdW1uID0gY29sLmZpZWxkO1xuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgIH1cbiAgICBjb2wub3JkZXJfYnkgPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhU2V0XS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBsZXQgYVZhbCA9IGFbY29sLmZpZWxkXTtcbiAgICAgIGxldCBiVmFsID0gYltjb2wuZmllbGRdO1xuICAgICAgYVZhbCA9IGFWYWwgPT0gbnVsbCA/ICcnIDogYVZhbDtcbiAgICAgIGJWYWwgPSBiVmFsID09IG51bGwgPyAnJyA6IGJWYWw7XG5cbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGFWYWwgPSBuZXcgRGF0ZShhVmFsKS5nZXRUaW1lKCk7XG4gICAgICAgIGJWYWwgPSBuZXcgRGF0ZShiVmFsKS5nZXRUaW1lKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFOdW0gPSBwYXJzZUZsb2F0KGFWYWwpO1xuICAgICAgY29uc3QgYk51bSA9IHBhcnNlRmxvYXQoYlZhbCk7XG4gICAgICBjb25zdCBib3RoTnVtYmVycyA9ICFpc05hTihhTnVtKSAmJiAhaXNOYU4oYk51bSk7XG5cbiAgICAgIGlmIChib3RoTnVtYmVycykge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBhTnVtIC0gYk51bSA6IGJOdW0gLSBhTnVtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29tcCA9IFN0cmluZyhhVmFsKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiVmFsKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IGNvbXAgOiAtY29tcDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJvdy5kZXRhaWwucmVzdWx0ID0gc29ydGVkO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBnZXRDb2x1bW5XaWR0aFB4KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKGNvbC53aWR0aCkgcmV0dXJuIGNvbC53aWR0aCArICdweCc7XG4gICAgY29uc3QgcGl4ZWxzID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsPy5jb2x1bW5zLmxlbmd0aDtcbiAgICByZXR1cm4gcGl4ZWxzICsgJ3B4JztcbiAgfVxuXG4gIGZ1bGxzY3JlZW5JbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcGluVW5waW5Db2x1bShjb2w6IGFueSwgdmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLCBjb2x1bW5zOiBhbnlbXSkge1xuICAgIGNvbC5waW5uZWQgPSB2YWx1ZTtcbiAgICBjb25zdCBsZWZ0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ2xlZnQnKTtcbiAgICBjb25zdCBtaWRkbGUgPSBjb2x1bW5zLmZpbHRlcihjID0+ICFjLnBpbm5lZCB8fCBjLnBpbm5lZCA9PT0gbnVsbCk7XG4gICAgY29uc3QgcmlnaHQgPSBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKTtcbiAgICBjb2x1bW5zLmxlbmd0aCA9IDA7XG4gICAgY29sdW1ucy5wdXNoKC4uLmxlZnQsIC4uLm1pZGRsZSwgLi4ucmlnaHQpO1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgfVxuXG4gIGdldExlZnRQaW5uZWRDb3VudChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0JykubGVuZ3RoO1xuICB9XG5cbiAgZ2V0UmlnaHRQaW5uZWRDb3VudChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFN0aWNreUxlZnQoY29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBsZWZ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgIGNvbnN0IHByZXZDb2wgPSBjb2x1bW5zW2ldO1xuICAgICAgaWYgKHByZXZDb2wucGlubmVkID09PSAnbGVmdCcpIHtcbiAgICAgICAgbGVmdCArPSBwcmV2Q29sLndpZHRoIHx8IDEwMDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2xlZnR9cHhgO1xuICB9XG5cbiAgcHJldmlld05lc3RlZENvbHM6IGFueVtdID0gW107XG4gIG9uTmVzdGVkQ29sU29ydChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnlbXT4sIGNvbHVtbnM6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKCFldmVudCB8fCAhY29sdW1ucykgcmV0dXJuO1xuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICBjb25zdCBjb2xDZWxscyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBjb2xDZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XG4gICAgfSk7XG4gICAgbW92ZUl0ZW1JbkFycmF5KGNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSA/PyBuZXdMZWZ0O1xuICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xuXG4gICAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgdm9pZCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgZWFzZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XG4gICAgICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2xlYW51cCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVTZWxlY3Rpb24oc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCB0YWJsZVR5cGU6IHN0cmluZykge1xuICAgIGlmICghdGFibGVUeXBlKSByZXR1cm47XG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzIHx8IHt9O1xuICAgIGFsbFNlbGVjdGVkW3RhYmxlVHlwZV0gPSBzZWxlY3RlZElkcztcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICdkYXRhdGFibGVTZWxlY3Rpb25zJyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzOiBhbGxTZWxlY3RlZCxcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRhYmxlVHlwZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVzdG9yZVNlbGVjdGlvbih0YWJsZVR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne30nKTtcbiAgICBjb25zdCBpZHMgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzPy5bdGFibGVUeXBlXSB8fCBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IG5ldyBTZXQoaWRzKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3M7XG4gIH1cblxuICBpc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjb250YWluZXJSZWN0OiBET01SZWN0IHwgbnVsbCA9IG51bGw7XG5cbiAgb25EcmFnU3RhcnRlZChjb2w6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLWdyaWQtbWFpbi1jb250YWluZXInKTtcbiAgICB0aGlzLmNvbnRhaW5lclJlY3QgPSBjb250YWluZXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8IG51bGw7XG4gIH1cblxuICBvbkRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyUmVjdCkgcmV0dXJuO1xuXG4gICAgY29uc3QgeyB4LCB5IH0gPSBldmVudC5wb2ludGVyUG9zaXRpb247XG4gICAgY29uc3QgaXNPdXRzaWRlID1cbiAgICAgIHggPCB0aGlzLmNvbnRhaW5lclJlY3QubGVmdCB8fFxuICAgICAgeCA+IHRoaXMuY29udGFpbmVyUmVjdC5yaWdodCB8fFxuICAgICAgeSA8IHRoaXMuY29udGFpbmVyUmVjdC50b3AgfHxcbiAgICAgIHkgPiB0aGlzLmNvbnRhaW5lclJlY3QuYm90dG9tO1xuICB9XG5cbiAgb25EcmFnRW5kZWQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IG51bGw7XG4gICAgICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xuICAgIH0sIDEwMCk7XG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gbnVsbDtcbiAgfVxuXG4gIGdldFN0YXJ0SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyA9PT0gMFxuICAgICAgPyAwXG4gICAgICA6ICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICsgMSB8fCAwO1xuICB9XG5cbiAgaGFzQW55RGVmYXVsdFZpZXcoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVWaWV3Py5zb21lKCh4KSA9PiB4LmlzX2RlZmF1bHQgfHwgeC5pc190ZW1wKTtcbiAgfVxuXG4gIGdldCBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCgpIHtcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGN1cnJQcmVzZXQgPSB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcmVzZXRDb2x1bW5zID0gY3VyclByZXNldD8uY29sdW1ucz8ubWFwKChjb2w6IHsgZmllbGQ6IGFueTsgd2lkdGg6IGFueTsgcGlubmVkOiBhbnk7IH0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/Lm1hcChjb2wgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgICAgd2lkdGg6IGNvbC53aWR0aCxcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRDb2x1bW5zKTtcbiAgICBjb25zdCBzdHJpbmdDb2x1bW5zID0gSlNPTi5zdHJpbmdpZnkoY29sdW1ucyk7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmlsZWQ6IGZpbHRlci5maWVsZCxcbiAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICBjb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LmNvbmRpdGlvbixcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LmZpcnN0X2NvbmRpdGlvbixcbiAgICAgICAgICBmaXJzdF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uZmlyc3RfdmFsdWUsXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbixcbiAgICAgICAgICBzZWNvbmRfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LnNlY29uZF92YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IGN1cnJlbnRQcmVzZXRGaWx0ZXJzID0gY3VyclByZXNldD8uZmlsdGVycz8ubWFwKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmlsZWQ6IGZpbHRlci5maWVsZCxcbiAgICAgICAgcXVlcnk6IGZpbHRlci5xdWVyeSxcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoIWN1cnJlbnRQcmVzZXRDb2x1bW5zKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gKGN1cnJlbnRQcmVzZXRDb2x1bW5zICYmIChzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9PSBzdHJpbmdDb2x1bW5zKSAmJiAoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykgPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldEZpbHRlcnMpKSAmJiAodGhpcy5mb250RmFpbWx5ID09IGN1cnJQcmVzZXQuY29uZmlnLmZvbnRGYWltbHkpXG4gICAgICAmJiAodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSkgJiZcbiAgICAgICh0aGlzLmhlYWRlclRleHRGb250c1NpemUgPT0gdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplKVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciA9PSB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLmZvbnRGYWltbHkgPT0gdGhpcy5mb250RmFpbWx5XG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCA9PSB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXRcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcucm93U2hhZGluZ0VuYWJsZWQgPT0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCk7XG4gIH1cblxuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgdGV4dCA9IGJ1dHRvbj8udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBpZiAodGV4dCA9PSAnYWN0aXZlIGRhdGEnIHx8IHRleHQgPT0gJ2FjdGl2ZScgfHwgdGV4dCA9PSAnZGF0YSBhY3RpdmUnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZWQgZGF0YScgfHwgdGV4dCA9PSAndW5hcmNoaXZlIGRhdGEnKSB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgb2JqOiBidXR0b25cbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IFwib25BY3Rpb25CdXR0b25DbGlja1wiLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuXG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICBjb25zdCBhbGxUYWJzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWN0aXZlVGFicycpIHx8ICd7fScpO1xuICAgIGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdID0gdGFiO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhY3RpdmVUYWJzJywgSlNPTi5zdHJpbmdpZnkoYWxsVGFicykpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgICAgb2JqOiB0YWJcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6ICdvblRhYkNoYW5nZScsXG4gICAgfTtcblxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0QmFja2dyb3VuZENvbG9yKHJvdzogYW55LCBpc0V2ZW46IGJvb2xlYW4sIHNlY3Rpb246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbG9yO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICAgIGxldCBiYXNlQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnJvd1NoYWRpbmdFbmFibGVkKSB7XG4gICAgICBiYXNlQ29sb3IgPSBpc0V2ZW4gPyB0aGlzLmV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yIDogdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlQ29sb3IgPSB0aGlzLmV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICBpZiAoIWJhc2VDb2xvcikge1xuICAgICAgaWYgKHNlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5yaWdodFBpbm5lZEJhY2tncm91bmRDb2xvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMuYm9keUJhY2tncm91bmRDb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhc2VDb2xvcjtcbiAgfVxuXG4gIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNlbnRlclBpbm5lZEhlYWRlcj8ubmF0aXZlRWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcbiAgfVxuXG5cbiAgZ2V0U2FmZUNvbW1lbnQoZGVzY3JpcHRpb246IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICByZXR1cm4gdGhpcy5jbGVhbkVkaXRvckNvbnRlbnQoZGVzY3JpcHRpb24pO1xuICB9XG4gIGNsZWFuRWRpdG9yQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbFNhbmF0aXplclNlcnZpY2UuY2xlYW5FZGl0b3JDb250ZW50KGNvbnRlbnQpO1xuICB9XG5cbiAgZ2V0RXh0ZW50aW9uKHVybDogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHVybCAhPT0gJy0nKSB7XG4gICAgICBpZiAodHlwZW9mICh1cmwpID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB1cmwuc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHVybCkpIHtcbiAgICAgICAgcmV0dXJuIHVybFswXS5zcGxpdCgnLicpLnBvcCgpXG4gICAgICB9IGVsc2UgcmV0dXJuICctJ1xuICAgIH1cbiAgICBlbHNlIHJldHVybiAnLSdcbiAgfVxuXG4gIGRvd25sb2FkQXR0Y2htZW50KHVybDogYW55LCBmaWxlPzogYW55KSB7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgbGluay5kb3dubG9hZCA9ICcnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG5cbiAgfVxuICBmdWxsSW1hZ2VTcmM6IHN0cmluZyB8IG51bGwgPSAnJztcbiAgb3BlbkZ1bGxJbWFnZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU1HJykge1xuICAgICAgdGhpcy5mdWxsSW1hZ2VTcmMgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdHlsZXNUb0ltYWdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBpbWFnZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29tbWVudC1jb250ZW50IGltZycpO1xuICAgIGltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnd2lkdGgnLCAnNzBweCcpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdib3JkZXItcmFkaXVzJywgJzE2cHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnbWFyZ2luJywgJzhweCcpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdjdXJzb3InLCAncG9pbnRlcicpO1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW1nLCAnY2xpY2snLCAoKSA9PiB0aGlzLm9uSW1hZ2VDbGljaygoaW1nIGFzIEhUTUxJbWFnZUVsZW1lbnQpLnNyYykpO1xuICAgIH0pO1xuICB9XG5cbiAgb25JbWFnZUNsaWNrKHNyYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsc2NyZWVuSW1hZ2UgPSBzcmM7XG4gIH1cblxuICBAVmlld0NoaWxkKCdmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZScpIGZ1bGxzY3JlZW5JbWFnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBmdWxsc2NyZWVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBpY29uTWFwOiBSZWNvcmQ8c3RyaW5nLCAocm93OiBhbnksIGNvbDogYW55KSA9PiBzdHJpbmc+ID0ge1xuICAgIGF0dGFjaG1lbnRzX2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2F0dGFjaG1lbnRzLnN2ZycsXG4gICAgY29tbWVudF9jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jb21tZW50cy5zdmcnLFxuICAgIHByaW9yaXR5OiAocm93LCBjb2wpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9XG4gICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fFxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy8nICtcbiAgICAgICAgKHZhbCA/PyAnZGVmYXVsdCcpICtcbiAgICAgICAgJy5zdmcnXG4gICAgICApO1xuICAgIH0sXG4gIH07XG5cbiAgdG9nZ2xlRnVsbHNjcmVlbigpIHtcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9ICF0aGlzLmlzRnVsbFNjcmVlbjtcbiAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IGFzIGFueTtcbiAgICBpZiAoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50KSB7XG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbikge1xuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmN1c3RvbUNlbGxFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwKHJvdzogYW55KTogYW55W10ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xuICAgICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB0cmF2ZXJzZShjaGlsZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0cmF2ZXJzZShyb3cpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzZWxlY3RHcm91cFJvdyhlOiBFdmVudCwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgaXNDaGVja2VkID0gY2hlY2tib3guY2hlY2tlZDtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZmxhdHRlbkdyb3VwKHJvdyk7XG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xuICAgICAgICBpZiAoaWQpIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xuICAgICAgICBpZiAoaWQpIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXRHcm91cENoZWNrZWRTdGF0ZShyb3c6IGFueSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGlmICghcm93LmlzR3JvdXApIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZmxhdHRlbkdyb3VwKHJvdyk7XG4gICAgbGV0IGNoZWNrZWRDb3VudCA9IDA7XG4gICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcbiAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKSBjaGVja2VkQ291bnQrKztcbiAgICB9KTtcbiAgICBpZiAoY2hlY2tlZENvdW50ID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNoZWNrZWRDb3VudCA9PT0gbGVhZlJvd3MubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Q2VsbFRpdGxlKHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB8IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fCB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fCB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcbiAgICBpZiAoIXRoaXMuaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKSkge1xuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmZvcm1hdERhdGVWYWx1ZSh2YWwsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbD8uaXNfYW1vdW50KSB7XG4gICAgICAgIGlmICghdmFsKSByZXR1cm4gYDAuMDBgXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh2YWwsIHRoaXMuY3VycmVuY3lGb3JtYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbD8udmFsdWUgPT09IG51bGwgfHwgdmFsPy52YWx1ZSA9PT0gJycpIHJldHVybiAnLSc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZhbD8udmFsdWUgPz9cbiAgICAgICAgdmFsPy5uYW1lID8/XG4gICAgICAgIHZhbCA/P1xuICAgICAgICAoY29sLmlzX2Ftb3VudCA/ICcwJyA6ICctJylcbiAgICAgICkgKyAnJztcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdCA9IHZhbD8uWzBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGZpcnN0Py5kZXBhcnRtZW50X25hbWUgPz9cbiAgICAgIGZpcnN0Py5yb2xlTmFtZSA/P1xuICAgICAgZmlyc3Q/LmZ1bGxfbmFtZSA/P1xuICAgICAgZmlyc3Q/LnZhbHVlID8/XG4gICAgICBmaXJzdD8ubmFtZSA/P1xuICAgICAgJy0nXG4gICAgKTtcbiAgfVxuXG5cbiAgZmluaXNoRWRpdChldmVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ2NlbGwgZWRpdGVkZGRkZGRkZGRkZGRkZGQ6ICcsIGV2ZW50KVxuICB9XG5cblxuICBnZXREeW5hbWljUmlnaHQoY29sOiBhbnksIHNlY3Rpb246IHN0cmluZywgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlcikge1xuICAgIGlmIChzZWN0aW9uID09ICdyaWdodCcgJiYgdGhpcy5wcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zPy5sZW5ndGggPT0gMSAmJiBjb2wud2lkdGggPCAyMDApIHtcbiAgICAgIHJldHVybiAxMDA7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uID09ICdyaWdodCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmIChzZWN0aW9uID09ICdwcmV2aWV3Q2VudGVyQ29sdW1ucycgJiYgY29sSW5kZXggPT0gKHRoaXMucHJldmlld0NlbnRlckNvbHVtbnM/Lmxlbmd0aCAtIDEpICYmIGNvbC53aWR0aCA8IDIwMCkge1xuICAgICAgcmV0dXJuIDIwMFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29sLndpZHRoIC0gNDU7XG4gICAgfVxuICB9XG5cbiAgYmx1cklucHV0KGV2ZW50OiBFdmVudCwgcm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaW5wdXQ/LmJsdXIoKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNldEFjdGl2ZUNlbGwocm93LCBjb2wpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lZGl0aW5nS2V5ID0gJyc7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRWYWxpZEFjdGlvbnMoZWxlbWVudDogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvblZhbGlkYXRvci5nZXRWYWxpZEFjdGlvbnMoXG4gICAgICB0aGlzLm9yaWdpbmFsQWN0aW9ucyxcbiAgICAgIGVsZW1lbnQsXG4gICAgICB7XG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICAgIHNob3dVbkxpbms6IHRoaXMuc2hvd1VuTGluayxcbiAgICAgICAgcGFja2FnZURhdGE6IHRoaXMucGFja2FnZURhdGFcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHByaXZhdGUgaXNTdGF0dXNGaWVsZChmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGROYW1lKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbG93ZXJGaWVsZCA9IGZpZWxkTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBsb3dlckZpZWxkID09PSAnc3RhdHVzJyB8fFxuICAgICAgbG93ZXJGaWVsZC5pbmNsdWRlcygnc3RhdHVzJykgfHxcbiAgICAgIGxvd2VyRmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcbiAgICAgIGxvd2VyRmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcbiAgICAgIGxvd2VyRmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXBpdGFsaXplU3RhdHVzKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5jYXBpdGFsaXplU3RhdHVzKHZhbHVlKTtcbiAgfVxuXG4gIGdyaWRDb250ZXh0ID0ge1xuICAgIGFwcGx5RmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMuYXBwbHlGaWx0ZXJPbkNvbHVtbihjb2wpLFxuICAgIGNsZWFyRmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMucmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2wpXG4gIH07XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbEZpbHRlck1lbnVzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEZpbHRlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9XG4gICAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyT25Db2x1bW4oY29sOiBhbnkpIHtcbiAgICB0aGlzLmNsb3NlQWxsRmlsdGVyTWVudXMoKTtcbiAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogY29sLmZpZWxkLFxuICAgICAgc2VhcmNoOiBjb2wuc2VhcmNoLFxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSxcbiAgICAgIHR5cGU6IGNvbC50eXBlLFxuICAgICAgX2lkczogY29sLl9pZHNcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgICB0aGlzLmNvbW1vblNldmljZS5yZXBsYWNlQ29sdW1uUXVlcnkodGhpcy5jb2x1bW5zLCBjb2wsIGNvbC5xdWVyeSk7XG4gICAgdGhpcy5lbWl0RmlsdGVycygpO1xuXG4gIH1cblxuICByZW1vdmVGaWx0ZXJGcm9tQ29sdW1uKGNvbDogYW55KSB7XG4gICAgdGhpcy5jbG9zZUFsbEZpbHRlck1lbnVzKCk7XG4gICAgY29uc3QgZW1wdHlRdWVyeSA9IHtcbiAgICAgIGZpcnN0X2NvbmRpdGlvbjogbnVsbCxcbiAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgY29uZGl0aW9uOiAnbm9uZScsXG4gICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxuICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXG4gICAgfTtcblxuICAgIHRoaXMuY29tbW9uU2V2aWNlLnJlcGxhY2VDb2x1bW5RdWVyeSh0aGlzLmNvbHVtbnMsIGNvbCwgZW1wdHlRdWVyeSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcbiAgfVxuXG4gIGdldEZvcm1hdGVkRGF0ZSh2YWw6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xuICB9XG5cbiAgY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2VlcE11bHRpcGxlRXhwYW5kZWREZXRhaWxzKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Ecm9wZG93bktleURvd24oXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICAgcm93OiBhbnksXG4gICAgY29sOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0JhY2tzcGFjZScpIHJldHVybjtcbiAgICBpZiAoY29sPy5pc19yZXF1aXJlZCA9PT0gdHJ1ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPT0gbnVsbCB8fCBjdXJyZW50VmFsdWUgPT09ICcnKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBudWxsLCB0cnVlKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNldEFjdGl2ZUNlbGwoXG4gICAgICByb3cuX192aXJ0dWFsSW5kZXgsXG4gICAgICBjb2wuaW5kZXgsXG4gICAgICAwXG4gICAgKTtcbiAgfVxuXG4gIGdldERyb3Bkb3duQ2VsbFRleHQocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcbiAgICBpZiAodmFsdWU/LnZhbHVlICE9IG51bGwpIHJldHVybiBTdHJpbmcodmFsdWUudmFsdWUpO1xuICAgIGlmICh2YWx1ZT8ubmFtZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlLm5hbWUpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaC0xMDBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiAqbmdJZj1cInRhYnM/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgaWQ9XCJuYXYtdGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVRhYih0YWIpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gdGFiXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0YWIgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLXNlYXJjaFwiIFtzdHlsZS53aWR0aC5weF09XCIzNTBcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2dsb2JhbFNlYXJjaElucHV0XG4gICAgICAgICAgKm5nSWY9XCJlbmFibGVHbG9iYWxTZWFyY2hcIlxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzNnB4XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIHNlYXJjaCwgdGhlbiBwcmVzcyBFbnRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZVNlYXJjaFwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25HbG9iYWxTZWFyY2goKVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1yaWdodC10b3AtYWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvbnM/Lmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbnM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvdyBtcy0yXCJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImkgPT0gYnV0dG9ucy5sZW5ndGggLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5ICBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYnV0dG9uLmljb24gKyAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxuICAgICAgICAgICAgICA+e3sgYnV0dG9uPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBvc2l0aW9uLXJlbGF0aXZlIGFjdGlvbi1idXR0b25zLXJvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPkZpbHRlcnM8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlcmVkQ29sdW1ucz8ubGVuZ3RoXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdhZHZhbmNlLWZpbHRlcicpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBhY3Rpb24tYnV0dG9ucy1yb3dcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPiAtLT5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTEgYWN0aW9ucy1kcm9wZG93bi1zZXR0aW5nXCJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudVwiPlxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3RhYmxlLTIuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xpc3QtZGV0YWlscy5zdmcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygnc2hvdy1oaWRlLWNvbHVtbnMnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxpZ24taXRlbXMtY2VudGVyIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgQ29sdW1uczwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHRcIj57eyBjb2x1bW5zQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEZpbHRlciAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKCk7IGFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBGaWx0ZXJcbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBEb3dubG9hZCAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENzdignY3N2JylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgQ1NWIEV4cG9ydFxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVFeHBvcnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBFeGNlbCBFeHBvcnRcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgJiBGb250IFNpemUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwYi0yIHB0LTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgLS0+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRGYWltbHlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250RmFtaWxpZXM7IHRyYWNrQnk6IHRyYWNrQnlJZFwiIFt2YWx1ZV09XCJmb250XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvbnQgfX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGb250IFNpemUgLS0+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYm9keVRleHRGb250c1NpemVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgZm9udFNpemVzOyB0cmFja0J5OiB0cmFja0J5SWRcIiBbdmFsdWVdPVwic2l6ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzaXplIH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCdcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlTGF5b3V0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVByZXNldFwiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dIaWRlQ29sdW1uc1wiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMtcm93XCIgKm5nSWY9XCJzaG93RnVsbFNjcmVlbkJ1dHRvblwiPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiIWlzRnVsbFNjcmVlblwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgIHRpdGxlPVwiTWluaW1pc2VcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V4cGVuZC5zdmcnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpc0Z1bGxTY3JlZW5cIlxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICB0aXRsZT1cIk1heGltaXNlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9taW5pbWl6ZS5zdmcnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDwhLS0gRXhhbXBsZSBzaW5nbGUgZGFuZ2VyIGJ1dHRvbiAtLT5cblxuICAgICAgICA8IS0tIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZC1mbGV4IGdhcC0yIGFjdGlvbi1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdhY3Rpb25zJylcIlxuICAgICAgICA+XG4gICAgICAgICAgQWN0aW9uXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvVmVjdG9yLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhY3Rpb25zJ1wiXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvd1wiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5BY3Rpb248L2E+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFub3RoZXIgYWN0aW9uPC9hPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5Tb21ldGhpbmcgZWxzZSBoZXJlPC9hPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U2VwYXJhdGVkIGxpbms8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJzaG93RmlsdGVycyAmJiAhc2hvd0ZpbHRlclJvd1wiXG4gICAgY2xhc3M9XCJ0b3AtZmlsdGVyLXJvdyBib3JkZXItdG9wIHB5LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJ0b3BGaWx0ZXJSb3dIZWlnaHRcIlxuICA+XG4gICAgPCEtLSBMRUZUIFNJREUgKEZpbHRlciB0YWdzICsgRmlsdGVyIGJ1dHRvbikgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGFjdGl2ZUZpbHRlcmVkQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci10YWdzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJ2ZpbHRlci1jb2x1bW5zJztcbiAgICAgICAgICAgICAgb3BlbkZpbHRlcihjb2wpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBhY3RpdmUtZmlsdGVyc1wiXG4gICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuICYmXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PSAnZmlsdGVyLWNvbHVtbnMnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRhZyBtdC0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4uc3ZnJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUNvbHVtbkZpbHRlckZyb21Db2x1bW4oY29sKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Jvc3Mtc2Vjb25kYXJ5IG1zLTIgbWItMVwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdmaWx0ZXItY29sdW1ucycgJiZcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zOyBjb250ZXh0OiB7IGNvbHVtbjogY29sIH1cIlxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gRmlsdGVyIEJ1dHRvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZmlsdGVyLWJ1dHRvbi1tZW51XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYnV0dG9uLWZpbHRlclwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNzBweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9wbHVzLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICBGaWx0ZXJcbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmICFpc0FjdGl2ZUZpbHRlck9wZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJJR0hUIFNJREUgKFVwZGF0ZSArIFJlc2V0KSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwic2F2ZVByZXNldCgpXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIhY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KClcIlxuICAgICAgPlxuICAgICAgICBVcGRhdGUgVmlld1xuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGxGaWx0ZXJzKClcIlxuICAgICAgPlxuICAgICAgICBSZXNldFxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIlxuICAgICAgc2hvd0ZpbHRlcnMgPyAnY2FsYygxMDAlIC0gJyArIHRvcEZpbHRlclJvd0hlaWdodCArICdweCknIDogJzEwMCUnXG4gICAgXCJcbiAgICBjZGtEcm9wTGlzdEdyb3VwXG4gICAgY2xhc3M9XCJkYXRhLWdyaWQtdGFibGUtd3JhcHBlciBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICNkYXRhR3JpZENvbnRhaW5lclxuICAgIFtzdHlsZS5mb250RmFtaWx5XT1cImZvbnRGYWltbHlcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgaWQ9XCJkYXRhLWdyaWQtbWFpbi1jb250YWluZXJcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1uc1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICB0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yIHx8IGhlYWRlckJhY2tncm91bmRDb2xvclxuICAgICAgXCJcbiAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyVG9Ub3BSb3dHcm91cGluZygkZXZlbnQpXCJcbiAgICAgIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJleGl0ZWRGcm9tVGhlVG9wUm93KCRldmVudClcIlxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BUb3BHcm91cCgkZXZlbnQpXCJcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImNhbkVudGVyVG9Sb3dzR3JvdXBpbmdcIlxuICAgICAgaWQ9XCJyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXJcIlxuICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3cgZC1mbGV4IHB4LTQgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIj5cbiAgICAgICAgICBEcmFnIGhlcmUgdG8gc2V0IHJvdyBncm91cHNcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uR3JvdXBSZW9yZGVyKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwiJ3gnXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgZ3JvdXBlZENvbHVtbnM7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxuICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sdW1ucy5sZW5ndGggPiAxICYmIGkgIT0gZ3JvdXBlZENvbHVtbnMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cIlxuICAgICAgICAnY2FsYygxMDAlIC0gJyArXG4gICAgICAgIChzaG93Um93c0dyb3VwaW5nXG4gICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKyBmb290ZXJSb3dIZWlnaHRcbiAgICAgICAgICA6IGZvb3RlclJvd0hlaWdodCkgK1xuICAgICAgICAncHgpJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaC0xMDBcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgIXNob3dTaWRlTWVudVxuICAgICAgICAgICAgPyAnMTAwJSdcbiAgICAgICAgICAgIDogc2lkZU1lbnVWaXNpYmxlXG4gICAgICAgICAgICA/ICdjYWxjKDEwMCUgLSAyODBweCknXG4gICAgICAgICAgICA6ICdjYWxjKDEwMCUgLSAzMHB4KSdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIHRyYW5zaXRpb24gcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIj5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXIgdy0xMDBcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiaGVhZGVyVGV4dEZvbnRzU2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIiFoYXNBbnlWaXNpYmxlQ29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXG4gICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIExlZnQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciBsZWZ0LXBpbm5lZFwiXG4gICAgICAgICAgICAgICNsZWZ0UGlubmVkSGVhZGVyXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwiaGFzTGVmdFBpbm5lZENvbHVtbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xuICAgICAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgUy5Ob1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hlc1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGFTZXQpXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoZGF0YVNldClcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoZGF0YVNldClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgIGlkPVwibGVmdC1waW5uZWQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJsZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnbGVmdCcpXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXG4gICAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMXB4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgbGVmdFBpbm5lZENvbHVtbnM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgQ2VudGVyIFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgY2VudGVyLXNjcm9sbGFibGVcIlxuICAgICAgICAgICAgICAjY2VudGVyUGlubmVkSGVhZGVyXG4gICAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgICBpZD1cImNlbnRlci1waW5uZWQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNlbnRlckNvbHVtbnNcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ2NlbnRlcicpXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJylcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGhdPVwiXG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwJSAtICcgK1xuICAgICAgICAgICAgICAgIChyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCArIGxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGgpICtcbiAgICAgICAgICAgICAgICAncHgpJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cGVkQ29sdW1ucz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAjY29sdW1uc0dyb3VwZWRCb3hcbiAgICAgICAgICAgICAgICBpZD1cImdyb3VwQm94SGVhZGVyRGl2XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHctMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0ZpbHRlclJvdyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzLTNcIj5Hcm91cDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsICdncm91cCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwQm94KCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IC0ycHhcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ0Fzc2V0cycgfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiXG4gICAgICAgICAgICAgICAgICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbCk7XG4gICAgICAgICAgICAgICAgICBkcmFnU3RhcnRPbkdyb3VwKGNvbCk7XG4gICAgICAgICAgICAgICAgICBvbkRyYWdTdGFydGVkKGNvbClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwib25EcmFnTW92ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJvbkRyYWdFbmRlZCgpXCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGNlbnRlckNvbHVtbnM7XG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncHJldmlld0NlbnRlckNvbHVtbnMnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc091dHNpZGVDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnZ2luZ0luR3JvdXBBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc091dHNpZGVDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlckNvbHVtbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhaXNPdXRzaWRlQ29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfZ3JvdXBhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX2dyb3VwYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBSaWdodCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICBpZD1cInJpZ2h0LXBpbm5lZC1oZWFkZXJcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIHJpZ2h0LXBpbm5lZFwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcbiAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAncmlnaHQnKVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXG4gICAgICAgICAgICAgICNyaWdodFBpbm5lZEhlYWRlclxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1oZWFkZXIgZC1mbGV4XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDAuMnB4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIHJpZ2h0UGlubmVkQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgQm9keSBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhZGF0YVNldD8ubGVuZ3RoICYmICFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZWNvcmQtbm90LWZvdW5kLnN2ZydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID48L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2Pk5vIFJlY29yZCBGb3VuZDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9hZGluZy1vdmVybGF5XCJcbiAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZyB8fCBkYXRhU2V0TG9hZGluZ1wiXG4gICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XG4gICAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxcHgpO1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHktd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJib2R5V3JhcHBlckhlaWdodFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlblwiXG4gICAgICAgICAgICAjbWFpblNjcm9sbFxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbk1haW5TY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBMRUZUIFBJTk5FRCAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICAhZ3JvdXBlZENvbHVtbnMubGVuZ3RoID8gb3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCAqIHJvd0hlaWdodCA6IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPD0gNFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keSBsZWZ0LXBpbm5lZC1ib2R5IHctMTAwXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnRyYW5zcGFyZW50LWJvcmRlci1yaWdodF09XCIhaGFzTGVmdFBpbm5lZENvbHVtbnNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJsZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcblxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlZnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIENFTlRFUiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuY2xpZW50V2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keSBjZW50ZXItc2Nyb2xsYWJsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPD0gNFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW47IG92ZXJmbG93LXg6IGF1dG9cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAjY2VudGVyU2Nyb2xsYWJsZUJvZHlcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zID8gbGVmdFBpbm5lZEJveHNoYWRvdzogJ25vbmUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIiAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3Q2VudGVyQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFJJR0hUIFBJTk5FRCAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtYm9keS13cmFwcGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSaWdodFBpbm5lZENvbHVtbnNcIlxuICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cIlxuICAgICAgICAgICAgICAgIGlzU2Nyb2xsYmFyVmlzaWJsZVxuICAgICAgICAgICAgICAgICAgPyByaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDE1XG4gICAgICAgICAgICAgICAgICA6IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keSByaWdodC1waW5uZWQtYm9keSB3LTEwMCBoLTEwMFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJveFNoYWRvd109XCJoYXNSaWdodFBpbm5lZENvbHVtbnMgPyByaWdodFBpbm5lZEJveHNoYWRvdzogJ25vbmUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPVwidG9wOiBhdXRvOyBsZWZ0OiBhdXRvXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuSW1hZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICBkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAoZm9vdGVyUm93SGVpZ2h0ICsgMTAwKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImltYWdlLW1vZGFsIGZ1bGwtaW1hZ2UtbW9kYWxcIlxuICAgICAgICAgICAgICAqbmdJZj1cImZ1bGxzY3JlZW5JbWFnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiXG4gICAgICAgICAgICAgICAgYWx0PVwiRnVsbHNjcmVlbiBJbWFnZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJvd3Muc2l6ZSA+IDAgJiYgc2hvd1Rhc2tiYXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRhc2tiYXIgdy0xMDBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLnB4XT1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtcm93cy1hY3Rpb24tYmFyXCIgW0BzbGlkZVVwXT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJvd3Muc2l6ZSB9fSBzZWxlY3RlZCBvZlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWc/LnBhZ2luYXRpb25QYXJhbXM/LnRvdGFsSXRlbXNcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBUb3RhbFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhc2tiYXJBY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uPy5oYXNfcGVybWlzc2lvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gdmVyaWZpZWQgYnRuIHt7IGFjdGlvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlDbGljayhhY3Rpb24/LmFjdGlvbk5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPT0gdGFza2JhckFjdGlvbnMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhclNlbGVjdGlvblN0YXRlKHRhYmxlVHlwZSk7c2VsZWN0ZWRSb3dzLmNsZWFyKCk7XCIgY2xhc3M9XCJjbGVhci1idG4gbXMtMiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XG4gICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpbkZha2VTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICAgICAgICB3aWR0aDogMTdweDtcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZjFmMmYzO1xuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gSG9yaXppbnRhbCBGYWtlIFNjcm9sbGJhcnMgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgKm5nSWY9XCJoYXNTY3JvbGwgJiYgIXNob3VsZFJlc3RvcmVTY3JvbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogc2Nyb2xsXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXG4gICAgICAgICAgICAjaG9yaXppbnRhbEZha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxXaWR0aCAtIDEwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNpZGUgTWVudSBJbXBsZW1lbnRlZCBIZXJlIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3dTaWRlTWVudVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaWRlTWVudVZpc2libGUgPyAyODAgOiAzMFwiXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzMHB4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXN0YXJ0XT1cInNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2NvbHMnKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5Db2x1bW5zPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2ZpbHRycycpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxuICAgICAgICAgICAgICAgIHNpZGVNZW51VmlzaWJsZSAmJiBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+RmlsdGVyPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHNpZGVNZW51VmlzaWJsZSA/ICcyNTBweCcgOiAnJyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIENvbHVtbiBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51LXJvdy1ncm91cHNcIiBzdHlsZT1cImhlaWdodDogMzAlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVSb3dHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVGaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxuICAgICAgY2xhc3M9XCJib3JkZXItdG9wXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICpuZ0lmPVwicGFnaW5hdGlvbkNvbmZpZ1wiXG4gICAgPlxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLnB4XT1cImZvb3RlclBhZGRpbmdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCIgW3ZhbHVlXT1cInNpemVcIj5cbiAgICAgICAgICAgICAge3sgc2l6ZSB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIj4gcGVyIHBhZ2UgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvXCI+XG4gICAgICAgICAgUmVzdWx0czpcbiAgICAgICAgICB7eyAocGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICsgMSB9fS17e1xuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCA8XG4gICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xuICAgICAgICAgICAgICA/IHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXRcbiAgICAgICAgICAgICAgOiBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xuICAgICAgICAgIH19XG4gICAgICAgICAgb2ZcbiAgICAgICAgICB7eyBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IDFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKAuVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiB2aXNpYmxlUGFnZXM7IHRyYWNrQnk6IHRyYWNrQnlJZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09ICcuLi4nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJwYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnBhZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZSA9PT0gJy4uLidcIj4uLi48L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKAulxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSBIZWFkZXIgQ2VsbCBUZW1wbGF0ZSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbjxuZy10ZW1wbGF0ZVxuICAjaGVhZGVyQ2VsbFxuICBsZXQtY29sXG4gIGxldC1waW5uZWRSaWdodD1cInBpbm5lZFJpZ2h0XCJcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1jb2x1bW5JbmRleD1cImluZGV4XCJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvblwiXG4gIGxldC1jYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXI9XCJjYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXJcIlxuPlxuICA8ZGl2PlxuICAgIDwhLS0gR3JvdXAgSGVhZGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdEhlYWRlclwiPlxuICAgICAgPGRpdiBjZGtEcm9wbGlzdEdyb3VwIGNsYXNzPVwiZ3JvdXAtY29sdW1uLXdyYXBwZXJcIj5cbiAgICAgICAgPCEtLSBQYXJlbnQgSGVhZGVyIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG91bGRUaGVHcm91cEhlYWRlclNob3coY29sKVwiXG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBncm91cC1oZWFkZXJcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgIFtzdHlsZS5ncmlkQ29sdW1uXT1cIidzcGFuICcgKyBjb2wuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1lbmRdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDFcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmUtaGVhZGVyXT1cImNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ29sdW1uSW5kaWNlcy5pbmNsdWRlcyhjb2w/LmluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1jb250ZW50XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5tcy0yXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjb2wuY2hpbGRyZW4pXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVHcm91cCgkZXZlbnQsIGNvbCwgcGlubmVkUmlnaHQpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENoaWxkIEhlYWRlcnMgYW5kIEZpbHRlcnMgLS0+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbC5jaGlsZHJlblwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uQ2hpbGREcm9wbGlzdFNvcnRlZCgkZXZlbnQsIHNlY3Rpb25zKVwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkNoaWxkRHJvcGxpc3REcm9wZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcbiAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNoaWxkXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmUtaGVhZGVyXT1cImNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ29sdW1uSW5kaWNlcy5pbmNsdWRlcyhjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSghY2hpbGQ/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbEluZGV4OiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpOyBhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNoaWxkPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZScgfHwgY2hpbGQ/LnR5cGUgPT0gJ2FycmF5J1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICAgICAgICAgID48c3BhblxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW5cbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmaWx0ZXItcm93LWZpbHRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgIWRyYWdnaW5nSW5Hcm91cEFyZWEgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWNoaWxkLmlzX2dyb3VwYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9iYW4uc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGNoaWxkSGVhZGVyUGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiBwaW5uZWRSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmxhdCBIZWFkZXIgfHwgU2luZ2xlIEhlYWRlciBDZWxsLS0+XG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gRnVsbC1oZWlnaHQgSGVhZGVyIENlbGwgKHNwYW5zIDIgcm93cyB2aXN1YWxseSkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxIC8gc3BhbiAyXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJjb2wub3JkZXJfYnlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFzY2VuZGluZyBTb3J0IEljb24gLS0+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIERlc2NlbmRpbmcgU29ydCBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XG4gICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAtKCFjb2w/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb2xJbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cImNvbC5waW5uZWQgPT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplQ29sdW1uKCRldmVudCwgY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY29sKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKCRldmVudCwgY29sKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICA+PC9zcGFuXG4gICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXG4gICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gQm9keSBDZWxsIFRlbXBsYXRlIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbjxuZy10ZW1wbGF0ZVxuICAjcm93Q2VsbFxuICBsZXQtcm93XG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gIGxldC1pc0V2ZW49XCJpc0V2ZW5cIlxuICBsZXQtaXNPZGQ9XCJpc09kZFwiXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxuPlxuICA8IS0tIENoZWNrIGlmIHJvdyBpcyBhIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBkZXB0aDogMCB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaXNHcm91cDsgZWxzZSByZWd1bGFyUm93XCI+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItcm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcbiAgICAgICAgICAgIDogJzEwMCUnXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2xlZnQnXCJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxXCJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0IGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2hlY2tib3hlc0NvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfHwgXCJcIiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxuICAgICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldEdyb3VwQ2hlY2tlZFN0YXRlKHJvdykgPT09IHRydWVcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJnZXRHcm91cENoZWNrZWRTdGF0ZShyb3cpID09PSB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2NlbnRlcidcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcy0yIGgtMTAwIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJkZXB0aCA+IDAgPyBkZXB0aCAqIDMwIDogMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgcm93LmlzRXhwYW5kXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiByb3cuY2hpbGRyZW47IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNHcm91cDsgZWxzZSBkYXRhUm93XCI+XG4gICAgICAgICAgICA8IS0tIFJlY3Vyc2l2ZSBjYWxsIGZvciBuZXN0ZWQgZ3JvdXAgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZ3JvdXBSb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRhUm93PlxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICBpc0V2ZW46IGkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgaXNPZGQ6IGkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjcmVndWxhclJvdz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxuICAgICAgICBcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcbiAgICAgICAgICAqbmdJZj1cInJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZmlsdGVyLWljb24td3JhcHBlclwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxuICAgICAgICBcIlxuICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvdyBoLTEwMFwiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICAgID48L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvd1wiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXG4gICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICd1cmwoJyArXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGxcIlxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXG4gICAgICAgICAgW2NsYXNzLmxlZnQtc2VsZWN0aW9uLWJvcmRlcl09XCJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgIGxldCBjb2xJbmRleCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdENvbHVtblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgICAgICBsZXQgc3ViQ29sSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX3Zpc2libGUgJiYgIWNoaWxkPy5pc1Jvd0dyb3VwZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IHN1YkNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdENvbHVtbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAnbGVmdCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzUwcHg7IG92ZXJmbG93OiBoaWRkZW5cIlxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIFtAc2xpZGVUb2dnbGVdXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlscyBjZW50ZXItc2VjdGlvblwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICBcIlxuICAgICAgI25lc3RlZFRhYmxlXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgIGhhc1JpZ2h0UGlubmVkQ29sdW1uc1xuICAgICAgICAgID8gJzEwMCUnXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxuICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDEycHgpJ1xuICAgICAgICAgIDogJzEwMCUnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXN0ZWRUYWJsZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnVGFza3MnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgdGFza01hbmFnZW1lbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFza0RldGFpbHM6IHJvdyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAncmlnaHQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlsc1wiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGxlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyO1xuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEFjdHVhbCBDZWxsIGlzIEhlcmUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2NlbGxUZW1wbGF0ZVxuICBsZXQtY29sPVwiY29sXCJcbiAgbGV0LXJvdz1cInJvd1wiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1zdWJDb2xJbmRleD1cInN1YkNvbEluZGV4XCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtY29sSW5kZXg9XCJjb2xJbmRleFwiXG4gIGxldC1pc1RvdGFsUm93PVwiaXNUb3RhbFJvd1wiXG4+XG4gIDxkaXZcbiAgICAjY2VsbENvbnRhaW5lclxuICAgIChjbGljayk9XCJyb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTsgZWRpdGluZ0tleSA9ICcnOyBjZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCk7IGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpXCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgIGNsYXNzPVwiY2VsbCBvdmVyZmxvdy12aXNpYmxlIHBvc2l0aW9uLXJlbGF0aXZlIGRhdGEtZ3JpZC1jZWxsXCJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgIFthdHRyLmxvY2F0aW9uXT1cInJvdy5fX3ZpcnR1YWxJbmRleCArICctJyArIGNvbC5pbmRleFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWNlbGxdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPD0gMSAmJiAgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCkgJiYgIWlzRWRpdGluZyhyb3csIGNvbClcIlxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBlbmFibGVFZGl0KHJvdywgY29sLCBmYWxzZSwgY2VsbENvbnRhaW5lcilcIlxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbClcIlxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy50b3AtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MuYm90dG9tLWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21Cb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmxlZnQtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0xlZnRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnJpZ2h0LWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNSaWdodEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MudG9wLWxlZnQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcExlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnRvcC1yaWdodC1jb3JuZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzVG9wUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmJvdHRvbS1sZWZ0LWNvcm5lcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21MZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5ib3R0b20tcmlnaHQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0JvdHRvbVJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIChtb3VzZWRvd24pPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc3RhcnRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2VlbnRlcik9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5leHRlbmRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2V1cCk9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5lbmRTZWxlY3Rpb24oKTsgY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgXG4+XG5cbiAgICA8IS0tICAobW91c2Vkb3duKT1cInN0YXJ0U2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxuICAobW91c2V1cCk9XCJlbmRTZWxlY3Rpb24oKVwiXG4gIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cImlzU2VsZWN0ZWQocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZClcIiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhYmxlLWNlbGxcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1mb3ItZWRpdGluZ109XCJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwIHx8IGNvbC50eXBlID09ICdpbWFnZScpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHwgY29sLnR5cGUgPT0gJ2ltYWdlJyB8fFxuICAgICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTAgJiZcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XG4gICAgICAgICAgZWxzZSB2aWV3TW9kZVxuICAgICAgICBcIlxuICAgICAgPlxuXG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsRWRpdG9yOyBlbHNlIGJ1aWx0SW5FZGl0b3JzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbY2VsbEVkaXRvcl09XCJjb2wuY2VsbEVkaXRvclwiXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgICAoZWRpdG9yRXZlbnQpPVwiZmluaXNoRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluRWRpdG9ycz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sPy50eXBlXCI+XG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgZGF0ZUlucHV0KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgI251bWJlclJlZlxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBudW1iZXJJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIG51bWJlcklucHV0KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz4gIFxuXG4gICAgICAgICAgPCEtLSBEYXRlIElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgI2RhdGVJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiXG4gICAgICAgICAgICB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGltZUlucHV0KVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAjdGltZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRpbWVJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIHRpbWVJbnB1dClcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCIgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiIFtzdHlsZS50ZXh0LWFsaWduXT1cIidsZWZ0J1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIlxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiMjBcIlxuICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjIwXCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCIyMFwiXG4gICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT09IHRydWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09PSAndHJ1ZSdcIlxuICAgICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcIlxuICAgICAgICAgICAgICAgI2Jvb2xlYW5JbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGJvb2xlYW5JbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcbiAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDwhLS0gSW1hZ2UgVXBsb2FkIC0tPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGFuZ2UoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAqbmdJZj1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMzJcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgICAgICAgIHN0eWxlPVwib2JqZWN0LWZpdDogY292ZXI7IGJvcmRlci1yYWRpdXM6IDRweFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzIGRyb3Bkb3duLWVkaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICAgZGF0YS1icy1kaXNwbGF5PVwic3RhdGljXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkRyb3Bkb3duS2V5RG93bigkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sKTsgZWxzZSBwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIHt7IGdldERyb3Bkb3duQ2VsbFRleHQocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1wbGFjZWhvbGRlclwiPlNlbGVjdCBhbiBvcHRpb24uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCIgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluRHJvcGRvd25TZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFxuICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzVcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHwgZmlsdGVyOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uPy52YWx1ZSB8fCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yIHB5LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbDsgZm9jdXNBZnRlclZhbHVlU2VsZWN0KHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gbm8gZmlsdGVyZWQgcmVzdWx0cyAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvciBBcnJheSB0eXBlIHZhbHVlcyAtLT5cblxuICAgICAgICAgIDwhLS0gTVVMVEkgU0VMRUNUIChBUlJBWSkgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25BcnJheUJsdXIocm93LCBjb2wpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNvbW1pdEFycmF5KHJvdywgY29sKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSB0ZXh0LXN0YXJ0IHctMTAwIHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcnJheVRlbXAocm93LCBjb2wpLmxlbmd0aDsgZWxzZSBhcnJheVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkaXNwbGF5QXJyYXlMYWJlbHMocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FycmF5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IG9wdGlvbnMuLi5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCIgW2NsYXNzLmludmlzaWJsZV09XCIhbWVudVJlYWR5XCIgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPiA1XCIgY2xhc3M9XCJweC0yIHB5LTEgYXJyYXktc2VhcmNoLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5Ecm9wZG93blNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMzVcIiBzdHlsZT1cImhlaWdodDogMTIwcHhcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfCBmaWx0ZXI6IGVkaXRpbkRyb3Bkb3duU2VhcmNoIDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbS0wIG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQXJyYXlTZWxlY3RlZChyb3csIGNvbCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBcnJheVRlbXAocm93LCBjb2wsIG9wdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgY29tbWl0QXJyYXkocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IG1heC13aWR0aDogMTZweDsgbWF4LWhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gZmlsdGVyZWQgbGlzdCBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICNlbWFpbE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgcGF0dGVybj1cIl5bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSRcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImJsdXJJbnB1dCgkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZW1haWxNb2RlbC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGVtYWlsTW9kZWwpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjdGV4dElucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWQgfHwgIWlzVmFsdWVWYWxpZChyb3csIGNvbCwgdGV4dE1vZGVsKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaXNwbGF5IG1vZGUgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI3ZpZXdNb2RlPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzZXMoY29sLCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gRmllbGQgaWNvbiAoZm9yIFRhc2tzIGdyaWQpIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiaWNvbk1hcFtjb2wuZmllbGRdKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNlbGxSZW5kZXJlciAmJiAhaXNUb3RhbFJvdzsgZWxzZSBkZWZhdWx0Q2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJnZXRDZWxsVGl0bGUocm93LCBjb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgY2VsbCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb2w/LnR5cGUgIT09ICdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgIGNvbD8uZmllbGQgIT0gJ2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgY29sPy5maWVsZCAhPSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgIWlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIHt7Z2V0Q2VsbFRpdGxlKHJvdywgY29sKX19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gVG90YWwgcm93IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmZpZWxkID09ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICcuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbWFnZSBjZWxsIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3c6IHJvdywgY29sOiBjb2wgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJykgfHxcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBpc0V4cGFuZGVkKHJvdywgY29sKVxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbCwgY29sdW1ucywgZmFsc2UpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGljb24gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgdGV4dCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcbiAgICAgICAgICAqbmdJZj1cImlzRXhwYW5kZWQocm93LCBjb2wpXCJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCIocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKVwiXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgIGlzQXJyYXk6IGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cblxuPG5nLXRlbXBsYXRlXG4gICNjb2x1bW5NZW51XG4gIGxldC1jb2w9XCJjb2xcIlxuICBsZXQtaXNOZXN0ZWRUYWJsZT1cImlzTmVzdGVkVGFibGVcIlxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxuICBsZXQtY29sdW1uSW5kZXg9XCJjb2x1bW5JbmRleFwiXG4gIGxldC1jaGlsZENvbEluZGV4PVwiY2hpbGRDb2xJbmRleFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXG4gICAgKm5nSWY9XCJhY3RpdmVDb2wgJiYgIWlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxuICA+XG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJlbG93IHBiLTJcIiBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfc29ydGFibGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdkZXNjJylcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy11cC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgU29ydCBBc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNvcnQgRGVzY2VuZGluZyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RGVzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnZGVzYycpXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNvcnQoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIFJlc2V0IFNvcnRcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiY29sPy50eXBlID09ICdpbWFnZScgfHwgIWNvbC5pc19zZWFyY2hfYWJsZVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgRmlsdGVyXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBMZWZ0XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBpc05lc3RlZFRhYmxlLFxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1yaWdodC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBSaWdodFxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxuICAgICAgICAgICAgYWN0aXZlQ29sLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9sYXlvdXQtdGhyZWUtY29sdW1ucy5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgICA+VW5waW5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVUaGlzQ29sdW1uXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtZXhwYW5kLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZUFsbENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtYW5nbGUtZXhwYW5kLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19ncm91cGFibGVcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGlhZ3JhbS0zLnN2ZydcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBHcm91cCBieSB7eyBjb2wuaGVhZGVyIH19XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENob29zZSBDb2x1bW5zIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dSZXNldENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+UmVzZXQgQ29sdW1uc1xuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNUaHJlZURvdHNGaWx0ZXJPcGVuICYmIGNvbD8uaXNfc2VhcmNoX2FibGVcIlxuICAgIGNsYXNzPVwidGhyZWUtZG90cy1jb2wtbWVudSBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cImdldER5bmFtaWNSaWdodChjb2wsIHNlY3Rpb24sIGNvbHVtbkluZGV4LCBjaGlsZENvbEluZGV4KVwiXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcbiAgPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5maWx0ZXJSZW5kZXJlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnUgcC0wXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW2NlbGxSZW5kZXJJbml0XT1cImNvbC5maWx0ZXJSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb250ZXh0XT1cImdyaWRDb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbD8uZmlsdGVyUmVuZGVyZXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxuPG5nLXRlbXBsYXRlICNmaWx0ZXJNZW51IGxldC1jb2w9XCJjb2xcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKm5nSWY9XCIhY29sPy5maWx0ZXJSZW5kZXJlclwiXG4gID5cbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT09ICdhcnJheSc7IGVsc2UgdGV4dEZpbHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1zZWN0aW9uIHAtMVwiPlxuXG4gICAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAvPlxuXG4gICAgPCEtLSBGaWx0ZXIgKyBSZXN1bHQgSGFuZGxpbmcgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXG4gICAgICBcIlxuICAgID5cbiA8IS0tIENoZWNrIGlmIGNvbHVtbl9kcm9wZG93bl92YWx1ZSBleGlzdHMgYW5kIGhhcyBkYXRhIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoOyBlbHNlIG5vRHJvcGRvd25EYXRhXCI+XG4gICAgICA8IS0tIERBVEEgRk9VTkQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuXG4gICAgICAgIDwhLS0gU2VsZWN0IEFsbCAob25seSB3aGVuIGRhdGEgZXhpc3RzKSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtdC0yIG1zLTEgc2VsZWN0LWFsbC1maWx0ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApID09PVxuICAgICAgICAgICAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPz8gMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA/PyAwKSA+IDAgJiZcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApIDxcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID8/IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxuICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVmlydHVhbCBTY3JvbGwgLS0+XG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci12aWV3cG9ydFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2lkXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihvcHRpb24pXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxuICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbikgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBOTyBEQVRBIEZPVU5EIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFGb3VuZD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAqbmdJZj1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgPlxuICAgICAgICAgIE5vIFJlY29yZCBGb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBOTyBEUk9QRE9XTiBEQVRBIEFWQUlMQUJMRSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Ryb3Bkb3duRGF0YT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0zIG1iLTNcIj5cbiAgICAgICAgICAgICBObyBSZWNvcmQgRm91bmRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGN1c3RvbS1zZWxlY3RcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJyB8fCBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbD8udHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXG4gICAgICAgICAgICAgIGlkPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCJjb2w/LnR5cGUgPT0gJ3N0cmluZycgPyAndGV4dCcgOiBjb2w/LnR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWNvbmQgVmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgID5cbiAgICAgICAgQXBwbHlcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXG4gICAgICA+XG4gICAgICAgIFJlc2V0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTWVudWUgLS0+XG5cbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFubmVsPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxuICAgIDwhLS0gUGl2b3QgVG9nZ2xlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInBpdm90VG9nZ2xlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJwaXZvdFRvZ2dsZVwiPlBpdm90IE1vZGU8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxlY3QgQWxsICYgU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5zLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cblxuPCEtLSBDb2x1bW4gUGFuZWwgSXRlbSBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZCA9ICFjb2wuZXhwYW5kZWRcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgW2lkXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgIFtpZF09XCInY29sXycgKyBjb2wuZmllbGRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXG4gICAgICAgIFtmb3JdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENvbHVtbnMgU2lkZSBGaWx0ZXIgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxuICA8ZGl2IGNsYXNzPVwicHktMyBweC0yIHBlLTMgaC0xMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNvbHVtblNlYXJjaCA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlclBhbm5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcbiAgICAgICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCJcbiAgICA+XG4gICAgICA8IS0tIENoZXZyb24gdG9nZ2xlIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBHcm91cCBsYWJlbCB0b2dnbGUgLS0+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgID57eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG1zLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGggfHwgY29sPy5xdWVyeT8uX2ZpcnN0X3ZhbHVlXCJcbiAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2w/LnR5cGUgIT09ICdpbWFnZSdcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBmdy1ib2xkXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XG4gICAgPGRpdiBbQHNsaWRlVG9nZ2xlXSAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNCBwZS0zXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVOZXN0ZWRGaWx0ZXIgbGV0LWNvbD1cImNvbFwiPlxuICA8ZGl2IGNsYXNzPVwiXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknOyBlbHNlIHRleHRGaWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2hcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8ubGVuZ3RoID09IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIihjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCAhPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCAmJiBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aClcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXG4gICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICdvcHRpb25fJyArXG4gICAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCArXG4gICAgICAgICAgICAgICAgICAgICdfJyArXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgKG9wdGlvbi52YWx1ZSB8fCBvcHRpb24pIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhRm91bmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTm8gUmVjb3JkIEZvdW5kXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+RlZcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5GVlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAoY29sPy50eXBlID09ICdudW1iZXInID8gJ251bWJlcic6ICd0ZXh0JylcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkhLmZpcnN0X3ZhbHVlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93IG11dGVkXCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cIm5ub25lbS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIlxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF9jb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiY29sPy50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuc2Vjb25kX3ZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPmFwcGx5PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cblxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlU2lkZUZpbHRlcihjb2wpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIihjb2w/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiKGNvbCE/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMXB4XCI+QXBwbHk8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENlbnRyIE92ZXJsYXkgZm9yIHNob3dpbmcgdGhlIGNob3NlIGNvbHVtbnMgLS0+XG5cbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXhpc3RpbmcgbmctdGVtcGxhdGUgeW91IHByb3ZpZGVkIC0tPlxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXG4gICAgPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cIm15LTBcIiAvPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxociBjbGFzcz1cIm10LTAgbWItMVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gaC0xMDAgZC1ub25lXCI+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuPlZhbHVlczwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxuICAgICAgICA+XG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cbiAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjZHJhZ1BsYWNlaG9sZGVyXG4gIGxldC1jb2xcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4+XG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgIDxkaXZcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cbiAgICAgIFwiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIj5OZXcgUGxhY2Vob2xkZXI8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVG9wIEdyb3VwIFJvdyBQbGFjZWhvbGRlciAtLT5cbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3Bhbj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XG4gICAgPHNwYW5cbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcbiAgbGV0LWNvbFxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXG4gIGxldC1pPVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uc1wiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJyB8fCBjb2w/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxuICAgICAgICAoY2xpY2spPVwiYWN0aXZlRmlsdGVyQ2VsbCA9IGNvbDsgYWN0aXZlQ29sID0gbnVsbFwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgPjwvc3Bhbj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsID09PSBjb2xcIlxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxuICA8ZGl2XG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+VGFibGUgTGF5b3V0PC9oNj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RhYmxlTGF5b3V0XCI+IFxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxuICAgICAgICBuYW1lPVwibGF5b3V0U2l6ZVwiXG4gICAgICAgIGlkPVwic21hbGxcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ3NtYWxsJylcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxuICAgICAgICBmb3I9XCJzbWFsbFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XG4gICAgICAgIFNtYWxsXG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcbiAgICAgICAgaWQ9XCJtZWRpdW1cIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdtZWRpdW0nKVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIG14LTMgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTJweFwiPjwvZGl2PlxuICAgICAgICBNZWRpdW1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImJ0bi1jaGVjayBsYXlvdXQtYnV0dG9uLWNoZWNrXCJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxuICAgICAgICBpZD1cImxhcmdlXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibGFyZ2VcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cbiAgICAgICAgTGFyZ2VcbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1NoYWRpbmdFbmFibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD1cInJvd1NoYWRpbmdcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1NpZGVNZW51XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcbiAgPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFNhdmUgUHJlc2V0IEJ1dHRvbiB3aXRoIERyb3Bkb3duIC0tPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZVN1YkFjdGlvbnMoJ3NhdmUtcHJlc2V0JylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiBwYi01IG92ZXJmbG93LWF1dG9cIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBjbGVhckFsbEZpbHRlcnModHJ1ZSk7XG4gICAgICAgICAgICBvcGVuSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9ICcnO1xuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gICAgICAgICAgICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPkRlZmF1bHQgVmlldzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiPkNyZWF0ZWQgYnkgc3lzdGVtPC9zbWFsbD5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+IC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUZpbHRlclZpZXdJZFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCB0YWJsZSBvZiBmaWx0ZXJlZExpc3Q7XG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEZpbHRlcih0YWJsZSk7IG9wZW5JbmRleCA9IG51bGxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwhLS0ge3t0YWJsZT8uaXNfdGVtcH19IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9PSB0YWJsZS5pZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXM/Lmxlbmd0aCA+IDI1XG4gICAgICAgICAgICAgID8gKHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzIHwgc2xpY2U6MDoyNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICh7eyB0YWJsZT8uY29uZmlnPy50b3RhbENvdW50IH19KVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cIiF0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPnt7IHRhYmxlPy5jcmVhdGVkQXQgfCBkYXRlIDogXCJNTU0gZCwgeVwiIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKHRhYmxlPy5pc190ZW1wICYmICF0ZW1wX3N0YXRlLmlkKSB8fCB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiIXRhYmxlPy5pc19kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2hvcml6b250YWwtZG90cy5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gbWVudSAtLT5cbiAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudSBwb3NpdGlvbi1maXhlZCB0b3AtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cIid1bnNldCdcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRXaWR0aCAtIDIwMFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiB1bnNldDsgcmlnaHQ6IHVuc2V0XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zdGFyLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibm9uZVwiICpuZ0lmPVwiIXRhYmxlLmNvbmZpcm1EZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZS5jb25maXJtRGVsZXRlID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RyYXNoLXJlZC5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGJyIC8+PGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPj9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uID09ICdzYXZlLXByZXNldCdcIlxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgIHN0eWxlPVwibWluLXdpZHRoOiAyNTBweFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy0xNHB4IG1iLTJcIj5cbiAgICAgIHt7IGlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gXCJTYXZlIHByZXNldFwiIDogXCJVcGRhdGUgUHJlc2V0XCIgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtMTRweCBtYi0yXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweFwiPlxuICAgICAgVGhpcyB3aWxsIHNhdmUgdGhlIGN1cnJlbnQgdGFibGUgYWRqdXN0bWVudHMgYXMgYSBwcmVzZXQuXG4gICAgPC9kaXY+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcbiAgICAgICAgPlByZXNldCBOYW1lPC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNwcmVzZXROYW1lQ3RybD1cIm5nTW9kZWxcIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXROYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XG4gICAgICAgICAgICAgIHByZXNldE5hbWVDdHJsLmludmFsaWQgJiZcbiAgICAgICAgICAgICAgKHByZXNldE5hbWVDdHJsLmRpcnR5IHx8IHByZXNldE5hbWVDdHJsLnRvdWNoZWQpXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBzLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJlc2V0IG5hbWVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInNhdmVGaWx0ZXJzXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG10LTFcIiBmb3I9XCJzYXZlRmlsdGVyc1wiPlxuICAgICAgICBTYXZlIGFjdGl2ZSBmaWx0ZXJzXG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIiBzdHlsZT1cImhlaWdodDogMzJweFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KHByZXNldE5hbWVDdHJsKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxuICAgICAgICAgICAgPlNhdmU8L25nLWNvbnRhaW5lclxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiPjwvc3BhblxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIiAqbmdJZj1cIiFpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZFwiXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93SGlkZUNvbHVtbnM+XG4gIDxkaXZcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXG4gID5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5Db2x1bW5zPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi1ub25lIGQtbm9uZVwiXG4gICAgICAgID5SZXNldDwvYVxuICAgICAgPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwibXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvcFNob3dIaWRlQ29sdW1uc1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDIyMFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxuICAgICAgICBTaG93IGluIHRhYmxlXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cImhpZGVfYWxsXCI+XG4gICAgICAgICAgICAgIFNob3cvSGlkZSBBbGwgXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEl0ZW0gLS0+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItZ3JhcCBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgIWNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCBmYWxzZSlcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxuICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNTBdPVwidmlzaWJsZUNvbHVtbnMoKS5sZW5ndGggPD0gMiB8fCBjb2w/LmlzX2Fsd2F5c192aXNpYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXG4gICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtbiAmJiBoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPjwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibXV0ZWQtdGV4dCBzaG93LWhpZGUtdGFibGUtbGFiZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPlxuICAgICAgICBIaWRlIGluIHRhYmxlXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJzaG93X2FsbFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwic2hvd19hbGxcIj5cbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiB0b3BTaG93SGlkZUNvbHVtbnMgOiAnaGVhZGVyJzsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyQ29sdW1ucyBsZXQtY29sPVwiY29sdW1uXCI+XG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cIiFpc0ZpbHRlck9wZW4gJiYgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsgb3ZlcmZsb3c6IGF1dG9cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyKGNvbClcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb2wuaXNfdmlzaWJsZSAmJlxuICAgICAgICAgICAgIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJyAmJiBjb2wuaXNfc2VhcmNoX2FibGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAtM3B4XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciAgfCB0aXRsZWNhc2UgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEcm9wZG93biAtLT5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNGaWx0ZXJPcGVuICYmIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkcm9wZG93bicgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgbXktMiBib3JkZXItYmVsb3cgcHktMSBwYi0yIG1iLTMgZC1mbGV4IHBzLTFcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlciB0ZXh0LWNhcGl0YWxpemVcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXG4gICAgICA+PC9zcGFuXG4gICAgICA+PGI+e3sgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmhlYWRlciB8IHRpdGxlY2FzZSAgfX08L2I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTIgcHgtM1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTEgdG9wLXJvdy1maWx0ZXItZHJvcGRvd24gdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc2VsZWN0ZWQ/LnZhbHVlID8gc2VsZWN0ZWQudmFsdWUgOiBzZWxlY3RlZCB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIoc2VsZWN0ZWQpXCJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxuICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdGVkRmlsdGVyT3B0aW9ucz8ubGVuZ3RoID8gJycgOiAnRmlsdGVyIGJ5J1wiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd25cIlxuICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJoYW5kbGVCYWNrc3BhY2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgICB8IGZpbHRlciA6IHNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA6ICd2YWx1ZSc7IHRyYWNrQnk6IHRyYWNrQnlJZDtcbiAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtpZF09XCJpXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihjb2wpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkIHRleHQtY2FwaXRhbGl6ZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCIgW2Zvcl09XCJpXCI+XG4gICAgICAgICAgICAgIHt7IGNvbD8udmFsdWUgfHwgY29sPy5uYW1lIHx8IGNvbCB8IHRpdGxlY2FzZSAgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVzZXRGaWx0ZXJDaGFuZ2VzKClcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTFcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCI+U2F2ZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEZvciBUZXh0IGZpZWxkcyBhbmQgbnVtYmVyIGZpZWxkcy0tPlxuXG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cIlxuICAgICAgaXNGaWx0ZXJPcGVuICYmXG4gICAgICAoc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnIHx8XG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJylcbiAgICBcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnMgcGItMlwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMjEwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgZC1mbGV4IHBzLTFcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+PGI+e3sgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmhlYWRlciB9fTwvYj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHBvc2l0aW9uLXJlbGF0aXZlIHAtMiB0ZXh0LWZpbHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdCBib3JkZXJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnIHx8IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZmlyc3QgdmFsdWVcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgPyAndGV4dCdcbiAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdFZhbHVlXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgY29sLTQgbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxBbmRcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE9yXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsT3JcIj5PUjwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgY29sLTQgbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxOb25lXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgbXQtM1wiPlxuICAgICAgICAgICAgPCEtLSBTZWNvbmQgY29uZGl0aW9uIHNlbGVjdCAtLT5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBib3JkZXJcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZENvbmRpdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJyB8fCBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0J1xuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHNlY29uZCB2YWx1ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSAmJiAhZmlyc3RWYWx1ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tbGlnaHQgYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlc2V0VGV4dEZpbHRlckNoYW5nZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA9PT0gMCAmJiAhZmlyc3RWYWx1ZSkgfHwgKGNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFzZWNvbmRWYWx1ZSlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIj5BcHBseTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRWRpdCBkcm9wZG93biBoZXJlIC0tPlxuPG5nLXRlbXBsYXRlIGxldC1jb2w+XG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNmdWxsVGV4dFRlbXBsYXRlXG4gIGxldC1yb3c9XCJyb3dcIlxuICBsZXQtY29sPVwiY29sXCJcbiAgbGV0LWlzQXJyYXk9XCJpc0FycmF5XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZnVsbC10ZXh0LWJveFwiXG4gICAgKGRibGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWlzQXJyYXlcIlxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLyAyXCJcbiAgICAgICAgKGRibGNsaWNrKT1cIlxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlbmFibGVFZGl0KHJvdywgY29sLCB0cnVlKVxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fFxuICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgdHJhY2tCeTogdHJhY2tCeUlkOyAgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiaSAhPT0gMFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBpdGVtPy5kZXBhcnRtZW50X25hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uZnVsbF9uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgXCItXCJcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIChkYmxjbGljayk9XCJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcbiAgICAgICAgXCJcbiAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICByb3dzPVwiNFwiXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcbiAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCB0ZXh0TW9kZWwpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGV4dEFyZWFkSW5wdXQuYmx1cigpXCJcbiAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcbiAgICAgICAgfVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEltYWdlUGxhY2Vob2xkZXIgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cInB4LTIgZC1mbGV4IHctMTAwIGNlbGwtY29udGVudCBpbWFnZS1wbGFjZWhvbGRlclwiXG4gICAgW3RpdGxlXT1cInJvdz8uZnVsbF9uYW1lIHx8IHJvdz8ubmFtZSB8fCAnTi9BJ1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICByb3c/LmFzc2V0SW1hZ2UgfHxcbiAgICAgICAgICByb3c/Lmludm9pY2U/Lmludm9pY2VfaW1hZ2UgfHxcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XG4gICAgICAgIGVsc2UgcGxhY2Vob2xkZXJcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cImZ1bGxzY3JlZW5JbWFnZSA9IHJvdz8ubG9nbyB8fCByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XG4gICAgICAgICAgICByb3c/LmFzc2V0SW1hZ2UgfHxcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXG4gICAgICAgIGNsYXNzPVwicGljXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgIFtjbGFzcy5hc3NldHMtcGljXT1cImdyaWRUeXBlID09ICdBc3NldHMnXCJcbiAgICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFt3aWR0aF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgW2hlaWdodF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XG4gICAgICAgICAgICByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XG4gICAgICAgICAgICByb3c/LmFzc2V0SW1hZ2UgfHxcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgYWx0PVwiaWNvblwiXG4gICAgICAgICAgY2xhc3M9XCJvcHRpb24taWNvblwiXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdlxuICAgICAgY2xhc3M9XCJmdWxsc2NyZWVuLW92ZXJsYXlcIlxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxuICAgICAgKGNsaWNrKT1cImZ1bGxzY3JlZW5JbWFnZSA9IG51bGxcIlxuICAgID5cbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgPHNwYW5cbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RHluYW1pY0NsYXNzKHJvdz8uZnVsbF9uYW1lIHx8IHJvdz8ubmFtZSlcIlxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxuICAgICAgPlxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxuPGRpdlxuICBbY2xhc3MuaW52aXNpYmxlXT1cIiFwb3NpdGlvbmVkWWV0XCJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcbiAgKm5nSWY9XCJhY3Rpb25IaWRlICYmIGFjdGlvbnM/Lmxlbmd0aFwiXG4gIFtuZ1N0eWxlXT1cInsgJ3RvcC5weCc6IHlQb3MsICdsZWZ0LnB4JzogeFBvcyB9XCJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcbiAgYXBwZW5kVG89XCJib2R5XCJcbj5cbiAgPHVsPlxuICAgIDxsaVxuICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgY2xhc3M9XCJyb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gcmlnaHQtY2xpY2stbWVudS1pY29ucyBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48IS0tIERldGFpbHMgVG9nZ2xlIGZyb20gYm90dG9tIC0tPlxuXG48bmctdGVtcGxhdGUgI25lc3RlZFRhYmxlVGVtcGxhdGUgbGV0LXJvdz5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXG4gICAgc3R5bGU9XCJ0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnRcIlxuICAgICNuZXN0ZWRUYWJsZUNvbnRhaW5lclxuICA+XG4gICAgPHRoZWFkXG4gICAgICAjbmVzdGVkSGVhZGVyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwicm93Py5kZXRhaWwuY29sdW1uc1wiXG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXG4gICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbk5lc3RlZENvbFNvcnQoJGV2ZW50LCBwcmV2aWV3TmVzdGVkQ29scylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBjZGtEcmFnXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBoLTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1yZWxhdGl2ZSBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzXCIgKGNsaWNrKT1cInNvcnROZXN0ZWRDb2woY29sLCByb3cpXCI+XG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFN1YlNvcnRDb2x1bW4gPT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAoY29sPy5vcmRlcl9ieSA9PSAnZGVzYydcbiAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1zLTIgc3RhcnQtNTBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNvbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxOyBsZWZ0OiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHJvdz8uZGV0YWlsLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbCk7XG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RoZWFkPlxuICAgIDxkaXZcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgID5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgW2l0ZW1TaXplXT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJ2aWV3cG9ydFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgKHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCA8IDVcbiAgICAgICAgICAgID8gbmVzdGVkVGFibGVyb3dIZWlnaHQgKiByb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggKyA0MFxuICAgICAgICAgICAgOiAzMDApICsgKGhhc0hvcml6b250YWxTY3JvbGwgPyAtMTIgOiAxKVxuICAgICAgICBcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3cgZC1mbGV4IHRyXCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBkIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHQ7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlcj8ub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBkKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInB4LTQgcHktMCB0ZFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHByZXZpZXdOZXN0ZWRDb2xzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBqID0gaW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cIm5lc3RlZFRhYmxlcm93Rm9udHNpemVcIlxuICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHQgLSAxXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJjb2w/LndpZHRoXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSB7eyBkW2NvbC5maWVsZF0gfHwgKGNvbC5pc19hbW91bnQgPyAwIDogXCItXCIpIH19IC0tPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2NlbGxUZXh0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICBjb2w/LnR5cGUgPT09ICdkYXRlJ1xuICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZSA6IGRhdGVGb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fCAnLSdcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSAhPT0gJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmlzX2Ftb3VudFwiPnt7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXG4gICAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGNvbC5oZWFkZXIgPT09ICdBcmNoaXZlZCBTdGF0dXMnXG4gICAgICAgICAgICAgICAgICAgICAgPyAoZ2V0Q2VsbFRpdGxlKGQsIGNvbCkgPT09IHRydWUgfHwgZ2V0Q2VsbFRpdGxlKGQsIGNvbCkgPT09ICd0cnVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdBcmNoaXZlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW5hcmNoaXZlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgOiBnZXRDZWxsVGl0bGUoZCwgY29sKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdpbWFnZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlciBsZXQtcm93PlxuICA8dGFibGVcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICBncmlkVHlwZSA9PSAnQXNzZXRzJ1xuICAgICAgICA/IChuZXN0ZWRUYWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApICsgMTJcbiAgICAgICAgOiAodGFza01hbmFnZW1lbnRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCA/PyAwKVxuICAgIFwiXG4gID5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0aGVhZFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRyIGQtZmxleCBib3JkZXItYmVsb3dcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIiAqbmdGb3I9XCJsZXQgXyBvZiBbMSwgMiwgMywgNCwgNV1cIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0Ym9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRyIGJvcmRlci1iZWxvd1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgXyBvZiByb3c/LmRldGFpbD8ucmVzdWx0XCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiAqbmdGb3I9XCJsZXQgX18gb2YgWzEsIDIsIDMsIDQsIDVdXCIgY2xhc3M9XCJweS0wXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Rhc2tNYW5hZ2VtZW50VGVtcGxhdGUgbGV0LXRhc2tEZXRhaWxzPVwidGFza0RldGFpbHNcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC00XCJcbiAgICAjdGFza01hbmFnZW1lbnRDb250YWluZXJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICBbc3R5bGUuZm9udEZhaW1seV09XCJmb250RmFpbWx5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkRlc2NyaXB0aW9uPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdlwiPlxuICAgICAgICB7eyB0YXNrRGV0YWlscy5kZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8cFxuICAgICAgICAgIFtzdHlsZS5mb250U2l6ZV09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZmlyc3REaXYgdGFza0Rlc2NyaXB0aW9uIHBlLTRcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQodGFza0RldGFpbHM/LmVkaXRvcl9kZXNjcmlwdGlvbilcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbEltYWdlKCRldmVudClcIlxuICAgICAgICA+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5BdHRhY2htZW50czwvZGl2PlxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgTm8gQXR0YWNobWVudHMgZm91bmRcbiAgICAgICAgPC9oNT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1jb250ZW50IGQtZmxleCBmbGV4LXdyYXBcIlxuICAgICAgICAgIHN0eWxlPVwiZ2FwOiAxMHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0YWNoZW1lbnQgb2YgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcbiAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oYXR0YWNoZW1lbnQpICtcbiAgICAgICAgICAgICAgICAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uY29tbWVudHM/Lmxlbmd0aCA9PSAwXCI+Tm8gQ29tbWVudHMgZm91bmQ8L2g1PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHM7IHRyYWNrQnk6IHRyYWNrQnlJZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgaW1hZ2UtaW5wdXQtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXG4gICAgICAgICAgICAgICAgc3JjPVwie3sgY29tbWVudD8uY29tbWVudF9ieS5sb2dvIH19XCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPCEtLSA8YXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXIgKm5nSWY9XCIhY29tbWVudD8uY29tbWVudF9ieS5sb2dvXCIgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCIgW25hbWVdPVwiY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZVwiPjwvYXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXI+IC0tPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RHluYW1pY0NsYXNzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ2V0SW5pdGlhbHMoY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hdXRob3IgZnMtMTRweFwiPlxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnQgZm9yQ29tbWVudEltZ1wiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRTYWZlQ29tbWVudChjb21tZW50LmNvbW1lbnQpXCJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50LmNvbW1lbnRfZGF0ZSB8IGRhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxuICAgICAgICAgICAgICAgIFJlcGxpZXM6ICh7eyBjb21tZW50LnJlcGxpZXMubGVuZ3RoIH19KVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
4983
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFPTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFNaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsT0FBTywyQ0FBMkMsQ0FBQztBQWtCbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2SSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQWlCRCxNQUFNLE9BQU8saUJBQWlCO0lBMkw1QixZ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QjtnQkFzYk4sY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBb3VDM0IsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVRdEMsT0FBTztzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1KMUMsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBZ1hjLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBSZW5kZXJlcjIsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgVGVtcGxhdGVSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgaW5qZWN0LFxuICBJbmplY3RvclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwbGl0Q29sdW1uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGxpdC1jb2x1bW5zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm93QWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jvdy1hY3Rpb24uc2VydmljZSdcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBDZGtEcmFnLFxuICBDZGtEcmFnRHJvcCxcbiAgQ2RrRHJhZ0VudGVyLFxuICBDZGtEcmFnRXhpdCxcbiAgQ2RrRHJhZ01vdmUsXG4gIENka0RyYWdTb3J0RXZlbnQsXG4gIG1vdmVJdGVtSW5BcnJheSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7IENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2VsbC1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0ICdib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHRtbENvbnRlbnRTYW5pdGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi9zZXJ2aWNlcy9odG1sLWNvbnRlbnQtc2FuaXRpemVyLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkQ29uZmlnIHtcbiAgZm9udEZhaW1seTogc3RyaW5nO1xuICBib2R5VGV4dEZvbnRzU2l6ZTogbnVtYmVyO1xuICBoZWFkZXJUZXh0Rm9udHNTaXplOiBudW1iZXI7XG4gIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgc2hvd1ZlcnRpY2FsQm9yZGVyOiBib29sZWFuO1xuICBzZWxlY3RlZFRhYmxlTGF5b3V0OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICBnbG9iYWxTZWFyY2g6IHN0cmluZztcbiAgZmlsdGVyTmFtZXM6IHN0cmluZztcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICByb3dTaGFkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgYWN0aXZlRmlsdGVyczogYm9vbGVhbjtcbiAgZ3JvdXBlZENvbHVtbnM/OiBzdHJpbmdbXTtcbn1cbmltcG9ydCB7IGFjY29yZGlvblRvZ2dsZUFuaW1hdGlvbiwgc2xpZGVUb2dnbGVBbmltYXRpb24sIHNsaWRlVXBBbmltYXRpb24sIHJvd0R5bmFtaWNBbmltYXRpb24sIHNvcnRpbmdBbmltYXRpb24gfSBmcm9tICcuLi9hbmltYXRpb25zJ1xuXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcbiAgTm9uZSA9ICdub25lJyxcbiAgU3ByZWFkID0gJ3NwcmVhZEFuaW1hdGlvbicsXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcbiAgRmxpcCA9ICdmbGlwQW5pbWF0aW9uJyxcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIGFjY29yZGlvblRvZ2dsZUFuaW1hdGlvbixcbiAgICBzbGlkZVRvZ2dsZUFuaW1hdGlvbixcbiAgICBzbGlkZVVwQW5pbWF0aW9uLFxuICAgIHJvd0R5bmFtaWNBbmltYXRpb24sXG4gICAgc29ydGluZ0FuaW1hdGlvblxuICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbkNvbmZpZzogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgZGF0YVNldDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgY29sdW1uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcm93SGVpZ2h0OiBudW1iZXIgPSA0NDtcbiAgQElucHV0KCkgaGVhZGVyUm93SGVpZ2h0OiBudW1iZXIgPSA1MDtcbiAgQElucHV0KCkgc2hvd1ZlcnRpY2FsQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgQElucHV0KCkgb2RkUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmMmYyZjInO1xuICBASW5wdXQoKSBoZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBzaG93Q29sdW1uc0dyb3VwaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBib2R5QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIHJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIHNpZGVtZW51QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xuICBASW5wdXQoKSBoZWFkZXJUZXh0Rm9udHNTaXplOiBudW1iZXIgfCB1bmRlZmluZWQgPSAxNDtcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xuICBASW5wdXQoKSBoZWFkZXJGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA1MDA7XG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XG4gIEBJbnB1dCgpIGNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdhbGljZWJsdWUnO1xuICBASW5wdXQoKSBkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGY4JztcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIEBJbnB1dCgpIHNob3dSb3dzR3JvdXBpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ZpbHRlclJvdzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XG4gIEBJbnB1dCgpIHNob3dTaWRlTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XG4gIEBJbnB1dCgpIHJvd1NoYWRpbmdFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZXJpYWxOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2luZ2xlU3BhQXNzZXRzUGF0aDogc3RyaW5nID0gJ2Fzc2V0cy8nO1xuICBASW5wdXQoKSBmaWx0ZXJzQ29uZmlnOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGg6ICdhdXRvJyB8ICd0aGluJyA9ICdhdXRvJztcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRlRm9ybWF0OiBzdHJpbmcgPSAnJ1xuICBASW5wdXQoKSB0YWJsZVNlYXJjaDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGFjdGlvbnM6IGFueVtdID0gWydlZGl0JywgJ2RlbGV0ZSddO1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93VGFza2JhciA9IGZhbHNlXG4gIEBJbnB1dCgpIHRhYmxlTmFtZSA9IHRydWVcbiAgQElucHV0KCkgbGlzdGluZ1R5cGU6IHN0cmluZyB8IGJvb2xlYW4gPSAnJztcbiAgQElucHV0KCkgY2hlY2tib3hTdGF0ZTogeyByZXNldDogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9XG4gIEBJbnB1dCgpIHRhc2tiYXJBY3Rpb25zOiBhbnlbXSA9IFtdXG4gIEBJbnB1dCgpIHNvcnRpbmdDb25maWc6IHsgZmllbGQ6IHN0cmluZywgb3JkZXJfYnk6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyVmlld0lkOiBhbnkgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWJsZUxheW91dDogYW55ID0gJ21lZGl1bSdcbiAgQElucHV0KCkgY2xvc2VEcm9wZG93bjogeyBwcmVzZXQ6IHsgY2xvc2VkOiBib29sZWFuLCBsb2FkaW5nOiBib29sZWFuIH0gfSA9IHsgcHJlc2V0OiB7IGNsb3NlZDogZmFsc2UsIGxvYWRpbmc6IGZhbHNlIH0gfTtcbiAgQElucHV0KCkgZ2xvYmFsU2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93Rm9udHNpemUgPSAxNDtcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHQgPSA0MDtcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dIZWlnaHQgPSA0NTtcbiAgQElucHV0KCkgcGFja2FnZURhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1VuTGluazogYW55O1xuICBASW5wdXQoKSBncmlkVHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VycmVuY3lGb3JtYXQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsZWZ0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjOGFjNWZmJztcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgbmVzdGVkVGFibGVSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZWFlYWVhJztcbiAgQElucHV0KCkgdGFibGVWaWV3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBidXR0b25zOiB7IG5hbWU6IHN0cmluZzsgaXNfc2hvd0ljb246IGJvb2xlYW47IGljb246IHN0cmluZywgaGFzX3Blcm1pc3Npb246IGJvb2xlYW4gfVtdID0gW107XG4gIEBJbnB1dCgpIGtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VG90YWxBbW91bnRSb3cgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlR2xvYmFsU2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFibGVUeXBlID0gJyc7XG4gIEBJbnB1dCgpIGVuYWJsZUV4cG9ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVDdXQgPSBmYWxzZTtcbiAgQElucHV0KCkgdGFiczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ZXMgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VGFibGVMYXlvdXQgPSB0cnVlO1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDI1LCA1MCwgNzUsIDEwMCwgMTUwLCAyMDAsIDI1MCwgMzAwLCA1MDBdO1xuICBASW5wdXQoKSByZXNldEFsbEZpbHRlcnMgPSB7IHJlc2V0QWxsOiBmYWxzZSB9O1xuICBASW5wdXQoKSBkZWZhdWx0Q29uZmlnOiBEYXRhR3JpZENvbmZpZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnID0ge1xuICAgIHNob3dQaW5sZWZ0OiB0cnVlLFxuICAgIHNob3dQaW5yaWdodDogdHJ1ZSxcbiAgICBzaG93QXNjZW5kaW5nOiB0cnVlLFxuICAgIHNob3dEZXNjZW5kaW5nOiB0cnVlLFxuICAgIHNob3dGaWx0ZXI6IHRydWUsXG4gICAgc2hvd1Jvd3NHcm91cGluZzogdGhpcy5zaG93Um93c0dyb3VwaW5nLFxuICAgIHNob3dBdXRvc2l6ZUFsbENvbHVtbnM6IHRydWUsXG4gICAgc2hvd0F1dG9zaXplVGhpc0NvbHVtbjogZmFsc2UsXG4gICAgc2hvd0Nob3NlQ29sdW1uczogZmFsc2UsXG4gICAgc2hvd1Jlc2V0Q29sdW1uczogZmFsc2UsXG4gIH07XG4gIEBJbnB1dCgpIHZhbGlkYXRlSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE91dCBQdXQgRXZlbnRzXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2VsbEhvc3REaXJlY3RpdmUpIGNlbGxIb3N0cyE6IFF1ZXJ5TGlzdDxDZWxsSG9zdERpcmVjdGl2ZT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTGF5b3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VzdG9tQ2VsbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsdGVyT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZ2VuZXJpY0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHRhYmxlUHJlc2V0Q29uZmlnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNvcnRpbmdPcmRlck9wdGlvbnM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHN0b3JlUHJlc2V0TmFtZTogc3RyaW5nID0gJyc7XG4gIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICBhY3RpdmVUYWI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBncm91cGVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgYWN0aXZlQ29sOiBhbnkgPSBudWxsO1xuICBhY3RpdmVGaWx0ZXJDZWxsOiBhbnkgPSBudWxsO1xuICBzaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XG4gIHNpZGVNZW51VmlzaWJsZSA9IGZhbHNlO1xuICBwaXZvdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29sdW1uU2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgZXhwYW5kQWxsQWNjb3JkaWFucyA9IHRydWU7XG4gIGN1cnJlbnRPcGVuZWRTaWRlTWVudWU6ICdjb2xzJyB8ICdmaWx0cnMnIHwgbnVsbCA9IG51bGw7XG4gIG9yaWdpbmFsQ29sdW1uczogYW55W10gPSBbXTtcbiAgb3JpZ2luYWxEYXRhU2V0OiBhbnlbXSA9IFtdO1xuICBhY3RpdmVUb3BCdXR0b246IHN0cmluZyB8IG51bGwgPSAnJztcbiAgZmlsdGVyQ29sdW1uc0xpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwQm94UGFkZGluZyA9IDIwMDtcbiAgcHJlc2V0TmFtZTogc3RyaW5nID0gJyc7XG4gIHByZXNldEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWFyY2hUZXh0UHJlc2V0VGFibGUgPSAnJztcbiAgYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcbiAgc2VhcmNoSW5Ecm9wZG93biA9ICcnO1xuICBwcml2YXRlIHNlY3JldEtleSA9ICd0Yi1zdXBlci1hZG1pbidcbiAgYWRkRmlsdGVyRHJvcGRvd25TZWFyY2ggPSAnJ1xuICB0b3BTaG93SGlkZUNvbHVtbnMgPSAnJztcbiAgY2hvc2VDb2x1bW5zU2VhcmNoID0gJydcbiAgc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA9ICcnXG4gIGVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XG4gIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICBjb25maXJtRGVsZXRlID0gZmFsc2U7XG4gIHByaXZhdGUgb3JpZ2luYWxBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBmb250RmFtaWxpZXM6IHN0cmluZ1tdID0gW107XG4gIGZvbnRTaXplczogc3RyaW5nW10gPSBbJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyNCddO1xuICBoYXNTY3JvbGwgPSBmYWxzZTtcbiAgbGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XG4gIHJpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBwcmV2aWV3Q2VudGVyQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblxuICBAVmlld0NoaWxkKCdkYXRhR3JpZENvbnRhaW5lcicpXG4gIGRhdGFHcmlkQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcbiAgdGFza01hbmFnZW1lbnRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbmVzdGVkVGFibGVDb250YWluZXInKVxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXG4gIGxlZnRQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEJvZHknKVxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0UGlubmVkQm9keScpXG4gIHJpZ2h0UGlubmVkQm9keSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkSGVhZGVyJylcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRIZWFkZXInKVxuICBjZW50ZXJQaW5uZWRIZWFkZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxuICByaWdodFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdnbG9iYWxTZWFyY2hJbnB1dCcpXG4gIGdsb2JhbFNlYXJjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY29sdW1uc0dyb3VwZWRCb3gnKVxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJGYWtlU2Nyb2xsYmFyJylcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZWxsVGV4dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjZWxsVGV4dCE6IGFueTtcbiAgQFZpZXdDaGlsZCgnbmVzdGVkSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5lc3RlZEhlYWRlciE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2x1bW5TZXJ2aWNlOiBTcGxpdENvbHVtbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBjb21tb25TZXZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjb3B5U2VydmljZTogQ29weVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXG4gICAgcHJpdmF0ZSBhY3Rpb25WYWxpZGF0b3I6IFJvd0FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uc1NlcnZpY2U6IFZhbGlkYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGh0bWxTYW5hdGl6ZXJTZXJ2aWNlOiBIdG1sQ29udGVudFNhbml0aXplclNlcnZpY2UsXG4gICAgcHVibGljIGNlbGxTZWxlY3Rpb25TZXJ2aWNlOiBDZWxsU2VsZWN0aW9uU2VydmljZSxcblxuICApIHsgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgICB0aGlzLmNvbXB1dGVWaWV3cG9ydFJvd3MoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuXG4gICAgICBpZiAodGhpcy5jZWxsVGV4dCkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJlbmRlckN1c3RvbUNlbGxzKCk7XG4gICAgICB0aGlzLmJ1aWxkUGFnZVNpemVLZXlNYXAoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmdldENvbHVtbkJ5SW5kZXggPSAoaSkgPT4gdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLmluZGV4ID09PSBpKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnZlcnRpY2FsQ29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5ob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uucm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgdGhpcy5mb250RmFtaWxpZXMgPSB0aGlzLmNvbW1vblNldmljZS5mb250RmFtaWxpZXM7XG5cbiAgfVxuXG4gIGNyZWF0ZUNlbGxJbmplY3Rvcihyb3c6IGFueSwgY29sOiBhbnkpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiAncm93RGF0YScsIHVzZVZhbHVlOiByb3cgfSxcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHJlbmRlckN1c3RvbUNlbGxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RzID0gdGhpcy5jZWxsSG9zdHMudG9BcnJheSgpO1xuICAgIGxldCBob3N0SW5kZXggPSAwO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy52aXNpYmxlUm93cykge1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBob3N0c1tob3N0SW5kZXgrK107XG4gICAgICAgIGlmICghaG9zdCB8fCAhY29sLmNlbGxSZW5kZXJlcikgY29udGludWU7XG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXIgPSBob3N0LnZpZXdDb250YWluZXJSZWY7XG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgcm93LFxuICAgICAgICAgIGNvbCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXG4gICAgICAgICAgYXBpOiB0aGlzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoY29tcFJlZi5pbnN0YW5jZSBhcyBhbnkpLmdyaWRJbml0KSB7XG4gICAgICAgICAgKGNvbXBSZWYuaW5zdGFuY2UgYXMgYW55KS5ncmlkSW5pdChwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBzaG91bGRSZXN0b3JlU2Nyb2xsID0gZmFsc2U7XG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFN0eWxlc1RvSW1hZ2VzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG91bGRSZXN0b3JlU2Nyb2xsICYmXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50XG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xuICAgICAgY29uc3Qgc3RvcmVkRGF0ZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlZm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkRGF0ZUZvcm1hdCkge1xuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBzdG9yZWREYXRlRm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWREYXRlRm9ybWF0KSA6ICdkZC9NTS95eXl5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lGb3JtYXQpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Rm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeUZvcm1hdCA9IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeUZvcm1hdCkgOiAnMSwyMzQsNTY3Ljg5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lTeW1ib2wpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5U3ltYm9sID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5U3ltYm9sJyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHN0b3JlZEN1cnJlbmN5U3ltYm9sID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeVN5bWJvbCkgOiAnJCc7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBkYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyh0aGlzLmNvbHVtbnMpO1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpO1xuXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgICBjb25zdCBhbGxUYWJzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWN0aXZlVGFicycpIHx8ICd7fScpO1xuICAgICAgICBsZXQgc2F2ZWRUYWJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA/IChzYXZlZFRhYiA9IHRoaXMuc2VsZWN0ZWRUYWIpIDogKHNhdmVkVGFiID0gYWxsVGFic1t0aGlzLnRhYmxlVHlwZV0pXG4gICAgICAgIGlmICh0aGlzLnRhYnMuaW5jbHVkZXMoJ0N1cnJlbnQgUG9saWN5JykpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBzYXZlZFRhYiB8fCB0aGlzLnRhYnM/LlswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XG4gICAgICB0aGlzLmNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddPy5jdXJyZW50VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKHRydWUpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcblxuICAgICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAuLi5jb2wsXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgICA6IFtdLFxuICAgICAgfSkpO1xuXG5cbiAgICAgIGlmICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCkge1xuICAgICAgICBhd2FpdCB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zZXRTZWN0aW9uc1dpZHRoKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTZXQnXSkge1xuICAgICAgdGhpcy5kYXRhU2V0ID0gdGhpcy5kYXRhU2V0Py5tYXAoKHJvdywgaSkgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgICBfX3ZpcnR1YWxJbmRleDogaSArIDEsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5kYXRhU2V0ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ7XG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICBpZiAodGhpcy5jb21tb25TZXZpY2U/Lm1haW5Db250YWluZXJMZWZ0ID4gMjAwKVxuICAgICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdm9pZCB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxuICAgICAgICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuZm9yRWFjaChncm91cGVkQ29sID0+IHtcbiAgICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBncm91cGVkQ29sLmZpZWxkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xuXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgICAgb2JqOiBpZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjbG9zZURyb3Bkb3duJ10gJiYgdGhpcy5jbG9zZURyb3Bkb3duLnByZXNldC5jbG9zZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnByZXNldE5hbWUgPSAnJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xuICAgICAgICBsZXQgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxuICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX3RlbXApXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGlmICghdGVtcHJvcnlTZWxlY3RlZCkge1xuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcbiAgICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2RlZmF1bHQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IHRlbXByb3J5U2VsZWN0ZWQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcbiAgICAgICAgdGhpcy5zdG9yZVByZXNldE5hbWUgPSB0ZW1wcm9yeVNlbGVjdGVkPy5uYW1lIHx8ICcnO1xuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZDtcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5mb250RmFpbWx5O1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmhlYWRlclRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuYm9keVRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZ2xvYmFsU2VhcmNoO1xuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcbiAgICAgICAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0ZW1wcm9yeVNlbGVjdGVkPy5jb25maWc/Lm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgfHwgJyNmMWYxZjEnO1xuICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gdGVtcHJvcnlTZWxlY3RlZD8uY29uZmlnPy5ncm91cGVkQ29sdW1ucztcbiAgICAgICAgICBpZiAoZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZShncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMuZGF0YVNldCwgdGhpcy5ncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRDb25maWcpIHtcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGhpcy5kZWZhdWx0Q29uZmlnLnJvd1NoYWRpbmdFbmFibGVkIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gdGhpcy5kZWZhdWx0Q29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciB8fCBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0aGlzLmRlZmF1bHRDb25maWcuZm9udEZhaW1seSB8fCAnSW50ZXInO1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuZGVmYXVsdENvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRoaXMuZGVmYXVsdENvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0O1xuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuYm9keVRleHRGb250c1NpemUgfHwgMTQ7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbFNlYXJjaDtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCk7XG4gICAgICAgICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSB0aGlzLmRlZmF1bHRDb25maWc/Lmdyb3VwZWRDb2x1bW5zO1xuICAgICAgICAgIGlmIChncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gc3RydWN0dXJlZENsb25lKGdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5kYXRhU2V0LCB0aGlzLmdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgfHwgJ21lZGl1bSc7XG4gICAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddICYmIGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYnVpbGRQYWdlU2l6ZUtleU1hcCgpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHJldHVybjtcbiAgICB0aGlzLmNvbHVtbnMgPSBhd2FpdCB0aGlzLmNvbW1vblNldmljZS5jb3B5RHJvcGRvd25EYXRhUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIGFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzRnJvbVN0YXRlID0gdGhpcy5yZXN0b3JlU2VsZWN0aW9uKHRoaXMudGFibGVUeXBlKTtcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgICBvYmo6IGlkc1xuICAgICAgICB9LFxuICAgICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3tcInNlbGVjdGVkUm93c1wiOiB7fX0nKTtcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcbiAgICAgIGRlbGV0ZSBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV07XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgJ2RhdGF0YWJsZVNlbGVjdGlvbnMnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoc3RvcmVkKVxuICAgICk7XG4gIH1cblxuXG5cbiAgYXN5bmMgYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbLi4udXBkYXRlZENvbHVtbnNdO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBhc3luYyB1cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoY29sdW1uczogYW55ID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxuICAgICAgICBjb2x1bW5zID8gY29sdW1ucyA6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgY29udGFpbmVyV2lkdGhcbiAgICAgICk7XG4gICAgICByZXNvbHZlKHByZXBhcmVkKTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCAwKSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgLy8gV3JhcCBwcmVwYXJlQ29sdW1ucyBpbiBhIFByb21pc2UgdG8gbWFrZSBpdCBhd2FpdGFibGVcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuY29sdW1uU2VydmljZS5wcmVwYXJlQ29sdW1ucyhcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXG4gICAgICApO1xuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyA9IGxlZnQ7XG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMgPSByaWdodDtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGFzeW5jIFNldENvbHVtbnNEZWZhdWx0V2lkdGgoKSB7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICBjb250YWluZXJXaWR0aFxuICAgICk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XG4gICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sZWZ0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY2VudGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnJpZ2h0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmxlZnRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBsZWZ0LnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLnJpZ2h0UGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9YDtcbiAgICB9XG4gIH1cblxuICBmYWtlU2Nyb2xsYmFyU2Nyb2xsTGVmdCA9IDA7XG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHZhbHVlID0gZmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcbiAgICBpZiAodGhpcy5pc1N0YXR1c0ZpZWxkKGZpZWxkKSAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlID8gdGhpcy5jYXBpdGFsaXplU3RhdHVzKHZhbHVlLnZhbHVlKSA6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgIG5hbWU6IHZhbHVlLm5hbWUgPyB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUubmFtZSkgOiB2YWx1ZS5uYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpc05lc3RlZFZhbHVlQXJyYXkob2JqOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiAoYWNjICYmIGFjY1twYXJ0XSAhPT0gdW5kZWZpbmVkID8gYWNjW3BhcnRdIDogdW5kZWZpbmVkKSwgb2JqKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW47XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyDwn5SlIENhY2hlIERPTSArIGluaXRpYWwgd2lkdGhzIG9uY2VcbiAgICBjb25zdCBjaGlsZE1ldGEgPSBjaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudHNbMF0/Lm9mZnNldFdpZHRoIHx8IDgwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICBpbml0aWFsV2lkdGg6IHdpZHRoLFxuICAgICAgICByYXRpbzogMCwgICAgICAgLy8gZmlsbGVkIGxhdGVyXG4gICAgICAgIGZpbmFsV2lkdGg6IHdpZHRoXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWxJbml0aWFsV2lkdGggPSBjaGlsZE1ldGEucmVkdWNlKFxuICAgICAgKHN1bTogYW55LCBjOiBhbnkpID0+IHN1bSArIGMuaW5pdGlhbFdpZHRoLFxuICAgICAgMFxuICAgICk7XG5cbiAgICAvLyDwn5SlIFByZWNvbXB1dGUgcmF0aW9zIG9uY2VcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkTWV0YSkge1xuICAgICAgY2hpbGQucmF0aW8gPSBjaGlsZC5pbml0aWFsV2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcbiAgICB9XG5cbiAgICAvLyDwn5SlIENhY2hlIGdyb3VwIGhlYWRlciBvbmNlXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtncm91cD1cIiR7Y29sLmhlYWRlcn1cIl1gXG4gICAgKTtcblxuICAgIGxldCBsYXRlc3REZWx0YSA9IDA7XG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGFwcGx5V2lkdGhzID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgICAgY2hpbGQuaW5pdGlhbFdpZHRoICsgbGF0ZXN0RGVsdGEgKiBjaGlsZC5yYXRpbyxcbiAgICAgICAgICA4MFxuICAgICAgICApO1xuXG4gICAgICAgIGNoaWxkLmZpbmFsV2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgdG90YWxOZXdXaWR0aCArPSBuZXdXaWR0aDtcblxuICAgICAgICBjb25zdCB3aWR0aFB4ID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGNoaWxkLmVsZW1lbnRzKSB7XG4gICAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICAgIGVsLnN0eWxlLm1pbldpZHRoID0gd2lkdGhQeDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xuICAgICAgICBncm91cEhlYWRlckVsLnN0eWxlLndpZHRoID0gYCR7dG90YWxOZXdXaWR0aH1weGA7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgaWYgKGlzUmlnaHRQaW5uZWQpIGRlbHRhWCA9IC1kZWx0YVg7XG5cbiAgICAgIC8vIPCflKUgUHJldmVudCBzaHJpbmtpbmcgYmVsb3cgbWluXG4gICAgICBpZiAodG90YWxJbml0aWFsV2lkdGggKyBkZWx0YVggPCBjaGlsZHJlbi5sZW5ndGggKiA4MCkgcmV0dXJuO1xuXG4gICAgICBsYXRlc3REZWx0YSA9IGRlbHRhWDtcblxuICAgICAgaWYgKHJhZklkID09PSBudWxsKSB7XG4gICAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFwcGx5V2lkdGhzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgLy8g8J+UpSBDb21taXQgd2lkdGhzIE9OQ0VcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoXG4gICAgICAgICAgY2hpbGQuZmllbGQsXG4gICAgICAgICAgY2hpbGQuZmluYWxXaWR0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuXG4gICAgICBpZiAocmFmSWQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjcmVhdGVVcGRhdGVDb2x1bW5Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdGFibGVfY29uZmlnOiB7XG4gICAgICAgIHJvd1NoYWRpbmdFbmFibGVkOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkIHx8IGZhbHNlLFxuICAgICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyIHx8IGZhbHNlLFxuICAgICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHkgfHwgJ0ludGVyJyxcbiAgICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogTnVtYmVyKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSkgfHwgMTQsXG4gICAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCB8fCAnbWVkaXVtJyxcbiAgICAgICAgYm9keVRleHRGb250c1NpemU6IE51bWJlcih0aGlzLmJvZHlUZXh0Rm9udHNTaXplKSB8fCAxNCxcbiAgICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLmdsb2JhbFNlYXJjaFRleHQsXG4gICAgICAgIGZpbHRlck5hbWVzOiAnJyxcbiAgICAgICAgdG90YWxDb3VudDogMCxcbiAgICAgICAgYWN0aXZlRmlsdGVyczogdHJ1ZSxcbiAgICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogJyNmMWYxZjEnXG4gICAgICB9LFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfVxuICB9XG5cbiAgY2xlYW5Db2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sKSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIF9fdHlwZW5hbWUsXG4gICAgICAgIF9pZCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxuICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgZXhwYW5kZWRGaWx0ZXIsXG4gICAgICAgIGNlbGxSZW5kZXJlcixcbiAgICAgICAgZmlsdGVyUmVuZGVyZXIsXG4gICAgICAgIGNlbGxDb21wb25lbnRSZWYsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICBpc1Jvd0dyb3VwZWQsXG4gICAgICAgIGluZGV4LFxuICAgICAgICAuLi5yZXN0XG4gICAgICB9ID0gY29sO1xuXG4gICAgICAvLyBDbGVhbiBkcm9wZG93biB2YWx1ZXMgKF9fdHlwZW5hbWUgcmVtb3ZlZClcbiAgICAgIGNvbnN0IGNsZWFuZWREcm9wZG93biA9IEFycmF5LmlzQXJyYXkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxuICAgICAgICA/IGNvbHVtbl9kcm9wZG93bl92YWx1ZS5tYXAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpXG4gICAgICAgIDogY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpKGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIC8vIENsZWFuIHF1ZXJ5IChfX3R5cGVuYW1lIHJlbW92ZWQpXG4gICAgICBjb25zdCBjbGVhbmVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHF1ZXJ5KVxuICAgICAgICA/IHF1ZXJ5Lm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5xUmVzdCB9KSA9PiBxUmVzdClcbiAgICAgICAgOiBxdWVyeVxuICAgICAgICAgID8gKCh7IF9fdHlwZW5hbWUsIF9pZHMsIC4uLnFSZXN0IH0pID0+IHFSZXN0KShxdWVyeSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY2xlYW5lZERyb3Bkb3duLFxuICAgICAgICBxdWVyeTogY2xlYW5lZFF1ZXJ5LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVzaXplQ29sdW1uKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYClcbiAgICApO1xuXG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IGVsZW1lbnRzWzBdLm9mZnNldFdpZHRoIHx8IDE1MDtcbiAgICBjb25zdCBpc1JpZ2h0UGlubmVkID0gY29sLnBpbm5lZCA9PT0gJ3JpZ2h0JztcbiAgICBjb25zdCBoaWdobGlnaHRDbGFzcyA9IGlzUmlnaHRQaW5uZWRcbiAgICAgID8gJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCdcbiAgICAgIDogJ3Jlc2l6aW5nLWhpZ2hsaWdodCc7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoaGlnaGxpZ2h0Q2xhc3MpKTtcbiAgICBsZXQgbGF0ZXN0V2lkdGggPSBpbml0aWFsV2lkdGg7XG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBhcHBseVdpZHRoID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuICAgICAgY29uc3Qgd2lkdGhQeCA9IGAke2xhdGVzdFdpZHRofXB4YDtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICBlbC5zdHlsZS5taW5XaWR0aCA9IHdpZHRoUHg7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSBkZWx0YVggPSAtZGVsdGFYO1xuXG4gICAgICBjb25zdCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcbiAgICAgIGlmIChuZXdXaWR0aCA8IDgwKSByZXR1cm47XG5cbiAgICAgIGxhdGVzdFdpZHRoID0gbmV3V2lkdGg7XG5cbiAgICAgIGlmIChyYWZJZCA9PT0gbnVsbCkge1xuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhcHBseVdpZHRoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgY29sLndpZHRoID0gbGF0ZXN0V2lkdGg7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbGF0ZXN0V2lkdGgpO1xuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5yZW1vdmUoaGlnaGxpZ2h0Q2xhc3MpKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG5cbiAgICAgIGlmIChyYWZJZCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwLCB7IG9uY2U6IHRydWUgfSk7XG4gIH1cblxuXG5cblxuICBvblJlc2l6ZUdyb3VwQm94KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgICBjb25zdCB0YXJnZXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cEJveEhlYWRlckRpdicpO1xuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XG5cbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuXG4gICAgICBsZXQgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xuXG4gICAgICBpZiAodGFyZ2V0RWwpIHtcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgICAgIHRhcmdldEVsLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IG5ld1dpZHRoO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgfVxuXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGNvbCk7XG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKGNvbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBjb2wuZmlsdGVyVmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcbiAgICBpZiAoIWNvbD8ucXVlcnkpIHtcbiAgICAgIGNvbC5xdWVyeSA9IHtcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxuICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxuICAgICAgICBjb25kaXRpb246IG51bGxcbiAgICAgIH1cbiAgICB9XG4gICAgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlID0gZmlsdGVyVmFsdWU7XG4gICAgdGhpcy5maXJzdFZhbHVlID0gZmlsdGVyVmFsdWU7XG4gIH1cblxuICBnZXQgYm9keVdyYXBwZXJIZWlnaHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmhlYWRlclJvd0hlaWdodCAqIHJvd3MgKyAodGhpcy5oYXNTY3JvbGwgPyAxNyA6IDApO1xuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHtvZmZzZXR9cHgpYDtcbiAgfVxuXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIG9uUm93SG92ZXIocm93OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IHJvdy5faWQgfHwgcm93LmlkO1xuICB9XG5cbiAgb25Sb3dMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkluZGV4ID0gbnVsbDtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXG4gICAgICAgICd0aHJlZS1kb3RzJyxcbiAgICAgICAgJ2ZpbHRlci1pY29uLXdyYXBwZXInLFxuICAgICAgICAnY29sdW1uLW1lbnUnLFxuICAgICAgICAnZmlsdGVyLW1lbnUnLFxuICAgICAgXSlcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGluc2lkZVRvcEZpbHRlclJvdyA9IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXRhZ3MnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLmFkZC1maWx0ZXItYnV0dG9uLW1lbnUnKSB8fFxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoJy50YWJsZS1yaWdodC10b3AtYWN0aW9ucycpIHx8IHRhcmdldC5jbG9zZXN0KCcudGFibGUtbGF5b3V0JykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItcm93LWZpbHRlci13cmFwcGVyJyk7XG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XG4gICAgaWYgKCFpc0NsaWNrZWRJbnNpZGVUaHJlZURvdHNGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY2xvc2VUaHJlZURvdHNNZW51RmlsdGVyKCk7XG4gICAgfVxuICAgIGlmICghaW5zaWRlVG9wRmlsdGVyUm93KSB7XG4gICAgICB0aGlzLmNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLnNldC1kZWZhdWx0LXByZXNldCcpKSB7XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2V0LWRlZmF1bHQtcHJlc2V0Jyk/LmNsYXNzTGlzdD8ucmVtb3ZlKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmZ1bGwtdGV4dC1ib3gnKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXInKSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZEtleXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuYWN0aXZlQ2VsbCA9IG51bGw7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkJvdW5kcyA9IHsgdG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IG51bGwsIHJpZ2h0OiBudWxsIH07XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRhdGEtZ3JpZC1ib2R5JykpIHtcbiAgICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG5cbiAgY2xvc2VGaWx0ZXJEcm9wZG93bnMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgY2xhc3NMaXN0OiBzdHJpbmdbXVxuICApOiBib29sZWFuIHtcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZWwuY2xhc3NMaXN0ICYmXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc01lbnVlSGlkZGVuID0gZmFsc2U7XG4gIG9wZW5UaHJlZURvdHNNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBjaGlsZDogYW55LCBrZWVwT3JpZ2luYWxQb3NpdGlvbiA9IGZhbHNlKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSB0cnVlO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBjaGlsZDtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW4tbWVudScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHggPiAoY29udGFpbmVyV2lkdGggLyAyKSkge1xuICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3ggLSAyNDB9cHhgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQhLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc01lbnVlSGlkZGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIENvbHVtbiBUaHJlZSBEb3RzIEFjdGlvbnNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgc29ydEFzYyhjb2w6IGFueSkge1xuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb3JkZXI6ICdhc2MnLFxuICAgICAgY29sdW1uOiBjb2xcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XG4gICAgaWYgKCFjb2wuaXNfc29ydGFibGUpIHJldHVybjtcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2Rlc2MnO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb3JkZXI6ICdkZXNjJyxcbiAgICAgIGNvbHVtbjogY29sXG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XG4gIH1cblxuICByZXNldFNvcnQoY29sOiBhbnkpIHtcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XG4gICAgY29uc3QgZXZlbnQgPSB7IGZpZWxkOiBudWxsLCBvcmRlcl9ieTogbnVsbCB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG5cbiAgYXN5bmMgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxuICAgIGNvbHVtbjogYW55LFxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXG4gICAgaXNOZXN0ZWRUYWJsZTogYW55ID0gZmFsc2UsXG4gICAgY29sdW1ucz86IGFueVxuICApIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgaWYgKGlzTmVzdGVkVGFibGUpIHtcbiAgICAgIHRoaXMucGluVW5waW5Db2x1bShjb2x1bW4sIHBpbm5lZCwgY29sdW1ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gMe+4j+KDoyBVcGRhdGUgcGlubmVkIHN0YXRlIHJlY3Vyc2l2ZWx5XG4gICAgY29uc3QgdXBkYXRlUGlubmVkID0gKGNvbHM6IGFueVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHVwZGF0ZVBpbm5lZChjb2wuY2hpbGRyZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdXBkYXRlUGlubmVkKHRoaXMuY29sdW1ucyk7XG5cbiAgICBjb25zdCBmbGF0dGVuQ29sdW1ucyA9IChjb2xzOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChmbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgYWxsQ29scyA9IGZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgcGlubmVkTGVmdCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgY2VudGVyID0gYWxsQ29scy5maWx0ZXIoYyA9PiAhYy5waW5uZWQpO1xuICAgIGNvbnN0IHBpbm5lZFJpZ2h0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgcmVvcmRlcmVkQ29sdW1ucyA9IFsuLi5waW5uZWRMZWZ0LCAuLi5jZW50ZXIsIC4uLnBpbm5lZFJpZ2h0XTtcbiAgICB0aGlzLmNvbW1vblNldmljZS5hc3NpZ25VbmlxdWVDb2x1bW5JbmRleGVzKHJlb3JkZXJlZENvbHVtbnMpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucztcblxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cblxuICBwcml2YXRlIGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgYXV0b3NpemVDb2x1bW4oY29sczogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcblxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG5cbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94ZXMpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGNvbnRhaW5lcldpZHRoIC09IDU7XG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpO1xuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1uc1RvUmVzaXplKSB7XG4gICAgICBpZiAoY29sICYmIGNvbC5maWVsZCkge1xuICAgICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0sIDEwMDApO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBnZXRHcm91cFdpZHRoKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBncm91cD8uY2hpbGRyZW5cbiAgICAgICAgPy5maWx0ZXIoKGNvbDogYW55KSA9PiBjb2w/LmlzX3Zpc2libGUpXG4gICAgICAgID8ucmVkdWNlKChhY2M6IG51bWJlciwgY29sOiBhbnkpID0+IGFjYyArIChjb2w/LndpZHRoIHx8IDApLCAwKSB8fCAwXG4gICAgKTtcbiAgfVxuXG4gIGF1dG9zaXplQWxsQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCksIDE1MCk7XG5cbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICBjb2wuaXNSb3dHcm91cGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZChjb2wuY2hpbGRyZW4sIGZpZWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBncm91cEJ5KGNvbDogYW55KSB7XG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgaWYgKCFjb2wpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAoY29sPy5pc19ncm91cGFibGUpIHtcbiAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xuICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKHRoaXMuY29sdW1ucywgY29sLmZpZWxkKTtcbiAgICB9XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0sIDEwKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFzeW5jIGdyb3VwRGF0YUFzeW5jKGRhdGE6IGFueVtdLCBncm91cEZpZWxkczogc3RyaW5nW10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JvdXBEYXRhKGRhdGEsIGdyb3VwRmllbGRzKTtcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG4gIH1cblxuXG5cblxuICBjaG9vc2VDb2x1bW5zKCkge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVzZXRDb2x1bW5zKCkge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAuLi5jb2wsXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgOiBbXSxcbiAgICB9KSk7XG4gICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sOiBhbnkpIHtcbiAgICBjb2wuZmlyc3RWYWx1ZSA9ICcnO1xuICAgIGNvbC5zZWNvbmRWYWx1ZSA9ICcnO1xuICAgIGNvbC5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcbiAgICBjb2wuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcbiAgICBjb2wubG9naWMgPSAnQU5EJztcbiAgICBjb2wuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgY29sLnNlbGVjdGVkT3B0aW9ucyA9IHt9O1xuICAgIGNvbC5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gIH1cblxuXG4gIGFwcGx5RmlsdGVyKGNvbDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zTGlzdC5wdXNoKGNvbCk7XG4gIH1cblxuICBzZWxlY3RlZFJvd3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuICBwcml2YXRlIGdldFJvd0lkKHJvdzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm93LmlkID8/IHJvdy5faWQ7XG4gIH1cblxuICB0b2dnbGVSb3dTZWxlY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xuICAgIH1cbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZGF0YTogYW55W10pOiB2b2lkIHtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XG4gICAgY29uc3QgYWxsSWRzID0gbGVhZlJvd3MubWFwKHIgPT4gdGhpcy5nZXRSb3dJZChyKSk7XG5cbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGFsbElkcy5ldmVyeShpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpO1xuICB9XG5cbiAgaXNBbGxTZWxlY3RlZChkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcbiAgICByZXR1cm4gbGVhZlJvd3MubGVuZ3RoID4gMCAmJiBsZWFmUm93cy5ldmVyeShyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSk7XG4gIH1cblxuXG4gIGlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSBsZWFmUm93cy5maWx0ZXIociA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyKSkpLmxlbmd0aDtcblxuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgbGVhZlJvd3MubGVuZ3RoO1xuICB9XG5cbiAgZ2V0QWxsTGVhZlJvd3MoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgbGVhZjogYW55W10gPSBbXTtcblxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xuICAgICAgaWYgKCFub2RlKSByZXR1cm47XG5cbiAgICAgIGlmIChub2RlLmlzR3JvdXApIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCh0cmF2ZXJzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWFmLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRhdGEuZm9yRWFjaCh0cmF2ZXJzZSk7XG4gICAgcmV0dXJuIGxlYWY7XG4gIH1cblxuICB0b2dnbGVTaWRlTWVudShjbGlja2VkT246ICdjb2xzJyB8ICdmaWx0cnMnKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSBjbGlja2VkT24pIHtcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSAmJlxuICAgICAgY2xpY2tlZE9uICE9IHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZVxuICAgICkge1xuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcbiAgICB9XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sOiBhbnkpIHtcbiAgICBjb25zdCBhbGxWaXNpYmxlID0gY29sLmNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcbiAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gKGNoaWxkLmlzX3Zpc2libGUgPSAhYWxsVmlzaWJsZSkpO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbnM6IGFueSkge1xuICAgIGlmIChjb2x1bW5zPy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGNvbHVtbnMuY2hpbGRyZW4uZXZlcnkoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5pc192aXNpYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sdW1ucz8uaXNfdmlzaWJsZTtcbiAgfVxuXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IG5vbkFsd2F5c1Zpc2libGUgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gIWNvbC5pc19hbHdheXNfdmlzaWJsZSk7XG4gICAgcmV0dXJuIG5vbkFsd2F5c1Zpc2libGUubGVuZ3RoID4gMCAmJiBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkOiBzdHJpbmcsIGNvbHM6IGFueVtdKTogYW55IHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGNvbDtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCwgY29sLmNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW46IGFueSwgaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZUNvbHVtbnMoKT8ubGVuZ3RoIDw9IDIgJiYgY29sdW1uLmlzX3Zpc2libGUgfHwgKGNvbHVtbj8uaXNfYWx3YXlzX3Zpc2libGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLmlzX3Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBjb25zdCBub25BbHdheXNWaXNpYmxlID0gZmxhdHRlbi5maWx0ZXIoY29sID0+ICFjb2wuaXNfYWx3YXlzX3Zpc2libGUpO1xuICAgICAgY29uc3QgYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUgPSBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBpZiAoYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUpIHtcbiAgICAgICAgbm9uQWx3YXlzVmlzaWJsZS5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgY29sLmlzX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWx3YXlzVmlzaWJsZUNvdW50ID0gZmxhdHRlbi5maWx0ZXIoY29sID0+IGNvbC5pc19hbHdheXNfdmlzaWJsZSkubGVuZ3RoO1xuICAgICAgICBjb25zdCBjb2x1bW5zTmVlZGVkID0gTWF0aC5tYXgoMCwgMiAtIGFsd2F5c1Zpc2libGVDb3VudCk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNOZWVkZWQgPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihjb2x1bW5zTmVlZGVkLCBub25BbHdheXNWaXNpYmxlLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgbm9uQWx3YXlzVmlzaWJsZVtpXS5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW4uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuXG4gIHZpc2libGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xuICAgIHJldHVybiB2aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGZsYXR0ZW5Db2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGhpcy5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KGNvbCk7XG4gICAgICB9XG4gICAgfSwgW10pO1xuICB9XG5cbiAgZmlsdGVyZWRDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGNvbHNcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyZWRDb2x1bW5zKGNvbC5jaGlsZHJlbik7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcbiAgICAgICAgICAgIGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSA/IGNvbCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0IGFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgZ2V0IGZpbHRlckFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgLy8gUmVjdXJzaXZlbHkgY29sbGVjdCBhbGwgZ3JvdXAgY29sdW1uc1xuICBwcml2YXRlIGdldEFsbEdyb3VwQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBncm91cHMucHVzaChjb2wpO1xuICAgICAgICBncm91cHMgPSBncm91cHMuY29uY2F0KHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbC5jaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9XG5cbiAgLy8gVG9nZ2xlIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGVcbiAgdG9nZ2xlQWxsQWNjb3JkaW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICB0aGlzLnNldEFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5maWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCcgPyBmYWxzZSA6IHRydWU7XG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGZvciAobGV0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XG4gICAgICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUoY29sLmNoaWxkcmVuLCBzdGF0ZSk7IC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWRcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuXG4gIGNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpIHtcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcbiAgfVxuXG4gIGdldCBoYXNSaWdodFBpbm5lZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1JpZ2h0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0xlZnRQaW5uZWRDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldEV4cGFuZGVkUm93Q291bnQodGhpcy5kYXRhU2V0KTtcbiAgfVxuXG5cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB0aGlzLmF1dG9TaXplQ29sdW1uc0J5UmF0aW8oKTtcbiAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB0aGlzLnZpZXdwb3J0Um93cyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcbiAgfVxuXG4gIGF1dG9TaXplQ29sdW1uc0J5UmF0aW8oc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBpZiAoIXZpc2libGVDb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XG5cbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcblxuICAgIGNvbnN0IHRvdGFsT2xkV2lkdGggPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoc3VtLCBjb2wpID0+IHN1bSArIChjb2wud2lkdGggfHwgMCksXG4gICAgICAwXG4gICAgKTtcblxuICAgIGlmICh0b3RhbE9sZFdpZHRoID09PSAwKSByZXR1cm47XG5cbiAgICBpZiAoc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCAmJiAoY29udGFpbmVyV2lkdGggPD0gdG90YWxPbGRXaWR0aCkpIHJldHVybjtcblxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgcmF0aW8gPSBjb2wud2lkdGggLyB0b3RhbE9sZFdpZHRoO1xuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoICogcmF0aW8pLCAxMDApO1xuXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVmcmVzaEhlYWRlcnMoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDApKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNWaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0FueUluVmlzaWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMuZm9vdGVyUm93SGVpZ2h0fSlgO1xuICB9XG5cbiAgZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aXNpYmxlUm93Q291bnQgPSAyNTtcbiAgc3RhcnRJbmRleCA9IDA7XG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwZWRSb3dzKFxuICAgIHJvd3M6IGFueVtdID0gW10sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHJlc3VsdDogYW55W10gPSBbXVxuICApOiBhbnlbXSB7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgcmVzdWx0LnB1c2goeyAuLi5yb3csIF9fZGVwdGg6IGxldmVsIH0pO1xuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyhyb3cuY2hpbGRyZW4sIGxldmVsICsgMSwgW10pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3NpZ25WaXJ0dWFsSW5kZXhlcyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcbiAgICBjb25zdCB3YWxrID0gKGl0ZW1zOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgaWYgKGl0ZW0/LmlzR3JvdXApIHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IGl0ZW07XG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICB3YWxrKGdyb3VwLmNoaWxkcmVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsoZGF0YSk7XG4gICAgLy8gY29uc29sZS5sb2coJ1RoaXMgZGF0YXNldDogJywgdGhpcy52aXNpYmxlUm93cylcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG5cbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcblxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcblxuICAgIGlmICh0aGlzLmRhdGFTZXQ/Lmxlbmd0aCA8PSAxNSkge1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xuICAgICAgdGhpcy5maXJzdEluZGV4ID0gMDtcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdG90YWwgPSBmbGF0RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCB0b3RhbCAtIHRoaXMudmlld3BvcnRSb3dzKTtcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBmaXJzdCk7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWwsIGZpcnN0ICsgdGhpcy52aWV3cG9ydFJvd3MpO1xuXG4gICAgdGhpcy5maXJzdEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5zdGFydEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgdHJhY2tCeVJlbmRlcmVkSW5kZXggPSAoaTogbnVtYmVyLCBfcm93OiBhbnkpID0+IHRoaXMucmVuZGVyU3RhcnQgKyBpO1xuXG4gIC8vIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcbiAgLy8gcHJpdmF0ZSBpc1N5bmNpbmdGcm9tRmFrZSA9IGZhbHNlO1xuICAvLyBwcml2YXRlIG1haW5TY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uaWQgfHwgaXRlbT8uX2lkIHx8IGl0ZW0/LnZhbHVlIHx8IGl0ZW0/Lm5hbWUgfHwgaW5kZXg7XG4gIH1cblxuICBmbGF0dGVuZWREYXRhOiBhbnlbXSA9IFtdO1xuXG4gIHVwZGF0ZUZsYXR0ZW5lZERhdGEoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZsYXR0ZW5lZERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZVkgPSAwO1xuICBsYXN0U2Nyb2xsVG9wID0gMDtcbiAgcGVuZGluZ0FuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgKDEwKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSkgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpO1xuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxpbmdEb3duID0gc2Nyb2xsVG9wID4gdGhpcy5sYXN0U2Nyb2xsVG9wO1xuICAgICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuXG4gICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XG4gICAgICAvLyBjb25zdCBkeW5hbWljT3ZlcnNjYW4gPSBzY3JvbGxpbmdEb3duID8gb3ZlcnNjYW4gOiBvdmVyc2NhbjtcblxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gdGhpcy5vdmVyc2Nhbik7XG4gICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcbiAgICAgICAgbmV3U3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgdGhpcy5vdmVyc2NhblxuICAgICAgKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5zdGFydEluZGV4ICE9PSBzdGFydCB8fCB0aGlzLnZpc2libGVSb3dzLmxlbmd0aCAhPT0gZW5kIC0gc3RhcnQpIHtcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNTY3JvbGxiYXJWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5tYWluU2Nyb2xsKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gZWwuc2Nyb2xsSGVpZ2h0ID4gZWwuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kKHJvdzogYW55KSB7XG4gICAgaWYgKHJvdy5kZXRhaWxzKSB7XG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy5pc0V4cGFuZCA9ICFyb3cuaXNFeHBhbmQ7XG4gICAgfVxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gIH1cblxuICB2aWV3cG9ydFJvd3MgPSAwO1xuICBmaXJzdEluZGV4ID0gMDtcbiAgcmVuZGVyU3RhcnQgPSAwO1xuXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZW5kaW5nU2Nyb2xsVG9wID0gMDtcblxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdmYWtlU2Nyb2xsJykgZmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdob3JpemludGFsRmFrZVNjcm9sbCcpXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbGFibGVCb2R5JylcbiAgY2VudGVyU2Nyb2xsYWJsZUJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDQ7IC8vIGJ1ZmZlciByb3dzIGFib3ZlIGFuZCBiZWxvd1xuXG4gIGNvbXB1dGVWaWV3cG9ydFJvd3MoKSB7XG4gICAgaWYgKHRoaXMuZmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwO1xuXG4gICAgICAvLyByb3dzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgICAgIGNvbnN0IHJvd3NJblZpZXdwb3J0ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xuXG4gICAgICAvLyBhZGQgYnVmZmVyIHJvd3MgKG92ZXJzY2FuKVxuICAgICAgdGhpcy52aWV3cG9ydFJvd3MgPSByb3dzSW5WaWV3cG9ydCArIHRoaXMub3ZlcnNjYW47XG5cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIH1cbiAgfVxuXG4gIG9uQ2VudGVyQm9keVNjcm9sbChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcikge1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25DZW50ZXJIZWFkZXJTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cblxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xuICBkcmFnU3RhcnRJbmRleDogYW55ID0gMDtcbiAgY2FuRW50ZXJUb1Jvd3NHcm91cGluZyA9IChkcmFnOiBDZGtEcmFnPGFueT4sIGRyb3A6IENka0Ryb3BMaXN0PGFueT4pID0+IHtcbiAgICBjb25zdCBkYXRhID0gZHJhZy5kYXRhO1xuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBkYXRhLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuaXNfdmlzaWJsZSAmJiBkYXRhLmlzX2dyb3VwYWJsZTtcbiAgfTtcblxuICBlbnRlclRvVG9wUm93R3JvdXBpbmcoZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcbiAgICAgICk7XG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxuICAgICAgKTtcblxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xuICAgICAgICB0YXJnZXRDb2x1bW4uaXNSb3dHcm91cGVkID0gISF0YXJnZXRDb2x1bW4uaXNfZ3JvdXBhYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Ecm9wTGlzdEVudGVyKFxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcbiAgICBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCdcbiAgKSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uOiBhbnkgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICk7XG5cbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xuXG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh0YXJnZXRDb2x1bW4/LmNoaWxkcmVuKVxuICAgICkge1xuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRDb2x1bW4uY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgIG1hdGNoaW5nQ2hpbGQucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0Q29sdW1uLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XG4gICAgICB0YXJnZXRDb2x1bW5bJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBleGl0ZWRGcm9tVGhlVG9wUm93KGRyb3BMaXN0OiBDZGtEcmFnRXhpdDxhbnk+KSB7XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICAgKTtcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICk7XG5cbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gZmFsc2U7XG4gIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcbiAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IGFsbENoaWxkcmVuRGlzYWJsZWQgPSBjb2wuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXG4gICAgICApO1xuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGFsbENoaWxkcmVuRGlzYWJsZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBjb2wuaXNfZ3JvdXBhYmxlID09PSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xuICBkcmFnU3RhcnRPbkdyb3VwKGNvbDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XG4gIH1cblxuICBvblNvcnRHcm91cCA9IChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNJbmRleCA9PT0gZXZlbnQuY3VycmVudEluZGV4KSByZXR1cm47XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2w6IGFueSkgPT5cbiAgICAgIGNvbD8uY2hpbGRyZW4/LnNvbWU/LigoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSkgPz8gY29sLmlzX3Zpc2libGVcbiAgICApO1xuXG4gICAgY29uc3QgcHJldkNvbCA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IGN1cnJDb2wgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdO1xuXG4gICAgY29uc3QgZ2V0RmllbGRzID0gKGNvbDogYW55KSA9PiBjb2w/LmNoaWxkcmVuPy5tYXAoKGM6IGFueSkgPT4gYy5maWVsZCkgPz8gW2NvbC5maWVsZF07XG4gICAgY29uc3QgYWxsRmllbGRzID0gWy4uLmdldEZpZWxkcyhwcmV2Q29sKSwgLi4uZ2V0RmllbGRzKGN1cnJDb2wpXTtcblxuICAgIGNvbnN0IGNlbGxzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxFbGVtZW50W10+KCk7XG4gICAgYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY2VsbHNNYXAuc2V0KGZpZWxkLCBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W10pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XG4gICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICBjZWxscy5mb3JFYWNoKGVsID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuXG4gICAgLy8gTW92ZSBjb2x1bW5zIGluIGFycmF5c1xuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gcHJldkNvbC5oZWFkZXIpO1xuICAgIGNvbnN0IGN1cnJJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gY3VyckNvbC5oZWFkZXIpO1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmNvbHVtbnMsIHByZXZJbmRleCwgY3VyckluZGV4KTtcblxuICAgIC8vIFNpbmdsZSBkZXRlY3RDaGFuZ2VzIGNhbGwgYmVmb3JlIGFuaW1hdGlvblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAvLyBCYXRjaCBhbmltYXRpb25cbiAgICAgIGNlbGxzTWFwLmZvckVhY2goY2VsbHMgPT4ge1xuICAgICAgICBjZWxscy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpISAtIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgaWYgKCFkZWx0YVgpIHJldHVybjtcblxuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICAgICAgY2VsbHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBlYXNlJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIG9uRHJvcEdyb3VwKCkge1xuICAgIGNvbnN0IGFsbENvbHMgPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgcGlubmVkTGVmdCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgY2VudGVyID0gYWxsQ29scy5maWx0ZXIoYyA9PiAhYy5waW5uZWQpO1xuICAgIGNvbnN0IHBpbm5lZFJpZ2h0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgcmVvcmRlcmVkQ29sdW1ucyA9IFsuLi5waW5uZWRMZWZ0LCAuLi5jZW50ZXIsIC4uLnBpbm5lZFJpZ2h0XTtcbiAgICB0aGlzLmNvbW1vblNldmljZS5hc3NpZ25VbmlxdWVDb2x1bW5JbmRleGVzKHJlb3JkZXJlZENvbHVtbnMpO1xuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XG4gICAgdGhpcy5yaWdodFBpbm5lZENvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zKTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWVwQ2xvbmVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgLi4uY29sLFxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXG4gICAgICAgIDogW10sXG4gICAgICAvLyBSZWN1cnNpdmVseSBkZWVwIGNsb25lIGNoaWxkcmVuIGlmIHByZXNlbnRcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG4gIH1cblxuXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyKSByZXR1cm47XG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xuICAgIGlmIChkcmFnZ2VkRGF0YT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShkcmFnZ2VkRGF0YS5jaGlsZHJlbikpIHtcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XG4gICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGlmIChncm91cD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMTAwMCk7XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgc2hvdWxkVGhlR3JvdXBIZWFkZXJTaG93KGdyb3VwOiBhbnkpIHtcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXA/LmlzX3Zpc2libGUgJiYgIWdyb3VwPy5pc1Jvd0dyb3VwZWQ7XG4gIH1cblxuICBvbkNoaWxkRHJvcGxpc3RTb3J0ZWQgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGlubmVkID1cbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcbiAgICAgICAgPyAnbGVmdCdcbiAgICAgICAgOiBzZWN0aW9uID09ICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJ1xuICAgICAgICAgID8gJ3JpZ2h0J1xuICAgICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxuICAgICk7XG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cbiAgICAgICAgKHBpbm5lZCA9PT0gXCJcIiAmJiAoIWNvbD8ucGlubmVkIHx8IGNvbD8ucGlubmVkID09PSBcIlwiKSkgfHwgY29sPy5waW5uZWQgPT09IHBpbm5lZDtcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcbiAgICBjb25zdCB2aXNpYmxlUHJldkluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxuICAgICk7XG4gICAgY29uc3QgdmlzaWJsZUN1cnJJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxuICAgICk7XG4gICAgY29uc3QgYWxsRmllbGRzID0gW3ByZXZpb3VzRmllbGQsIGN1cnJlbnRGaWVsZF07XG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXG4gICAgICAgIC4uLmFsbEZpZWxkcy5tYXAoKGZpZWxkKSA9PlxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXVxuICAgICAgICApXG4gICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXG4gICAgICAoY29sOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJHcm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcblxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uSW5kZXggPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXBJblNlY3Rpb24uaGVhZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICB0aGlzLmNvbHVtbnNbZ3JvdXBJbmRleF0/LmNoaWxkcmVuLFxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcbiAgICAgIHZpc2libGVDdXJySW5kZXhcbiAgICApO1xuXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgKHRoaXMgYXMgYW55KVtzZWN0aW9uXT8uW2dyb3VwSW5TZWN0aW9uSW5kZXhdLmNoaWxkcmVuLFxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICk7XG5cbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcbiAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xuICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcbiAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXG5cbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuXG4gICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc29sZS5ncm91cCgnR3JvdXA6ICcsIGdyb3VwKTtcbiAgfVxuXG5cbiAgb25DaGlsZERyb3BsaXN0RHJvcGVkKGNka0RyYWdEcm9wZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcbiAgICBjb25zdCBhbGxDb2xzID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHBpbm5lZExlZnQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xuICAgIGNvbnN0IGNlbnRlciA9IGFsbENvbHMuZmlsdGVyKGMgPT4gIWMucGlubmVkKTtcbiAgICBjb25zdCBwaW5uZWRSaWdodCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSBbLi4ucGlubmVkTGVmdCwgLi4uY2VudGVyLCAuLi5waW5uZWRSaWdodF07XG4gICAgdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyhyZW9yZGVyZWRDb2x1bW5zKTtcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMik7XG4gIH1cblxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICBsZXQgZGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcbiAgICBpZiAoIWdyb3VwRmllbGRzLmxlbmd0aCkgcmV0dXJuIGRhdGE7XG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcbiAgICBjb25zdCBncm91cGVkTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU2V0KSB7XG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xuICAgICAgbGV0IGdyb3VwS2V5OiBzdHJpbmc7XG4gICAgICBpZiAoY3VycmVudEZpZWxkID09PSAnaXNfZGVsZXRlZCcgfHwgY3VycmVudEZpZWxkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2lzX2RlbGV0ZWQnKSkge1xuICAgICAgICBpZiAoa2V5VmFsdWUgPT09IHRydWUgfHwga2V5VmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gJ0FyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXlWYWx1ZSA9PT0gZmFsc2UgfHwga2V5VmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICBncm91cEtleSA9ICdVbmFyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XG4gICAgICAgIGlmIChrZXlWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxuICAgICAgICAgICAgLm1hcChvYmogPT4gKG9iaj8uZGVwYXJ0bWVudF9uYW1lIHx8IG9iai5yb2xlTmFtZSB8fCBvYmo/LmZ1bGxfbmFtZSB8fCBvYmo/LnZhbHVlIHx8IG9iaj8ubmFtZSkgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoa2V5VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2Yga2V5VmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihEYXRlLnBhcnNlKGtleVZhbHVlKSkpKSB7XG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBrZXlWYWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBrZXlWYWx1ZSA6IG5ldyBEYXRlKGtleVZhbHVlKTtcbiAgICAgICAgZ3JvdXBLZXkgPSB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUoZGF0ZU9iaiwgdGhpcy5kYXRlRm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0eXBlb2Yga2V5VmFsdWUgPT09ICdvYmplY3QnICYmIGtleVZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGtleVZhbHVlKSkge1xuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlLnZhbHVlID8/XG4gICAgICAgICAga2V5VmFsdWUubmFtZSA/P1xuICAgICAgICAgIGtleVZhbHVlLmlkID8/XG4gICAgICAgICAga2V5VmFsdWUubGFiZWwgPz9cbiAgICAgICAgICBrZXlWYWx1ZVtPYmplY3Qua2V5cyhrZXlWYWx1ZSlbMF1dID8/XG4gICAgICAgICAgXCJfQmxhbmtcIjtcblxuICAgICAgICBpZiAodHlwZW9mIGdyb3VwS2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gXCJfQmxhbmtcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGdyb3VwS2V5KS50cmltKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZSA/IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGtleVZhbHVlKS50cmltKCkpIDogXCJfQmxhbmtcIjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XG4gICAgICBncm91cGVkTWFwLmdldChncm91cEtleSkhLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcbiAgICAgIGlzR3JvdXA6IHRydWUsXG4gICAgICBncm91cEZpZWxkOiBjdXJyZW50RmllbGQsXG4gICAgICBncm91cFZhbHVlLFxuICAgICAgY2hpbGRyZW46IHRoaXMuZ3JvdXBEYXRhKGdyb3VwSXRlbXMsIHJlc3RGaWVsZHMpLFxuICAgICAgaXNFeHBhbmQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHRvVGl0bGVDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyXG4gICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgPy5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgID8uam9pbignICcpO1xuICB9XG5cblxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIGlmICghZ3JvdXAuY2hpbGRyZW4gfHwgIWdyb3VwLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuIDA7XG5cbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gY291bnQgKyAoY2hpbGQuaXNHcm91cCA/IHRoaXMuY291bnRMZWFmUm93cyhjaGlsZCkgOiAxKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSAhdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW47XG4gIH1cblxuICB0b2dnbGVBY3Rpb25zKHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbikgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcbiAgdG9nZ2xlU3ViQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gKHRoaXMucHJlc2V0TmFtZSA9ICcnKSA6ICh0aGlzLnByZXNldE5hbWUgPSB0aGlzLnN0b3JlUHJlc2V0TmFtZSlcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVTdWJCdXR0b24pIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQWN0aW9uc0Ryb3Bkb3duKCkge1xuICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9ICF0aGlzLnNob3dBY3Rpb25zRHJvcERvd247XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuXG4gIGFzeW5jIGNoYW5nZVRhYmxlTGF5b3V0KGV2ZW50OiBFdmVudCwgbGF5b3V0VHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dChsYXlvdXRUeXBlKTtcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3ModGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxUb3ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XG4gICAgfVxuICAgIHRoaXMub25Gb250Q2hhbmdlKClcbiAgfVxuXG4gIHNldFRhYmxlTGF5b3V0KGxheW91dFR5cGU6IHN0cmluZykge1xuICAgIGlmICghbGF5b3V0VHlwZSkgcmV0dXJuO1xuICAgIGlmIChsYXlvdXRUeXBlID09PSAnc21hbGwnKSB7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDM2O1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0MDtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDEwO1xuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDEwO1xuXG4gICAgfSBlbHNlIGlmIChsYXlvdXRUeXBlID09PSAnbWVkaXVtJykge1xuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0NDtcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNDQ7XG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxNDtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDYwO1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA1MjtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE2O1xuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE2O1xuICAgIH1cbiAgICAvLyB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3RhcnRJbmRleERhdGEoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0O1xuICB9XG5cbiAgZ2V0IGVuZEluZGV4KCkge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVQYWdlcygpOiAobnVtYmVyIHwgc3RyaW5nKVtdIHtcbiAgICBjb25zdCBwYWdlczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIDw9IDcpIHtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzOyBpKyspIHtcbiAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFnZXMucHVzaCgxKTtcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA+IDMpIHtcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XG4gICAgICB9XG4gICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heCgyLCB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpO1xuICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMSwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKTtcblxuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA8IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMikge1xuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcbiAgICAgIH1cbiAgICAgIHBhZ2VzLnB1c2godGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWdlcztcbiAgfVxuXG5cbiAgc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XG4gIHRvZ2dsZUNvbHVtbkluRmlsdGVyRHJvcGRvd24oY29sOiBhbnkpIHtcblxuICB9XG5cbiAgcmVtb3ZlQ29sdW1uRnJvbUZpbHRlcihvcHRpb246IGFueSkge1xuXG4gIH1cblxuICBoYW5kbGVCYWNrc3BhY2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biAmJiB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9uc1t0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIobGFzdCk7XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVTZWFyY2hJbnB1dCcpIGZpbHRlck1lbnVlU2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVlVGV4dGNoSW5wdXQnKSBmaWx0ZXJNZW51ZVRleHRjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuXG4gIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbDogYW55KSB7XG4gICAgaWYgKGNvbC50eXBlID09ICdpbWFnZScgfHwgIWNvbD8udHlwZSB8fCAhY29sLmlzX3NlYXJjaF9hYmxlKSByZXR1cm47XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xuICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2wudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcbiAgICAgIHNhdmVkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCkpO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XG4gICAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA/IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gOiAoKGNvbC50eXBlID09ICdkYXRlJyB8fCBjb2wudHlwZSA9PSAndGltZScgfHwgY29sLnR5cGUgPT0gJ251bWJlcicpID8gJ2VxdWFsJyA6ICdjb250YWluJyk7XG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcbiAgICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA/IGNvbD8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24gOiAoKGNvbC50eXBlID09ICdkYXRlJyB8fCBjb2wudHlwZSA9PSAndGltZScgfHwgY29sLnR5cGUgPT0gJ251bWJlcicpID8gJ2VxdWFsJyA6ICdjb250YWluJyk7XG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlck1lbnVlVGV4dGNoSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlck1lbnVlVGV4dGNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc0ZpbHRlck9wZW4gPSBmYWxzZVxuICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcjogYW55O1xuICBzaG93RmlsdGVycyA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiBmYWxzZTtcbiAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sOiBhbnkpIHtcbiAgICBpZiAoY29sLnR5cGUgIT09ICdkcm9wZG93bicgJiYgY29sLnR5cGUgIT09ICdhcnJheScgfHwgIWNvbC5pc19zZWFyY2hfYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMub3BlbkZpbHRlcihjb2wpO1xuICB9XG5cbiAgb3BlbkZpbHRlcihjb2w6IGFueSkge1xuICAgIGlmICghY29sLmlzX3NlYXJjaF9hYmxlKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gY29sO1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbFxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA9ICcnO1xuICAgIHRoaXMuYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xuICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2wudHlwZSA9PSAnYXJyYXknKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5maWx0ZXIoXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPVxuICAgICAgICBjb2w/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24gPz9cbiAgICAgICAgKChjb2wudHlwZSA9PT0gJ251bWJlcicgfHwgY29sLnR5cGUgPT09ICd0aW1lJyB8fCBjb2wudHlwZSA9PT0gJ2RhdGUnKVxuICAgICAgICAgID8gJ2VxdWFsJ1xuICAgICAgICAgIDogJ2NvbnRhaW4nKTtcblxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmNvbmRpdGlvbiB8fCAnbm9uZSc7XG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9XG4gICAgICAgIGNvbD8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24gPz9cbiAgICAgICAgKChjb2wudHlwZSA9PT0gJ251bWJlcicgfHwgY29sLnR5cGUgPT09ICd0aW1lJyB8fCBjb2wudHlwZSA9PT0gJ2RhdGUnKVxuICAgICAgICAgID8gJ2VxdWFsJ1xuICAgICAgICAgIDogJ2NvbnRhaW4nKTtcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgZmlyc3RWYWx1ZTogYW55ID0gJyc7XG4gIGZpcnN0Q29uZGl0aW9uID0gJyc7XG4gIHNlY29uZFZhbHVlOiBhbnkgPSAnJztcbiAgc2Vjb25kQ29uZGl0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgY29uZGl0aW9uOiBzdHJpbmcgfCBudWxsID0gJyc7XG5cbiAgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xuICAgIHRoaXMuZmlyc3RWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY29uZGl0aW9uID0gJ25vbmUnO1xuICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcbiAgICB0aGlzLnNlY29uZFZhbHVlID0gJyc7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gIH1cblxuICB0b2dnbGVBbGxWYWx1c1NlbGVjdGlvbkluRHJvcGRvd25GaWx0ZXIoY29sdW1uOiBhbnkpIHtcblxuICB9XG5cblxuICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IGFueVtdID0gW11cbiAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbjogYW55KSB7XG4gICAgZGVidWdnZXJcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGlkKSkge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZGVsZXRlKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWUuZmlsdGVyKChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbikpXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJDaGFuZ2VzKCkge1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyEubGVuZ3RoID0gMDtcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gIH1cblxuICBhcHBseURyb3Bkb3duRmlsdGVyKCkge1xuICAgIGNvbnN0IGNvbHVtbnNzID0gdGhpcy5maW5kQ29sdW1uKHRoaXMuY29sdW1ucywgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlci5maWVsZCk7XG4gICAgaWYgKCFjb2x1bW5zcykgcmV0dXJuO1xuXG4gICAgaWYgKGNvbHVtbnNzLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sdW1uc3MudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyB8fCB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5zaXplID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnLCAndGltZSddLmluY2x1ZGVzKGNvbHVtbnNzLnR5cGUpKSB7XG4gICAgICBjb25zdCBpc0VtcHR5ID1cbiAgICAgICAgdGhpcy5maXJzdFZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9PT0gJyc7XG5cbiAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbG9zZUFsbEZpbHRlck1lbnVzKCk7XG4gICAgdGhpcy5jbG9zZUFsbEV4cGFuZGVkUm93cygpO1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xuICAgIGlmIChjb2x1bW4pIHtcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2x1bW4udHlwZSA9PSAnYXJyYXknKSB7XG4gICAgICAgIGNvbHVtbi5xdWVyeSA9IGNvbHVtbi5xdWVyeSB8fCB7fTtcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcyB8fCBbXTtcblxuICAgICAgICAvLyBSZW1vdmUgc3RhbGUgSURzIChub3QgcHJlc2VudCBpbiBTZXQpXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMuZmlsdGVyKFxuICAgICAgICAgIChpZDogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpICAgLy8gPC0tIHVzZSAuaGFzKClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBZGQgbmV3IG9uZXMgaWYgbWlzc2luZ1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICBpZiAoIWNvbHVtbi5xdWVyeS5faWRzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMucHVzaChpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXMoY29sdW1uLnR5cGUpKSB7XG4gICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IHRoaXMuZmlyc3RDb25kaXRpb24gfHwgJ2NvbnRhaW4nLFxuICAgICAgICAgIGZpcnN0X3ZhbHVlOiB0aGlzLmZpcnN0VmFsdWUgfHwgbnVsbCxcbiAgICAgICAgICBjb25kaXRpb246IHRoaXMuc2Vjb25kVmFsdWUgPyB0aGlzLmNvbmRpdGlvbiA6ICdub25lJyxcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5zZWNvbmRDb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgIHNlY29uZF92YWx1ZTogdGhpcy5zZWNvbmRWYWx1ZSB8fCBudWxsLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXG4gICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICBfaWRzOiBjb2x1bW4uX2lkc1xuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuICBwcml2YXRlIGZpbmRDb2x1bW4oY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBhbnkge1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSByZXR1cm4gY29sO1xuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uKGNvbC5jaGlsZHJlbiwgZmllbGQpO1xuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2x1bW46IGFueSkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWc/LnNvbWUoY29sID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbDogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBjaGVja2VkID0gKGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmNoZWNrZWQ7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubWFwKFxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KGNvbC5xdWVyeS5faWRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBbXTtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cblxuICBpc0FsbFNpZGVGaWx0ZXJPcHRpb25zU2VsZWN0ZWQoY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbD8ucXVlcnk/Ll9pZHMgfHwgIUFycmF5LmlzQXJyYXkoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xuICAgIGNvbnN0IG9wdGlvbklkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xuICAgIGlmICghY29sLnF1ZXJ5Ll9pZHMpIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XG4gICAgfVxuICAgIGNvbnN0IGlkeCA9IGNvbC5xdWVyeS5faWRzLmluZGV4T2Yob3B0aW9uSWQpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMuc3BsaWNlKGlkeCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHJlc2V0U2lkZUZpbHRlcihjb2w6IGFueSkge1xuICAgIGNvbnN0IHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gY29sLmZpZWxkKSB7XG4gICAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgICAgX2lkczogW10sXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZXNldENvbHVtblJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgcmVzZXRDb2x1bW5SZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuXG4gIGNsZWFyQWxsRmlsdGVycyhzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nID0gZmFsc2UpIHtcbiAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gW107XG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5xdWVyeSkge1xuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcbiAgICAgICAgICAgIF9pZHM6IFtdLFxuICAgICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzZXRBbGxSZWN1cnNpdmVseShjb2x1bW4uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBbXTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBldmVudCA9IHsgZXZlbnRUeXBlOiAncmVzZXQnLCBkYXRhOiB7IHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUgfSB9O1xuICAgIGlmICghc2hvdWxkVXBkYXRlQ29uZmlnTGlzdGluZykge1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH1cblxuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICAgIGlmICghc2hvdWxkVXBkYXRlQ29uZmlnTGlzdGluZykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgICAgfVxuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhcHBseVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmNsb3NlQWxsRXhwYW5kZWRSb3dzKCk7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgX2lkczogY29sdW1uLl9pZHMgfHwgW11cbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcbiAgICB9LCAyMDApO1xuICB9XG5cblxuICByZW1vdmVTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5jbG9zZUFsbEV4cGFuZGVkUm93cygpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShleGlzdGluZ0luZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBjb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDZWxscz8uc2l6ZSA+IDApIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG5cblxuICB0cmFja0J5RmllbGQoaW5kZXg6IG51bWJlciwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2w/LmZpZWxkO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZUZpbHRlcmVkQ29sdW1ucygpOiBhbnlbXSB7XG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgICAgY29sdW1ucz8uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzSW5GaWx0ZXJzQ29uZmlnID0gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgICAgICBpZiAoaXNJbkZpbHRlcnNDb25maWcpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbGxlY3RGaWx0ZXJlZCh0aGlzLmNvbHVtbnMpO1xuICB9XG5cblxuXG5cbiAgdG9nZ2xlT3BlbkZpbHRlcigpIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJzID0gIXRoaXMuc2hvd0ZpbHRlcnM7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuXG5cbiAgLy8gQ2VsbCBFZGl0aW5nIFdvcmsgc3RhcnQgaGVyZVxuXG4gIGVkaXRpbmdLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBhY3RpdmVDZWxsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZXRBY3RpdmVDZWxsKHJvdzogYW55LCBjb2x1bW46IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiQ2VsbCBMb2NhdGlvbjogXCIsIHJvdy5fX3ZpcnR1YWxJbmRleCArICcnICsgY29sdW1uPy5pbmRleCk7XG4gICAgdGhpcy5hY3RpdmVDZWxsID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNBY3RpdmVDZWxsKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNlbGwgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RleHRBcmVhZElucHV0JykgdGV4dEFyZWFkSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuICBtZW51UmVhZHkgPSBmYWxzZTtcbiAgZW5hYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNsaWNrZWRGcm9tRGV0YWlsc0JveCA9IGZhbHNlLCBjZWxsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAoKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpICYmICFjb2x1bW4/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5lZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xuICAgIGlmIChyb3c/Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybjtcbiAgICBpZiAoIWNvbHVtbj8uaXNfZWRpdGFibGUpIHJldHVybjtcbiAgICB0aGlzLm1lbnVSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sdW1uLmZpZWxkKTtcblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2x1bW4udHlwZSA9PSAnYXJyYXknKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChkcm9wZG93bk1lbnUpIHtcbiAgICAgICAgICBjb25zdCBtZW51SGVpZ2h0ID0gZHJvcGRvd25NZW51Lm9mZnNldEhlaWdodDtcblxuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPVxuICAgICAgICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGNvbnN0IG1lbnVSZWN0ID0gZHJvcGRvd25NZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGNvbnN0IHNwYWNlQmVsb3cgPSBjb250YWluZXJSZWN0LmJvdHRvbSAtIG1lbnVSZWN0LnRvcDtcbiAgICAgICAgICBjb25zdCBzcGFjZUFib3ZlID0gbWVudVJlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgLSAodGhpcy5zaG93RmlsdGVyUm93ICYmIHRoaXMuc2hvd0NvbHVtbnNHcm91cGluZyA/IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogMyA6ICh0aGlzLnNob3dGaWx0ZXJSb3cgfHwgdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nID8gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiAyIDogdGhpcy5oZWFkZXJSb3dIZWlnaHQpKSAtICh0aGlzLnNob3dSb3dzR3JvdXBpbmcgPyB0aGlzLnRvcEZpbHRlclJvd0hlaWdodCA6IDApO1xuXG4gICAgICAgICAgaWYgKHNwYWNlQmVsb3cgPj0gbWVudUhlaWdodCkge1xuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9ICcxMDAlJztcbiAgICAgICAgICB9IGVsc2UgaWYgKHNwYWNlQWJvdmUgPj0gbWVudUhlaWdodCkge1xuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9IGAtJHttZW51SGVpZ2h0fXB4YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9ICcxMDAlJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZW51UmVhZHkgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWNsaWNrZWRGcm9tRGV0YWlsc0JveCAmJiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKT8ubGVuZ3RoID4gNTApIHtcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2x1bW4sIHRoaXMuY29sdW1ucywgZmFsc2UpXG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFjZWxsQ29udGFpbmVyKSByZXR1cm47XG5cbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICBjb25zdCBkcm9wZG93bkJ1dHRvbiA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAnLmRyb3Bkb3duLWVkaXQtYnV0dG9uJ1xuICAgICAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBpZiAoZHJvcGRvd25CdXR0b24pIHtcbiAgICAgICAgICBkcm9wZG93bkJ1dHRvbi5mb2N1cygpO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9IHRoaXMuZ2V0RHJvcGRvd25DZWxsVGV4dChyb3csIGNvbHVtbik7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRyb3Bkb3duQnV0dG9uKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHNlbD8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgICBzZWw/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb2N1c2FibGUgPSBjZWxsQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICdpbnB1dDpub3QoW3R5cGU9XCJmaWxlXCJdKSwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXG4gICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgICBmb2N1c2FibGUuc3R5bGUuZm9udFNpemUgPSAnMTZweCc7XG4gICAgICAgIGZvY3VzYWJsZS5mb2N1cygpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8XG4gICAgICAgICAgZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudFxuICAgICAgICApIHtcbiAgICAgICAgICBmb2N1c2FibGUuc2VsZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgICAgIChmb2N1c2FibGUudHlwZSA9PT0gJ2RhdGUnIHx8IGZvY3VzYWJsZS50eXBlID09PSAndGltZScpICYmXG4gICAgICAgICAgdHlwZW9mIChmb2N1c2FibGUgYXMgYW55KS5zaG93UGlja2VyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICkge1xuICAgICAgICAgIChmb2N1c2FibGUgYXMgYW55KS5zaG93UGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzVmFsdWVWYWxpZChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5pc1ZhbHVlVmFsaWQocm93LCBjb2x1bW4sIGNvbnRyb2w/LmNvbnRyb2w/LnZhbHVlKVxuICB9XG5cbiAgZGlzYWJsZUVkaXQocm93OiBhbnksIGNvbHVtbjogYW55LCBjb250cm9sPzogYW55KSB7XG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICBpZiAoIXRoaXMuZWRpdGluZ0tleSkgcmV0dXJuXG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC5wcmlzdGluZSkge1xuICAgICAgdGhpcy5lZGl0aW5nS2V5ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi50eXBlICE9PSAnZHJvcGRvd24nICYmIGNvbHVtbi50eXBlICE9PSAnYXJyYXknICYmIGNvbnRyb2w/LmludmFsaWQpIHtcbiAgICAgIHRoaXMucm9sbEJhY2tDZWxsVmFsdWUocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2w/LmNvbnRyb2w/LnZhbHVlO1xuICAgIGNvbnN0IHZpc2libGVSb3cgPSB0aGlzLnZpc2libGVSb3dzLmZpbmQociA9PiAoci5pZCAmJiByLmlkID09PSByb3cuaWQpIHx8IChyLl9pZCAmJiByLl9pZCA9PT0gcm93Ll9pZCkpO1xuICAgIGlmICh2aXNpYmxlUm93KSB7XG4gICAgICB0aGlzLnNldE5lc3RlZEZsYXRWYWx1ZSh2aXNpYmxlUm93LCBjb2x1bW4/LmZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5pc1ZhbHVlVmFsaWQocm93LCBjb2x1bW4sIHZhbHVlKTtcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRoaXMucm9sbEJhY2tDZWxsVmFsdWUocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbHVtbiwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbj8uZmllbGQpKTtcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbj8uZmllbGQpO1xuICAgIGlmICgoY29sdW1uLnR5cGUgPT0gJ2VtYWlsJyAmJiAhdGhpcy52YWxpZGF0ZUVtYWlsKGN1cnJlbnQpKSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5maW5kKGl0ZW0gPT4gKChpdGVtLmlkICYmIGl0ZW0uaWQgPT0gcm93LmlkKSB8fCAoaXRlbS5pZCAmJiBpdGVtLmlkID09IHJvdy5faWQpKSk7XG4gICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbj8uZmllbGQpO1xuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbiwgb3JpZ2luYWwpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW1hZ2VDaGFuZ2UoZXZlbnQ6IEV2ZW50LCByb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmICghaW5wdXQuZmlsZXMgfHwgIWlucHV0LmZpbGVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzWzBdO1xuXG4gICAgaWYgKCFmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgdGhpcy5zZXROZXN0ZWRGbGF0VmFsdWUocm93LCBjb2wuZmllbGQsIHJlYWRlci5yZXN1bHQpO1xuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93LCBjb2wsIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKTtcbiAgICB9O1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICB9XG5cbiAgc2V0TmVzdGVkRmxhdFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuO1xuXG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKSE7XG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBpZiAoIWFjY1trZXldKSBhY2Nba2V5XSA9IHt9O1xuICAgICAgcmV0dXJuIGFjY1trZXldO1xuICAgIH0sIG9iaik7XG5cbiAgICBwYXJlbnRbbGFzdEtleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XG4gIHZhbGlkYXRlRW1haWwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVtYWlsUmVnZXgudGVzdCh2YWx1ZSk7XG4gIH1cbiAgYWxsb3dPbmx5TnVtYmVycyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XG4gICAgaWYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1Nykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBjaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55LCB2YWx1ZT86IGFueSkge1xuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ/LmZpbmQoXG4gICAgICAocjogYW55KSA9PiAoci5pZCAmJiByLmlkID09PSByb3cuaWQpIHx8IChyLl9pZCAmJiByLl9pZCA9PT0gcm93Ll9pZClcbiAgICApO1xuICAgIGlmICghb3JpZ2luYWxSb3cpIHJldHVybjtcbiAgICBjb25zdCBvcmlnaW5WYWx1ZSA9IHRoaXMuZGF0YVNldD8uZmluZCgocjogYW55KSA9PiAoci5pZCAmJiByLmlkID09PSByb3cuaWQpIHx8IChyLl9pZCAmJiByLl9pZCA9PT0gcm93Ll9pZCkpO1xuICAgIGNvbnN0IGNoYW5nZWRWYWx1ZSA9IG9yaWdpblZhbHVlLnZlcmlmaWVkID09IHZhbHVlO1xuICAgIGNvbnN0IHNlbmRPYmogPSB7XG4gICAgICBkYXRhOiB7IC4uLm9yaWdpblZhbHVlIH0sXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcbiAgICAgIHZhbHVlOiBjb2x1bW4udHlwZSAhPT0gJ2FycmF5JyA/IHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgIHZhbHVlczogY29sdW1uLnR5cGUgPT0gJ2FycmF5JyA/IHZhbHVlIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxuICB9XG5cblxuICBpc0VkaXRpbmcocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0tleSA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xuICB9XG5cbiAgZm9jdXNBZnRlclZhbHVlU2VsZWN0KHJvd0luZGV4OiBhbnksIGNvbEluZGV4OiBhbnksIHN1YmNvbEluZGV4OiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2V0QWN0aXZlQ2VsbChyb3dJbmRleCwgY29sSW5kZXgsIHN1YmNvbEluZGV4KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBzZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgY29sdW1uOiBhbnksIG9wdGlvbjogYW55LCBjYWxsZWRGcm9tSW5wdXQgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5pc1ZhbHVlVmFsaWQob2JqLCBjb2x1bW4sIG9wdGlvbik7XG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBWYWxpZGF0aW9uIEVycm9yIG9uIGZpZWxkICR7Y29sdW1ufWApXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSBjb2x1bW4uZmllbGQ7XG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiBhY2Nba2V5XSA/Pz0ge30sIG9iaik7XG5cbiAgICBpZiAocGFyZW50ICYmIGxhc3RLZXkpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbikpIHtcbiAgICAgICAgY29uc3QgbG9va3VwID0gY29sdW1uLmNvbHVtbl9kcm9wZG93bl92YWx1ZSB8fCBbXTtcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uLm1hcChzZWxlY3RlZEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSWQgPSB0eXBlb2Ygc2VsZWN0ZWRJdGVtID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBzZWxlY3RlZEl0ZW0uaWQgPz8gc2VsZWN0ZWRJdGVtLl9pZCA/PyBzZWxlY3RlZEl0ZW0udmFsdWUgPz8gc2VsZWN0ZWRJdGVtLm5hbWUgPz8gc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICA6IHNlbGVjdGVkSXRlbTtcblxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gbG9va3VwLmZpbmQoKG9wdDogYW55KSA9PlxuICAgICAgICAgICAgKG9wdC5faWQgJiYgb3B0Ll9pZCA9PT0gc2VsZWN0ZWRJZCkgfHwgKG9wdC5pZCAmJiBvcHQuaWQgPT09IHNlbGVjdGVkSWQpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBtYXRjaCA/IHsgLi4ubWF0Y2ggfSA6IHsgaWQ6IHNlbGVjdGVkSWQsIHZhbHVlOiBzZWxlY3RlZElkIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbG9va3VwID0gY29sdW1uLmNvbHVtbl9kcm9wZG93bl92YWx1ZSB8fCBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IG9wdGlvbi5pZCA/PyBvcHRpb24uX2lkID8/IG9wdGlvbi52YWx1ZSA/PyBvcHRpb24ubmFtZSA/PyBvcHRpb247XG4gICAgICAgIGNvbnN0IG1hdGNoID0gbG9va3VwLmZpbmQoKG9wdDogYW55KSA9PiAob3B0Ll9pZCAmJiBvcHQuX2lkID09PSBzZWxlY3RlZElkKSB8fCAob3B0LmlkICYmIG9wdC5pZCA9PT0gc2VsZWN0ZWRJZCkpO1xuXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IG1hdGNoID8geyAuLi5tYXRjaCB9IDogeyBpZDogc2VsZWN0ZWRJZCwgdmFsdWU6IHNlbGVjdGVkSWQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IHsgaWQ6IG9wdGlvbiwgdmFsdWU6IG9wdGlvbiB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9yaWdpbmFsRGF0YVNldCAmJiBBcnJheS5pc0FycmF5KHRoaXMub3JpZ2luYWxEYXRhU2V0KSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxSb3dJbmRleCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmRJbmRleChyID0+XG4gICAgICAgIChyPy5pZCAmJiByPy5pZCA9PT0gb2JqPy5pZCkgfHwgKHI/Ll9pZCAmJiByLl9pZCA9PT0gb2JqLl9pZClcbiAgICAgICk7XG4gICAgICBpZiAob3JpZ2luYWxSb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxQYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiBhY2Nba2V5XSA/Pz0ge30sIHRoaXMub3JpZ2luYWxEYXRhU2V0W29yaWdpbmFsUm93SW5kZXhdKTtcbiAgICAgICAgaWYgKG9yaWdpbmFsUGFyZW50ICYmIGxhc3RLZXkpIHtcbiAgICAgICAgICBvcmlnaW5hbFBhcmVudFtsYXN0S2V5XSA9IHBhcmVudFtsYXN0S2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGFTZXQgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTZXQpKSB7XG4gICAgICBjb25zdCBkYXRhc2V0Um93SW5kZXggPSB0aGlzLmRhdGFTZXQuZmluZEluZGV4KHIgPT5cbiAgICAgICAgKHIuaWQgJiYgci5pZCA9PT0gb2JqLmlkKSB8fCAoci5faWQgJiYgci5faWQgPT09IG9iai5faWQpXG4gICAgICApO1xuICAgICAgaWYgKGRhdGFzZXRSb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZGF0YXNldFBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgdGhpcy5kYXRhU2V0W2RhdGFzZXRSb3dJbmRleF0pO1xuICAgICAgICBpZiAoZGF0YXNldFBhcmVudCAmJiBsYXN0S2V5KSB7XG4gICAgICAgICAgZGF0YXNldFBhcmVudFtsYXN0S2V5XSA9IHBhcmVudFtsYXN0S2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjYWxsZWRGcm9tSW5wdXQpIHtcbiAgICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKG9iaiwgY29sdW1uLCBvcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJvbGxCYWNrQ2VsbFZhbHVlKHJvdzogYW55LCBjb2x1bW46IGFueSk6IHZvaWQge1xuICAgIGlmICghcm93IHx8ICFjb2x1bW4pIHJldHVybjtcbiAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmZpbmRPcmlnaW5hbFJvdyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgcm93LmlkID8/IHJvdy5faWQpO1xuICAgIGlmICghb3JpZ2luYWxSb3cpIHJldHVybjtcblxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4uZmllbGQpO1xuXG4gICAgY29uc3QgdmlzaWJsZVJvdyA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmZpbmRPcmlnaW5hbFJvdyh0aGlzLnZpc2libGVSb3dzLCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKHZpc2libGVSb3cpIHZpc2libGVSb3dbY29sdW1uLmZpZWxkXSA9IG9yaWdpbmFsVmFsdWU7XG5cbiAgICBjb25zdCBkYXRhUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMuZGF0YVNldCwgcm93LmlkID8/IHJvdy5faWQpO1xuICAgIGlmIChkYXRhUm93KSBkYXRhUm93W2NvbHVtbi5maWVsZF0gPSBvcmlnaW5hbFZhbHVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgYXJyYXlUZW1wTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gIHByaXZhdGUgYXJyYXlLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cm93LmlkIHx8IHJvdy5faWR9XyR7Y29sLmZpZWxkfWA7XG4gIH1cblxuICBnZXRBcnJheU9wdGlvbklkKG9wdGlvbjogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgb3B0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gb3B0aW9uLmlkID8/IG9wdGlvbi5faWQ7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb247XG4gIH1cblxuICBnZXRBcnJheU9wdGlvbkxhYmVsKG9wdGlvbjogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgb3B0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID8/IG9wdGlvbi5uYW1lID8/ICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG9wdGlvbik7XG4gIH1cblxuICBnZXRBcnJheVRlbXAocm93OiBhbnksIGNvbDogYW55KTogYW55W10ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuYXJyYXlLZXkocm93LCBjb2wpO1xuXG4gICAgaWYgKCF0aGlzLmFycmF5VGVtcE1hcC5oYXMoa2V5KSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpO1xuXG4gICAgICBjb25zdCBub3JtYWxpemVkID0gQXJyYXkuaXNBcnJheShjdXJyZW50KVxuICAgICAgICA/IGN1cnJlbnQubWFwKHYgPT4gdGhpcy5nZXRBcnJheU9wdGlvbklkKHYpKVxuICAgICAgICA6IFtdO1xuXG4gICAgICB0aGlzLmFycmF5VGVtcE1hcC5zZXQoa2V5LCBub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJheVRlbXBNYXAuZ2V0KGtleSkhO1xuICB9XG5cblxuICBpc0FycmF5U2VsZWN0ZWQocm93OiBhbnksIGNvbDogYW55LCBvcHRpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBcnJheU9wdGlvbklkKG9wdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXJyYXlUZW1wKHJvdywgY29sKS5pbmNsdWRlcyhpZCk7XG4gIH1cblxuICB0b2dnbGVBcnJheVRlbXAocm93OiBhbnksIGNvbDogYW55LCBvcHRpb246IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBcnJheU9wdGlvbklkKG9wdGlvbik7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0QXJyYXlUZW1wKHJvdywgY29sKTtcblxuICAgIHRoaXMuYXJyYXlUZW1wTWFwLnNldChcbiAgICAgIHRoaXMuYXJyYXlLZXkocm93LCBjb2wpLFxuICAgICAgbGlzdC5pbmNsdWRlcyhpZCkgPyBsaXN0LmZpbHRlcih2ID0+IHYgIT09IGlkKSA6IFsuLi5saXN0LCBpZF1cbiAgICApO1xuICB9XG5cbiAgY29tbWl0QXJyYXkocm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaWRzID0gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpO1xuICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIGlkcywgdHJ1ZSk7XG4gIH1cblxuXG4gIG9uQXJyYXlCbHVyKHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29tbWl0QXJyYXkocm93LCBjb2wpO1xuICB9XG5cblxuICBjbGVhbnVwQXJyYXkocm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hcnJheVRlbXBNYXAuZGVsZXRlKHRoaXMuYXJyYXlLZXkocm93LCBjb2wpKTtcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICB9XG5cblxuICBkaXNwbGF5QXJyYXlWYWx1ZXMoaWRzOiBhbnlbXSwgY29sPzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbCkgcmV0dXJuIGlkcy5qb2luKCcsICcpO1xuXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxhbnksIGFueT4oKTtcbiAgICAoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSB8fCBbXSkuZm9yRWFjaCgob3B0OiBhbnkpID0+IHtcbiAgICAgIG1hcC5zZXQodGhpcy5nZXRBcnJheU9wdGlvbklkKG9wdCksIG9wdCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWRzXG4gICAgICAubWFwKGlkID0+IG1hcC5nZXQoaWQpPy52YWx1ZSA/PyBtYXAuZ2V0KGlkKT8ubmFtZSA/PyBpZClcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgZGlzcGxheUFycmF5TGFiZWxzKHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgaWRzID0gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpO1xuXG4gICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICAgIChjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdKS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xuICAgICAgbWFwLnNldCh0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0KSwgb3B0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHNcbiAgICAgIC5tYXAoaWQgPT4gbWFwLmdldChpZCk/LnZhbHVlID8/IG1hcC5nZXQoaWQpPy5uYW1lID8/IGlkKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuXG5cblxuXG4gIGdvVG9QYWdlKHBhZ2U6IGFueSkge1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWc/LnBhZ2UgPT0gcGFnZSkgcmV0dXJuO1xuICAgIGlmIChwYWdlIDwgMSB8fCBwYWdlID4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpIHJldHVybjtcbiAgICB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9IHBhZ2U7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcbiAgICAgICAgcGFnZTogcGFnZSxcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcbiAgICB9O1xuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKCkge1xuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gMTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcbiAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXG4gICAgICB9O1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA3MDApO1xuICB9XG5cbiAgYWN0aW9uUHJlc2V0KGRhdGE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgZGF0YS5jb2x1bW5zID0gZGF0YT8uY29sdW1ucz8ubWFwKCh7IF9pZCwgZmlsdGVyVmFsdWUsIHNlYXJjaCwgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLCBxdWVyeSwgX190eXBlbmFtZSwgLi4ucmVzdCB9OiBhbnkpID0+IHJlc3QpO1xuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcblxuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YT8uZmlsdGVycz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XG4gICAgfVxuICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xuICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xuICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gIH1cblxuICBjdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSAnJztcbiAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlOiBhbnk7XG4gIHRlbXBfc3RhdGUgPSB7XG4gICAgaWQ6ICcnLFxuICAgIGlzX3RlbXA6IGZhbHNlXG4gIH1cbiAgYXN5bmMgc2VsZWN0RmlsdGVyKGRhdGE6IGFueSkge1xuICAgIHRoaXMudGVtcF9zdGF0ZSA9IHtcbiAgICAgIGlkOiBkYXRhLmlkLFxuICAgICAgaXNfdGVtcDogdHJ1ZVxuICAgIH1cbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XG4gICAgdGhpcy50YWJsZVZpZXcgPSB0aGlzLnRhYmxlVmlldy5tYXAoaXRlbSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGlzX3RlbXA6IGl0ZW0uaWQgPT0gZGF0YT8uaWRcbiAgICB9KSk7XG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgICAgdGhpcy5wcmVzZXROYW1lID0gZGF0YT8ubmFtZTtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZGF0YT8uYWN0aXZlRmlsdGVycyB8fCBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBkYXRhLmNvbHVtbnMgPSB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XG4gICAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcbiAgICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICB9XG4gICAgaWYgKGRhdGE/LmlzX2RlYWZ1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvblByZXNldChkYXRhLCAnc2V0UHJlc2V0JylcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3NlbGVjdCdcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIHNhdmVQcmVzZXQoY29udHJvbD86IGFueSkge1xuICAgIGlmIChjb250cm9sPy5pbnZhbGlkKSB7XG4gICAgICBjb250cm9sPy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRGaWx0ZXJIZWFkZXJzKHRoaXMuZmlsdGVyc0NvbmZpZywgdGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLnByZXNldEZpbHRlciA9IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyB0cnVlIDogdGhpcy5wcmVzZXRGaWx0ZXI7XG4gICAgbGV0IHNlbGVjdGVkRGF0YTogYW55ID0gdGhpcy50YWJsZVZpZXcuZmluZCgoZWxlKSA9PiBlbGUuaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XG4gICAgbGV0IGNvbmZpZyA9IHtcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiArKHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogKyh0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2gsXG4gICAgICBmaWx0ZXJOYW1lczogbmFtZXMsXG4gICAgICB0b3RhbENvdW50OiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzLFxuICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWRcblxuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gc2VsZWN0ZWREYXRhPy5uYW1lIDogdGhpcy5wcmVzZXROYW1lLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlcixcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXJcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyc0NvbmZpZz8ubWFwKCh7IF9fdHlwZW5hbWUsIHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgX190eXBlbmFtZTogX19pbm5lciwgLi4uY2xlYW5RdWVyeSB9ID0gcXVlcnkgfHwge307XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCBxdWVyeTogY2xlYW5RdWVyeSB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBbXSxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIGlkOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlPy5pZCxcbiAgICAgICAgbG9hZGluZ0NhbGw6IGNvbnRyb2wgPT0gJ21vdXNlVXAnID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCAhdGhpcy5pc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/ICd1cGRhdGVQcmVzZXQnIDogJ2NyZWF0ZVByZXNldCdcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gICAgfSwgNTAwKTtcbiAgfVxuXG5cbiAgZ2V0RmlsdGVySGVhZGVycyhmaWx0ZXJzOiBhbnlbXSwgY29sdW1uczogYW55W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hdGNoZWRIZWFkZXJzID0gZmlsdGVyc1xuICAgICAgLm1hcChmID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKGMgPT4gYy5maWVsZCA9PT0gZi5maWVsZCk7XG4gICAgICAgIHJldHVybiBjb2x1bW4gPyBjb2x1bW4uaGVhZGVyIDogbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGhlYWRlciA9PiAhIWhlYWRlcik7XG5cbiAgICByZXR1cm4gbWF0Y2hlZEhlYWRlcnMuam9pbignLCAnKTtcbiAgfVxuXG5cbiAgdG9nZ2xlUm93U2hhZGluZygpIHtcbiAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gJyNmMWYxZjEnIDogdW5kZWZpbmVkO1xuICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XG4gIH1cblxuICB0cmFja0J5VGFibGUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG4gIGFjdGl2ZVJvdzogYW55XG4gIGFjdGl2ZVJvd0NvbDogYW55O1xuICBnZXRDZWxsS2V5KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0Um93SWQocm93KX1fJHtjb2w/LmZpZWxkfWA7XG4gIH1cblxuICBleHBhbmRlZENlbGxzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB6Q291bnRlciA9IDIxO1xuXG4gIHNob3dEZXRhaWxzQm94ID0gZmFsc2U7XG5cbiAgdG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQoXG4gICAgcm93OiBhbnksXG4gICAgY29sOiBhbnksXG4gICAgY29sdW1uczogYW55W10sXG4gICAgZXhwYW5kV2hvbGVSb3cgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBleHBhbmRDZWxscyA9ICh0YXJnZXRSb3c6IGFueSkgPT4ge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHRleHQgPSB0YXJnZXRSb3dbYy5maWVsZF07XG5cbiAgICAgICAgaWYgKCh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPiA1MCkgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldFJvd0lkKHRhcmdldFJvdykgKyAnLScgKyBjLmZpZWxkO1xuICAgICAgICAgIHRoaXMuekNvdW50ZXIrKztcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cblxuICAgIGNvbnN0IGNvbGxlY3RLZXlzRm9yUm93ID0gKHRhcmdldFJvdzogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwIHx8IChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQ/Lmxlbmd0aCA+IDEpKSB7XG4gICAgICAgICAga2V5cy5wdXNoKHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBrZXlzO1xuICAgIH07XG5cbiAgICBpZiAoZXhwYW5kV2hvbGVSb3cpIHtcbiAgICAgIGxldCByb3dLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICByb3dLZXlzID0gY29sbGVjdEtleXNGb3JSb3cocm93KTtcbiAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJvd0tleXMucHVzaCguLi5jb2xsZWN0S2V5c0ZvclJvdyhjaGlsZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvd0tleXMgPSBjb2xsZWN0S2V5c0ZvclJvdyhyb3cpO1xuICAgICAgfVxuICAgICAgY29uc3QgYWxsRXhwYW5kZWQgPSByb3dLZXlzLmV2ZXJ5KGsgPT4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrKSk7XG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcbiAgICAgIGlmICghYWxsRXhwYW5kZWQpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmNoaWxkcmVuKSAmJiByb3cuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XG4gICAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gZXhwYW5kQ2VsbHMoY2hpbGQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBhbmRDZWxscyhyb3cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZDtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xuXG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWRDZWxscy5oYXMoa2V5KSkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy56Q291bnRlcisrO1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zaG93RGV0YWlsc0JveCA9IGZhbHNlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc09wZW5Ub1RvcChyb3cpXG4gICAgfSwgMCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNPcGVuVG9Ub3Aocm93OiBhbnkpIHtcbiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdGEtZ3JpZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghd3JhcHBlcikgcmV0dXJuIGZhbHNlO1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSAocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKTtcbiAgICAgIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIGlmICghYm94KSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBib3hSZWN0ID0gYm94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ0JvdHRvbSA9IGJveFJlY3QuYm90dG9tID4gd3JhcHBlclJlY3QuYm90dG9tO1xuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ1RvcCA9IGJveFJlY3QudG9wIDwgd3JhcHBlclJlY3QudG9wO1xuICAgICAgaWYgKGlzT3ZlcmZsb3dpbmdCb3R0b20gJiYgIWlzT3ZlcmZsb3dpbmdUb3ApIHtcbiAgICAgICAgY29uc3QgYm94SGVpZ2h0ID0gYm94Lm9mZnNldEhlaWdodCB8fCAwO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBib3hIZWlnaHQgKyA0O1xuICAgICAgICBib3guc3R5bGUudG9wID0gYCR7LW9mZnNldH1weGA7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJveC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgMTAwJWA7XG4gICAgICAgIGJveC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgwKWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSlcbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG5cblxuXG5cbiAgaXNFeHBhbmRlZChyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpO1xuICB9XG5cbiAgZ2V0WkluZGV4KHJvdzogYW55LCBjb2w6IGFueSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5nZXQodGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKSA/PyAyMTtcbiAgfVxuXG4gIGlzT3ZlcmZsb3dpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG5cblxuICAvLyBQaWN0dXJlIGNlbGwgTG9naWNcbiAgY29sb3JDb21iaW5hdGlvbiA9IFsncGljLWNvbWIxJywgJ3BpYy1jb21iMicsICdwaWMtY29tYjQnXTtcbiAgZ2V0RHluYW1pY0NsYXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gdGhpcy5jb2xvckNvbWJpbmF0aW9uWzBdO1xuICAgIGNvbnN0IGhhc2ggPSBBcnJheS5mcm9tKG5hbWUpLnJlZHVjZSgoYWNjLCBjaGFyKSA9PiBhY2MgKyBjaGFyLmNoYXJDb2RlQXQoMCksIDApO1xuICAgIGNvbnN0IGluZGV4ID0gaGFzaCAlIHRoaXMuY29sb3JDb21iaW5hdGlvbj8ubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25baW5kZXhdO1xuICB9XG5cbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnTkEnO1xuICAgIGNvbnN0IHBhcnRzID0gbmFtZS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cblxuICBhY3Rpb25IaWRlOiBib29sZWFuID0gdHJ1ZTtcbiAgeFBvcyA9IDA7XG4gIHlQb3MgPSAwO1xuICBpc1Zpc2libGUgPSBmYWxzZTtcbiAgZGVhdGlsc0xpc3Q6IGFueTtcbiAgb3BlbkV4cGVuZEluZGV4OiBhbnk7XG4gIHBvc2l0aW9uZWRZZXQgPSBmYWxzZTtcblxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgYW55LCBkZWF0aWxzTGlzdDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3JpZ2luYWxBY3Rpb25zPy5sZW5ndGggPT09IDAgJiYgdGhpcy52YWxpZGF0ZUljb24pIHtcbiAgICAgIHRoaXMub3JpZ2luYWxBY3Rpb25zID0gWy4uLnRoaXMuYWN0aW9uc107IC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbFxuICAgIH1cbiAgICB0aGlzLmFjdGlvbnMgPSB0aGlzLnZhbGlkYXRlSWNvblxuICAgICAgPyB0aGlzLmdldFZhbGlkQWN0aW9ucyhkZWF0aWxzTGlzdClcbiAgICAgIDogKGRlYXRpbHNMaXN0Py5hY3Rpb25zPy5sZW5ndGggPyBkZWF0aWxzTGlzdC5hY3Rpb25zIDogdGhpcy5hY3Rpb25zKTtcblxuICAgIGlmICghKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChkZWF0aWxzTGlzdC5fX3ZpcnR1YWxJbmRleCA9PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNsaWNrWCA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICBjb25zdCBjbGlja1kgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG5cbiAgICB0aGlzLnhQb3MgPSBjbGlja1g7XG4gICAgdGhpcy55UG9zID0gY2xpY2tZO1xuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnBvc2l0aW9uZWRZZXQgPSBmYWxzZTtcbiAgICB0aGlzLmRlYXRpbHNMaXN0ID0gZGVhdGlsc0xpc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKCFtZW51RWxlbWVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBtZW51SGVpZ2h0ID0gbWVudUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgY29uc3QgdGFibGVSZWN0ID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgdGFibGVUb3AgPSB0YWJsZVJlY3QudG9wO1xuICAgICAgY29uc3QgdGFibGVCb3R0b20gPSB0YWJsZVJlY3QuYm90dG9tO1xuICAgICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZVJlY3QuaGVpZ2h0O1xuXG4gICAgICBsZXQgeCA9IGNsaWNrWDtcbiAgICAgIGxldCB5ID0gY2xpY2tZO1xuICAgICAgaWYgKHggKyBtZW51V2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XG4gICAgICAgIHggPSB2aWV3cG9ydFdpZHRoIC0gbWVudVdpZHRoIC0gMTA7XG4gICAgICB9XG4gICAgICBpZiAoeSArIG1lbnVIZWlnaHQgPiB0YWJsZUJvdHRvbSkge1xuICAgICAgICB5ID0gY2xpY2tZIC0gbWVudUhlaWdodDtcbiAgICAgICAgaWYgKHkgPCB0YWJsZVRvcCkge1xuICAgICAgICAgIHkgPSB0YWJsZUJvdHRvbSAtIG1lbnVIZWlnaHQgLSAxMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeSA8IHRhYmxlVG9wKSB7XG4gICAgICAgIHkgPSB0YWJsZVRvcCArIDEwO1xuICAgICAgfVxuICAgICAgdGhpcy54UG9zID0geDtcbiAgICAgIHRoaXMueVBvcyA9IHk7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnBvc2l0aW9uZWRZZXQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZW5kT2JqID0ge1xuICAgICAgb2JqOiB0aGlzLmRlYXRpbHNMaXN0LFxuICAgICAgZXZlbnRUeXBlOiBhY3Rpb24sXG4gICAgfTtcbiAgICB0aGlzLnBvc2l0aW9uZWRZZXQgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKTtcbiAgfVxuXG5cbiAgb25WZXJpZnlDbGljayh0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZXh0ID0gdHlwZT8udG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBpZHNBcnJheSA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZS5wdXNoKHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNlbmRPYmogPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIG9iajogaWRzQXJyYXksXG4gICAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWUsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogdHlwZSxcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcbiAgfVxuXG4gIGdldENlbGxDbGFzc2VzKGNvbHVtbjogYW55LCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0Q2VsbENsYXNzZXMoY29sdW1uLCB2YWx1ZSk7XG4gIH1cblxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XG4gICAgaWYgKCFjb2x1bW4pIHJldHVyblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2x1bW4udHlwZSA9PSAnYXJyYXknKSB7XG4gICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcbiAgICAgIGNvbHVtbi5xdWVyeSA9IHtcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICBjb25kaXRpb246ICdub25lJyxcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnM7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIGNsZWFuRmlsdGVyZENvbHVtbnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcbiAgfVxuXG4gIGRvd25sb2FkQ3N2KHR5cGU6ICdjc3YnIHwgJ3hsc3gnKSB7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7XG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGhlYWRlclRleHRDb2xvcjogdGhpcy5oZWFkZXJUZXh0Q29sb3IsXG4gICAgICBib2R5VGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgIHpvb21TY2FsZTogMTI1LFxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVFeHBvcnQpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBkZCA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgbW0gPSBTdHJpbmcobm93LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgSEggPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBNTSA9IFN0cmluZyhub3cuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID1cbiAgICAgICAgYCR7dGhpcy50YWJsZVR5cGV9XyR7ZGR9LSR7bW19LSR7eXl5eX1fJHtISH0tJHtNTX1gO1xuXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xuXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YVNldCwgZm9ybWF0dGVkLCB0eXBlLCB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcywgY29uZmlnKTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxuICAgICAgICBmaWx0ZXJzOiBbXVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSAneGxzeCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuXG4gIH1cblxuICBvbkZvbnRDaGFuZ2UoKSB7XG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZTtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgIGhlYWRlclRleHRGb250c1NpemU6IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGRhdGE6IGNvbmZpZ1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcblxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIG9uR2xvYmFsU2VhcmNoKCkge1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHRhYmxlU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnc2VhcmNoJ1xuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XG4gICAgICB0aGlzLm9uR2xvYmFsU2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxuICAgIGNvbnN0IGZpbmREZWZhdWx0RmlsdGVyID0gdGhpcy50YWJsZVZpZXc/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZpbHRlcnMgPSAoZmlsdGVyczogYW55W10gfCB1bmRlZmluZWQpOiBhbnlbXSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGNsb25lZCA9IGZpbHRlcnMubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmID8/IHt9KSk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcbiAgICAgICAgaXRlbS5faWRzID0gaXRlbS5faWRzLnNsaWNlKCkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0ucXVlcnkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0ucXVlcnkuX2lkcykpIGl0ZW0ucXVlcnkuX2lkcyA9IFtdO1xuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgICAgcmV0dXJuICgnJyArIGEpLmxvY2FsZUNvbXBhcmUoJycgKyBiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICBjbG9uZWQuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcbiAgICAgICAgY29uc3QgZmIgPSAoYi5maWVsZCB8fCAnJykgKyAnfCcgKyAoYi50eXBlIHx8ICcnKTtcbiAgICAgICAgcmV0dXJuIGZhLmxvY2FsZUNvbXBhcmUoZmIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjbG9uZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZXBFcXVhbCA9IChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IGEgPT09IG51bGwgfHwgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8IGIgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBjb25zdCBub3JtYWxpemVkQSA9IG5vcm1hbGl6ZUZpbHRlcnMoZmluZERlZmF1bHRGaWx0ZXI/LmZpbHRlcnMpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGlzU2FtZSA9IGRlZXBFcXVhbChub3JtYWxpemVkQSwgbm9ybWFsaXplZEIpO1xuICAgIHJldHVybiBpc1NhbWU7XG4gIH1cblxuXG5cblxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vIFJvdyBTZWxlY3Rpb24gZnJvbSB0aGUgSW5kZXhpbmcgSW1wbGVtZW50ZWQgSGVyZVxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgcm93U2VsZWN0ZWRJbmRleGVzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XG4gIHJvd1NlbGVjdGlvblN0YXJ0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBhdXRvU2Nyb2xsSW50ZXJ2YWw6IGFueSA9IG51bGw7XG5cbiAgZ2V0IGZpcnN0U2VsZWN0ZWRSb3coKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XG4gIH1cblxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMpO1xuICB9XG5cblxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5hY3RpdmVDZWxsID0gbnVsbDtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpbmRleCk7XG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLm9uUm93TW91c2VVcCgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICB9XG5cbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMucm93U2VsZWN0aW5nIHx8IHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1heCh0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcbiAgICB9XG4gIH1cblxuICBvblJvd01vdXNlVXAoKSB7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBudWxsO1xuICB9XG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlZGdlU2l6ZSA9IDQwXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XG5cbiAgICBpZiAoZS5jbGllbnRZIDwgcmVjdC50b3AgKyBlZGdlU2l6ZSkge1xuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcbiAgICB9IGVsc2UgaWYgKGUuY2xpZW50WSA+IHJlY3QuYm90dG9tIC0gZWRnZVNpemUpIHtcbiAgICAgIHNjcm9sbEFtb3VudCA9IDE1MDtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsQW1vdW50ICE9PSAwKSB7XG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSAoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCArPSBzY3JvbGxBbW91bnQ7XG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVuZG9TdGFjazogYW55W11bXSA9IFtdO1xuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcblxuICBwcml2YXRlIGNsb25lRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cblxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xuICAgIHRoaXMudW5kb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgdGhpcy5jb3B5U2VydmljZS5jdXRXaXRoQW5pbWF0aW9uKHNlbGVjdGVkRGF0YSk7XG4gICAgY29uc3QgeyB1cGRhdGVkUm93cyB9ID0gdGhpcy5jb3B5U2VydmljZS5jdXRTZWxlY3RlZFNlbGVjdGVkRGF0YShcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUuYmluZCh0aGlzKVxuICAgICk7XG5cbiAgfVxuXG4gIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XG4gICAgcmV0dXJuIHRoaXMuY29weVNlcnZpY2UuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weShcbiAgICAgIHRoaXMuZGF0YVNldCxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLFxuICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2VTaXplS2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gIHByaXZhdGUgYnVpbGRQYWdlU2l6ZUtleU1hcCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplS2V5TWFwID0ge307XG5cbiAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5mb3JFYWNoKChzaXplLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID1cbiAgICAgICAgaW5kZXggPCA5XG4gICAgICAgICAgPyBTdHJpbmcoaW5kZXggKyAxKVxuICAgICAgICAgIDogaW5kZXggPT09IDlcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUtleU1hcFtrZXldID0gc2l6ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdwb3J0OiBhbnk7XG4gIHNjcm9sbFZpZXdwb3J0KGFtb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgKz0gYW1vdW50O1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFZpZXdwb3J0VG9Ub3AoKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgc2Nyb2xsVmlld3BvcnRUb0JvdHRvbSgpIHtcbiAgICB0aGlzLnZpZXdwb3J0ID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvcCA9IHRoaXMudmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgc2Nyb2xsVG9DZWxsKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4ID0gMCkge1xuICAgIC8vIDHvuI/ig6MgVmVydGljYWwgc2Nyb2xsXG4gICAgaWYgKHRoaXMubWFpblNjcm9sbCkge1xuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gcm93SW5kZXggKiB0aGlzLnJvd0hlaWdodDtcbiAgICB9XG5cbiAgICAvLyAy77iP4oOjIEhvcml6b250YWwgc2Nyb2xsXG4gICAgY29uc3QgbGVmdENvbHNXaWR0aCA9IHRoaXMuZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleCwgc3ViQ29sSW5kZXgpO1xuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnRDb2xzV2lkdGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleCA9IDApOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sSW5kZXg7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgb2Zmc2V0ICs9IGNvbC53aWR0aCA/PyAwO1xuICAgIH1cblxuICAgIC8vIEFkZCBzdWItY29sdW1uIHdpZHRoIGlmIGFueVxuICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjb2xJbmRleF07XG4gICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCAmJiBzdWJDb2xJbmRleCA+IDApIHtcbiAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgc3ViQ29sSW5kZXg7IHMrKykge1xuICAgICAgICBvZmZzZXQgKz0gY29sLmNoaWxkcmVuW3NdLndpZHRoID8/IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG5cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgaXNGb3JtRmllbGQgPVxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICB0YXJnZXQuaXNDb250ZW50RWRpdGFibGU7XG4gICAgaWYgKGlzRm9ybUZpZWxkIHx8IHRoaXMubG9hZGluZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgICBjb25zdCBzY3JvbGxBbW91bnQgPSB0aGlzLnZpZXdwb3J0Um93cyAqIHRoaXMucm93SGVpZ2h0O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY3RybEtleVByZXNzZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ3VwJywgc2hpZnQsIHRoaXMuZGF0YVNldCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ2Rvd24nLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgnbGVmdCcsIHNoaWZ0LCB0aGlzLmRhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgncmlnaHQnLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsQnlSb3dzKHNjcm9sbEFtb3VudCAvIHRoaXMucm93SGVpZ2h0LCAnZG93bicsIHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydChzY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbEJ5Um93cyhzY3JvbGxBbW91bnQgLyB0aGlzLnJvd0hlaWdodCwgJ3VwJywgc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFZpZXdwb3J0KC1zY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGxUb1N0YXJ0KHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwoMCwgMCk7IC8vIGZpcnN0IHJvdywgZmlyc3QgY29sdW1uXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5kYXRhU2V0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RDb2wgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbFRvRW5kKHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwobGFzdFJvdywgbGFzdENvbCk7IC8vIGxhc3Qgcm93LCBsYXN0IGNvbHVtblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9MYXN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub0ZpcnN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuYWx0S2V5KSAmJiBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub05leHRQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9QcmV2aW91c1BhZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBNSU5fSEVJR0hUID0gMjg7XG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgKz0gMTtcbiAgICAgIHRoaXMucm93SGVpZ2h0ICs9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMuaGVhZGVyUm93SGVpZ2h0IC0gMSk7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMucm93SGVpZ2h0IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICh0aGlzLmdsb2JhbFNlYXJjaElucHV0KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdsb2JhbFNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlucHV0RWwuZm9jdXMoKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxPdXRsaW5lID0gaW5wdXRFbC5zdHlsZS5vdXRsaW5lO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEJveFNoYWRvdyA9IGlucHV0RWwuc3R5bGUuYm94U2hhZG93O1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdvdXRsaW5lJywgJzJweCBzb2xpZCAjNGY5Y2ZmJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93JywgJzAgMCA4cHggMnB4ICM0ZjljZmYnLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ291dGxpbmUnLCBvcmlnaW5hbE91dGxpbmUgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93Jywgb3JpZ2luYWxCb3hTaGFkb3cgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAncicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXk/LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYycpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmRvd25sb2FkQ3N2KCdjc3YnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdlJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZG93bmxvYWRDc3YoJ3hsc3gnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9ICF0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2gnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICF0aGlzLnJvd1NoYWRpbmdFbmFibGVkO1xuICAgICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdzJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ3NtYWxsJylcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KCdtZWRpdW0nKVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ2xhcmdlJylcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuXG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBjb25zdCBuZXdMaW1pdCA9IHRoaXMucGFnZVNpemVLZXlNYXBbZXZlbnQua2V5XTtcbiAgICAgIGlmIChuZXdMaW1pdCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICE9PSBuZXdMaW1pdCkge1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCA9IG5ld0xpbWl0O1xuICAgICAgICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiZcbiAgICAgIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYydcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggJiZcbiAgICAgICAgIXRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemVcbiAgICAgICkgcmV0dXJuO1xuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XG4gICAgICB0aGlzLmNvcHlTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChzZWxlY3RlZERhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4Jykge1xuICAgICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5lbmFibGVDdXQpIHJldHVyblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZVxuICAgICAgKSByZXR1cm47XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTtcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3onKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMudW5kbygpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMucmVkbygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdEFsbENlbGxzKHRoaXMub3JpZ2luYWxEYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcztcbiAgICBpZiAoY3VycmVudFBhZ2UgPj0gdG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgKyAxKTtcbiAgfVxuXG4gIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZTtcbiAgICBpZiAoY3VycmVudFBhZ2UgPD0gMSkgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgLSAxKTtcbiAgfVxuXG4gIGdvVG9GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxKSByZXR1cm47XG4gICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgfVxuXG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzO1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gbGFzdFBhZ2UpIHJldHVybjtcbiAgICB0aGlzLmdvVG9QYWdlKGxhc3RQYWdlKTtcbiAgfVxuXG4gIHVuZG8oKSB7XG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMudW5kb1N0YWNrLnBvcCgpITtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVkbygpIHtcbiAgICBpZiAodGhpcy5yZWRvU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5jbG9uZURhdGEobmV4dFN0YXRlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cGFzdGUnLCBbJyRldmVudCddKVxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5lbmFibGVDdXQpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnIHx8IHRhcmdldD8uZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5hY3RpdmVDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcbiAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdGhlIGNvcGllZCBkYXRhPydcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyQ29uZmlybWVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8uWzBdO1xuICAgIGlmICghc3RhcnRDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcbiAgICAgIHRleHQsXG4gICAgICB0aGlzLnZpc2libGVSb3dzLFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgc3RhcnRDZWxsLnJvd0luZGV4LFxuICAgICAgc3RhcnRDZWxsLmNvbEluZGV4LFxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XG4gICAgKTtcblxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHtcbiAgICAgICAgZGF0YTogdXBkYXRlZFJvd3M/LnVwZGF0ZVJvd3MsXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgICAgY29sdW1uOiB1cGRhdGVkUm93cz8uY3VycmVudENvbHVtc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xuICAgICAgb3ZlcmxheS5pbm5lckhUTUwgPSBgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW92ZXJsYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1tZXNzYWdlXCI+JHttZXNzYWdlfTwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29uZmlybVwiPkNvbmZpcm08L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XG4gICAgICBjb25zdCBjb25maXJtQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNvbmZpcm0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNhbmNlbEJ0biA9IG92ZXJsYXkucXVlcnlTZWxlY3RvcignLmJ0bi1jYW5jZWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICB9O1xuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGNhbmNlbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNEYXRlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcbiAgfVxuXG4gIGV4cGFuZGVkZWREZXRhaWxSb3dzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgc3RyaW5nIHwgbnVtYmVyID0gJyc7XG5cbiAgdG9nZ2xlRGV0YWlsUm93RXhwYW5kKHJvdzogYW55KSB7XG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xuICAgICAgcm93LmRldGFpbC5jb2x1bW5zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtLndpZHRoID0gaXRlbT8ud2lkdGggfHwgKHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAvIHJvdy5kZXRhaWwuY29sdW1ucz8ubGVuZ3RoKVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByZXZpZXdOZXN0ZWRDb2xzID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHJvdy5kZXRhaWwuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyBhcyAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgICAgY29uc3QgaW5kZXggPSBleHBhbmRlZC5pbmRleE9mKGlkKTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZXhwYW5kZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cGFuZGVkLnB1c2goaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IGlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5yaWdodFBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMzAwKVxuICB9XG5cbiAgaXNEZXRhaWxzRXhwYW5kZWQocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBpZCA9IHJvdz8uaWQgfHwgcm93Py5faWQ7XG5cbiAgICBpZiAodGhpcy5rZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpICYmXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBvcHRpb24/LnZhbHVlID8/IG9wdGlvbjtcbiAgfVxuXG5cbiAgb3BlbkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmIChldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfVxuICAgIHRoaXMub3BlbkluZGV4ID0gdGhpcy5vcGVuSW5kZXggPT09IGkgPyBudWxsIDogaTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlJylcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZ2V0IGhhc1ZlcnRpY2FsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xuICB9XG5cblxuICBnZXRUb3RhbEFtb3VudChjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uPy5pc19hbW91bnQpIHJldHVybjtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbHVtbi5maWVsZF0gfHwgMDtcbiAgICAgIHJldHVybiBzdW0gKyB2YWx1ZTtcbiAgICB9LCAwKTtcbiAgICBpZiAoIXRvdGFsKSByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gMC4wMGBcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcbiAgfVxuXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkocm93LmRldGFpbC5jb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG4gIGN1cnJlbnRTdWJTb3J0Q29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudFNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG5cbiAgc29ydE5lc3RlZENvbChjb2w6IGFueSwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBkYXRhU2V0ID0gcm93Py5kZXRhaWw/LnJlc3VsdDtcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbiAgICB9XG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZGF0YVNldF0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XG4gICAgICBsZXQgYlZhbCA9IGJbY29sLmZpZWxkXTtcbiAgICAgIGFWYWwgPSBhVmFsID09IG51bGwgPyAnJyA6IGFWYWw7XG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xuXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xuICAgICAgICBiVmFsID0gbmV3IERhdGUoYlZhbCkuZ2V0VGltZSgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhTnVtID0gcGFyc2VGbG9hdChhVmFsKTtcbiAgICAgIGNvbnN0IGJOdW0gPSBwYXJzZUZsb2F0KGJWYWwpO1xuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xuXG4gICAgICBpZiAoYm90aE51bWJlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbXAgPSBTdHJpbmcoYVZhbCkubG9jYWxlQ29tcGFyZShTdHJpbmcoYlZhbCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByb3cuZGV0YWlsLnJlc3VsdCA9IHNvcnRlZDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgZ2V0Q29sdW1uV2lkdGhQeChyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb2wud2lkdGgpIHJldHVybiBjb2wud2lkdGggKyAncHgnO1xuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XG4gICAgcmV0dXJuIHBpeGVscyArICdweCc7XG4gIH1cblxuICBmdWxsc2NyZWVuSW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHBpblVucGluQ29sdW0oY29sOiBhbnksIHZhbHVlOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCwgY29sdW1uczogYW55W10pIHtcbiAgICBjb2wucGlubmVkID0gdmFsdWU7XG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgbWlkZGxlID0gY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5waW5uZWQgfHwgYy5waW5uZWQgPT09IG51bGwpO1xuICAgIGNvbnN0IHJpZ2h0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xuICAgIGNvbHVtbnMucHVzaCguLi5sZWZ0LCAuLi5taWRkbGUsIC4uLnJpZ2h0KTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gIH1cblxuICBnZXRMZWZ0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKS5sZW5ndGg7XG4gIH1cblxuICBnZXRTdGlja3lMZWZ0KGNvbHVtbnM6IGFueVtdLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBwcmV2Q29sID0gY29sdW1uc1tpXTtcbiAgICAgIGlmIChwcmV2Q29sLnBpbm5lZCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcbiAgfVxuXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xuICBvbk5lc3RlZENvbFNvcnQoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55W10+LCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQgfHwgIWNvbHVtbnMpIHJldHVybjtcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgY29sQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgY29sQ2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkgPz8gbmV3TGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlU2VsZWN0aW9uKHNlbGVjdGVkSWRzOiBzdHJpbmdbXSwgdGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRhYmxlVHlwZSkgcmV0dXJuO1xuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gc3RvcmVkLnNlbGVjdGVkUm93cyB8fCB7fTtcbiAgICBhbGxTZWxlY3RlZFt0YWJsZVR5cGVdID0gc2VsZWN0ZWRJZHM7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0YWJsZVR5cGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlc3RvcmVTZWxlY3Rpb24odGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XG4gICAgY29uc3QgaWRzID0gc3RvcmVkLnNlbGVjdGVkUm93cz8uW3RhYmxlVHlwZV0gfHwgW107XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KGlkcyk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xuICB9XG5cbiAgaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGFpbmVyUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xuXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IGNvbDtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS1ncmlkLW1haW4tY29udGFpbmVyJyk7XG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xuICB9XG5cbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclJlY3QpIHJldHVybjtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xuICAgIGNvbnN0IGlzT3V0c2lkZSA9XG4gICAgICB4IDwgdGhpcy5jb250YWluZXJSZWN0LmxlZnQgfHxcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcbiAgICAgIHkgPCB0aGlzLmNvbnRhaW5lclJlY3QudG9wIHx8XG4gICAgICB5ID4gdGhpcy5jb250YWluZXJSZWN0LmJvdHRvbTtcbiAgfVxuXG4gIG9uRHJhZ0VuZGVkKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xuICAgICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcbiAgICB9LCAxMDApO1xuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XG4gIH1cblxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgPT09IDBcbiAgICAgID8gMFxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcbiAgfVxuXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlVmlldz8uc29tZSgoeCkgPT4geC5pc19kZWZhdWx0IHx8IHguaXNfdGVtcCk7XG4gIH1cblxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0Q29sdW1ucyA9IGN1cnJQcmVzZXQ/LmNvbHVtbnM/Lm1hcCgoY29sOiB7IGZpZWxkOiBhbnk7IHdpZHRoOiBhbnk7IHBpbm5lZDogYW55OyB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50UHJlc2V0Q29sdW1ucyk7XG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24sXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KVxuICAgICAgJiYgKHRoaXMuYm9keVRleHRGb250c1NpemUgPT0gY3VyclByZXNldC5jb25maWcuYm9keVRleHRGb250c1NpemUpICYmXG4gICAgICAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSlcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgPT0gdGhpcy5zaG93VmVydGljYWxCb3JkZXJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5mb250RmFpbWx5ID09IHRoaXMuZm9udEZhaW1seVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQgPT0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0XG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuYm9keVRleHRGb250c1NpemUgPT0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnJvd1NoYWRpbmdFbmFibGVkID09IHRoaXMucm93U2hhZGluZ0VuYWJsZWQpO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhidXR0b246IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSBidXR0b24/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgaWYgKHRleHQgPT0gJ2FjdGl2ZSBkYXRhJyB8fCB0ZXh0ID09ICdhY3RpdmUnIHx8IHRleHQgPT0gJ2RhdGEgYWN0aXZlJyB8fCB0ZXh0ID09ICd1bmFyY2hpdmVkIGRhdGEnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSBkYXRhJykgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgIG9iajogYnV0dG9uXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cblxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWN0aXZlVGFicycsIEpTT04uc3RyaW5naWZ5KGFsbFRhYnMpKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICAgIG9iajogdGFiXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxuICAgIH07XG5cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb2xvcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2VkUm93QmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9XG4gICAgaWYgKCFiYXNlQ29sb3IpIHtcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xuICAgICAgfSBlbHNlIGlmIChzZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmJvZHlCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlQ29sb3I7XG4gIH1cblxuICBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBlbCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIGdldFNhZmVDb21tZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcbiAgfVxuICBjbGVhbkVkaXRvckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLmh0bWxTYW5hdGl6ZXJTZXJ2aWNlLmNsZWFuRWRpdG9yQ29udGVudChjb250ZW50KTtcbiAgfVxuXG4gIGdldEV4dGVudGlvbih1cmw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh1cmwgIT09ICctJykge1xuICAgICAgaWYgKHR5cGVvZiAodXJsKSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCcuJykucG9wKClcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XG4gICAgICAgIHJldHVybiB1cmxbMF0uc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIHJldHVybiAnLSdcbiAgICB9XG4gICAgZWxzZSByZXR1cm4gJy0nXG4gIH1cblxuICBkb3dubG9hZEF0dGNobWVudCh1cmw6IGFueSwgZmlsZT86IGFueSkge1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuXG4gIH1cbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XG4gIG9wZW5GdWxsSW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgIHRoaXMuZnVsbEltYWdlU3JjID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3R5bGVzVG9JbWFnZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcbiAgICBpbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnYm9yZGVyLXJhZGl1cycsICcxNnB4Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ21hcmdpbicsICc4cHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGltZywgJ2NsaWNrJywgKCkgPT4gdGhpcy5vbkltYWdlQ2xpY2soKGltZyBhcyBIVE1MSW1hZ2VFbGVtZW50KS5zcmMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uSW1hZ2VDbGljayhzcmM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgZnVsbHNjcmVlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcbiAgICBhdHRhY2htZW50c19jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hdHRhY2htZW50cy5zdmcnLFxuICAgIGNvbW1lbnRfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY29tbWVudHMuc3ZnJyxcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPVxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICdkYXRhLWdyaWQvaWNvbnMvJyArXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXG4gICAgICAgICcuc3ZnJ1xuICAgICAgKTtcbiAgICB9LFxuICB9O1xuXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSAhdGhpcy5pc0Z1bGxTY3JlZW47XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNlbGxFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cChyb3c6IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgIGlmIChub2RlLmlzR3JvdXApIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gdHJhdmVyc2UoY2hpbGQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdHJhdmVyc2Uocm93KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2VsZWN0R3JvdXBSb3coZTogRXZlbnQsIHJvdzogYW55KSB7XG4gICAgY29uc3QgY2hlY2tib3ggPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGNoZWNrYm94LmNoZWNrZWQ7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgb2JqOiBpZHNcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93OiBhbnkpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXJvdy5pc0dyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGxldCBjaGVja2VkQ291bnQgPSAwO1xuICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkgY2hlY2tlZENvdW50Kys7XG4gICAgfSk7XG4gICAgaWYgKGNoZWNrZWRDb3VudCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjaGVja2VkQ291bnQgPT09IGxlYWZSb3dzLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENlbGxUaXRsZShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcgfCBib29sZWFuIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKCF0aGlzLmlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkpIHtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX2Ftb3VudCkge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGAwLjAwYFxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeS50cmFuc2Zvcm0odmFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWw/LnZhbHVlID09PSBudWxsIHx8IHZhbD8udmFsdWUgPT09ICcnKSByZXR1cm4gJy0nO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICB2YWw/LnZhbHVlID8/XG4gICAgICAgIHZhbD8ubmFtZSA/P1xuICAgICAgICB2YWwgPz9cbiAgICAgICAgKGNvbC5pc19hbW91bnQgPyAnMCcgOiAnLScpXG4gICAgICApICsgJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3QgPSB2YWw/LlswXTtcblxuICAgIHJldHVybiAoXG4gICAgICBmaXJzdD8uZGVwYXJ0bWVudF9uYW1lID8/XG4gICAgICBmaXJzdD8ucm9sZU5hbWUgPz9cbiAgICAgIGZpcnN0Py5mdWxsX25hbWUgPz9cbiAgICAgIGZpcnN0Py52YWx1ZSA/P1xuICAgICAgZmlyc3Q/Lm5hbWUgPz9cbiAgICAgICctJ1xuICAgICk7XG4gIH1cblxuXG4gIGZpbmlzaEVkaXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdjZWxsIGVkaXRlZGRkZGRkZGRkZGRkZGRkOiAnLCBldmVudClcbiAgfVxuXG5cbiAgZ2V0RHluYW1pY1JpZ2h0KGNvbDogYW55LCBzZWN0aW9uOiBzdHJpbmcsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoc2VjdGlvbiA9PSAncmlnaHQnICYmIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucz8ubGVuZ3RoID09IDEgJiYgY29sLndpZHRoIDwgMjAwKSB7XG4gICAgICByZXR1cm4gMTAwO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2VjdGlvbiA9PSAncHJldmlld0NlbnRlckNvbHVtbnMnICYmIGNvbEluZGV4ID09ICh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zPy5sZW5ndGggLSAxKSAmJiBjb2wud2lkdGggPCAyMDApIHtcbiAgICAgIHJldHVybiAyMDBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbC53aWR0aCAtIDQ1O1xuICAgIH1cbiAgfVxuXG4gIGJsdXJJbnB1dChldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlucHV0Py5ibHVyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdywgY29sKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZWRpdGluZ0tleSA9ICcnO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0VmFsaWRBY3Rpb25zKGVsZW1lbnQ6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25WYWxpZGF0b3IuZ2V0VmFsaWRBY3Rpb25zKFxuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMsXG4gICAgICBlbGVtZW50LFxuICAgICAge1xuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgICBzaG93VW5MaW5rOiB0aGlzLnNob3dVbkxpbmssXG4gICAgICAgIHBhY2thZ2VEYXRhOiB0aGlzLnBhY2thZ2VEYXRhXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGlzU3RhdHVzRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxvd2VyRmllbGQgPSBmaWVsZE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbG93ZXJGaWVsZCA9PT0gJ3N0YXR1cycgfHxcbiAgICAgIGxvd2VyRmllbGQuaW5jbHVkZXMoJ3N0YXR1cycpIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYXZhaWxzdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYWNjb3VudF9zdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnaXNfY3VzdG9tX2dyYWRlJztcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZSk7XG4gIH1cblxuICBncmlkQ29udGV4dCA9IHtcbiAgICBhcHBseUZpbHRlcjogKGNvbDogYW55KSA9PiB0aGlzLmFwcGx5RmlsdGVyT25Db2x1bW4oY29sKSxcbiAgICBjbGVhckZpbHRlcjogKGNvbDogYW55KSA9PiB0aGlzLnJlbW92ZUZpbHRlckZyb21Db2x1bW4oY29sKVxuICB9O1xuXG4gIHByaXZhdGUgY2xvc2VBbGxGaWx0ZXJNZW51cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPVxuICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBhcHBseUZpbHRlck9uQ29sdW1uKGNvbDogYW55KSB7XG4gICAgdGhpcy5jbG9zZUFsbEZpbHRlck1lbnVzKCk7XG4gICAgY29uc3QgZmlsdGVyID0ge1xuICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgIHNlYXJjaDogY29sLnNlYXJjaCxcbiAgICAgIHF1ZXJ5OiBjb2wucXVlcnksXG4gICAgICB0eXBlOiBjb2wudHlwZSxcbiAgICAgIF9pZHM6IGNvbC5faWRzXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gICAgdGhpcy5jb21tb25TZXZpY2UucmVwbGFjZUNvbHVtblF1ZXJ5KHRoaXMuY29sdW1ucywgY29sLCBjb2wucXVlcnkpO1xuICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcblxuICB9XG5cbiAgcmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2w6IGFueSkge1xuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIGNvbnN0IGVtcHR5UXVlcnkgPSB7XG4gICAgICBmaXJzdF9jb25kaXRpb246IG51bGwsXG4gICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxuICAgIH07XG5cbiAgICB0aGlzLmNvbW1vblNldmljZS5yZXBsYWNlQ29sdW1uUXVlcnkodGhpcy5jb2x1bW5zLCBjb2wsIGVtcHR5UXVlcnkpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJzKCk7XG4gIH1cblxuICBnZXRGb3JtYXRlZERhdGUodmFsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZm9ybWF0RGF0ZVZhbHVlKHZhbCwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgfVxuXG4gIGNsb3NlQWxsRXhwYW5kZWRSb3dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25LZXlEb3duKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIHJvdzogYW55LFxuICAgIGNvbDogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgIT09ICdCYWNrc3BhY2UnKSByZXR1cm47XG4gICAgaWYgKGNvbD8uaXNfcmVxdWlyZWQgPT09IHRydWUpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcbiAgICBpZiAoY3VycmVudFZhbHVlID09IG51bGwgfHwgY3VycmVudFZhbHVlID09PSAnJykgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgbnVsbCwgdHJ1ZSk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKFxuICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxuICAgICAgY29sLmluZGV4LFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICBnZXREcm9wZG93bkNlbGxUZXh0KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKHZhbHVlPy52YWx1ZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlLnZhbHVlKTtcbiAgICBpZiAodmFsdWU/Lm5hbWUgIT0gbnVsbCkgcmV0dXJuIFN0cmluZyh2YWx1ZS5uYW1lKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG59IiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0YWJzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIodGFiKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09IHRhYlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGFiIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1zZWFyY2hcIiBbc3R5bGUud2lkdGgucHhdPVwiMzUwXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJlbmFibGVHbG9iYWxTZWFyY2hcIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNnbG9iYWxTZWFyY2hJbnB1dFxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogMzZweFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2gsIHRoZW4gcHJlc3MgRW50ZXJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVTZWFyY2hcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uR2xvYmFsU2VhcmNoKClcIlxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KCRldmVudClcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcmlnaHQtdG9wLWFjdGlvbnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25zPy5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhY3Rpb24tYnV0dG9ucy1yb3cgbXMtMlwiXG4gICAgICAgICAgKm5nSWY9XCJidXR0b24/Lmhhc19wZXJtaXNzaW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkJ1dHRvbkNsaWNrKGJ1dHRvbi5uYW1lKVwiXG4gICAgICAgICAgICBbY2xhc3MubWUtMl09XCJpID09IGJ1dHRvbnMubGVuZ3RoIC0xXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYm9yZGVyIGJvcmRlci1wcmltYXJ5IGJ0bi1hY3RpdmUtcHJpbWFyeSAgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cImJ1dHRvbi5pc19zaG93SWNvblwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGJ1dHRvbi5pY29uICsgJy5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm1zLTBdPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcbiAgICAgICAgICAgICAgPnt7IGJ1dHRvbj8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFzaG93RmlsdGVyUm93XCJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBhY3Rpb24tYnV0dG9ucy1yb3dcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93RmlsdGVyc1wiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIkphdmFTY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXG4gICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDdweDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICMwMDIyZmY7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgNjAsIDI1NSk7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMTZweDtcbiAgICAgICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLW5vbmVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWR2YW5jZS1maWx0ZXInKVwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWR2YW5jZS1maWx0ZXInXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3pvb20tY2hhcmdlLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWN0aW9uLWJ1dHRvbnMtcm93XCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2V0dGluZycgfHxcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnIHx8XG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtcHJlc2V0cycgfHxcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2V0dGluZ3MtMi5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiB0b3AtaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIkphdmFTY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5TZXR0aW5nPC9zcGFuPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnc2V0dGluZydcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xIGFjdGlvbnMtZHJvcGRvd24tc2V0dGluZ1wiXG4gICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnVcIj5cbiAgICAgICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1sYXlvdXQnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90YWJsZS0yLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIFRhYmxlIExheW91dDwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9saXN0LWRldGFpbHMuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgVGFibGUgUHJlc2V0czwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW1ucyAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dTaWRlTWVudVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3Nob3ctaGlkZS1jb2x1bW5zJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlciBkLWZsZXhcIlxuICAgICAgICAgICAgICAgID48c3BhblxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIENvbHVtbnM8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0XCI+e3sgY29sdW1uc0NvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBGaWx0ZXIgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpOyBhY3RpdmVUb3BCdXR0b24gPSAnJztcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFzaG93RmlsdGVyUm93XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgRmlsdGVyXG4gICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgIDwhLS0gRG93bmxvYWQgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ2NzdicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIENTViBFeHBvcnRcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlRXhwb3J0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ3N2KCd4bHN4JylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgRXhjZWwgRXhwb3J0XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8IS0tIEZvbnQgRmFtaWx5ICYgRm9udCBTaXplIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcGItMiBwdC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEZvbnQgRmFtaWx5IC0tPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb250RmFpbWx5XCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZvbnQgb2YgZm9udEZhbWlsaWVzOyB0cmFja0J5OiB0cmFja0J5SWRcIiBbdmFsdWVdPVwiZm9udFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb250IH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cblxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplczsgdHJhY2tCeTogdHJhY2tCeUlkXCIgW3ZhbHVlXT1cInNpemVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2l6ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUxheW91dFwiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJ1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVQcmVzZXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93SGlkZUNvbHVtbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zLXJvd1wiICpuZ0lmPVwic2hvd0Z1bGxTY3JlZW5CdXR0b25cIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIlxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICB0aXRsZT1cIk1pbmltaXNlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leHBlbmQuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgbWItMVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiaXNGdWxsU2NyZWVuXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgdGl0bGU9XCJNYXhpbWlzZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbWluaW1pemUuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgbWItMVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8IS0tIEV4YW1wbGUgc2luZ2xlIGRhbmdlciBidXR0b24gLS0+XG5cbiAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGQtZmxleCBnYXAtMiBhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWN0aW9ucycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFjdGlvblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL1ZlY3Rvci5zdmcnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWN0aW9ucydcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QWN0aW9uPC9hPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5Bbm90aGVyIGFjdGlvbjwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvYT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNlcGFyYXRlZCBsaW5rPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlcnMgJiYgIXNob3dGaWx0ZXJSb3dcIlxuICAgIGNsYXNzPVwidG9wLWZpbHRlci1yb3cgYm9yZGVyLXRvcCBweS0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidG9wRmlsdGVyUm93SGVpZ2h0XCJcbiAgPlxuICAgIDwhLS0gTEVGVCBTSURFIChGaWx0ZXIgdGFncyArIEZpbHRlciBidXR0b24pIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFnc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICdmaWx0ZXItY29sdW1ucyc7XG4gICAgICAgICAgICAgIG9wZW5GaWx0ZXIoY29sKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYWN0aXZlLWZpbHRlcnNcIlxuICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlbiAmJlxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci10YWcgbXQtMFwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLnN2ZydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGNyb3NzLXNlY29uZGFyeSBtcy0yIG1iLTFcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlblxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uczsgY29udGV4dDogeyBjb2x1bW46IGNvbCB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEZpbHRlciBCdXR0b24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWRkLWZpbHRlci1idXR0b24tbWVudVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGJ1dHRvbi1maWx0ZXJcIlxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDcwcHhcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGx1cy5zdmcnXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgRmlsdGVyXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJiAhaXNBY3RpdmVGaWx0ZXJPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uc1wiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSSUdIVCBTSURFIChVcGRhdGUgKyBSZXNldCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQoKVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiIWNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpXCJcbiAgICAgID5cbiAgICAgICAgVXBkYXRlIFZpZXdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmIGFjdGl2ZUZpbHRlcmVkQ29sdW1ucz8ubGVuZ3RoXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcbiAgICAgID5cbiAgICAgICAgUmVzZXRcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgW3N0eWxlLmhlaWdodF09XCJcbiAgICAgIHNob3dGaWx0ZXJzID8gJ2NhbGMoMTAwJSAtICcgKyB0b3BGaWx0ZXJSb3dIZWlnaHQgKyAncHgpJyA6ICcxMDAlJ1xuICAgIFwiXG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGNsYXNzPVwiZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXIgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAjZGF0YUdyaWRDb250YWluZXJcbiAgICBbc3R5bGUuZm9udEZhbWlseV09XCJmb250RmFpbWx5XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIGlkPVwiZGF0YS1ncmlkLW1haW4tY29udGFpbmVyXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbnNcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcbiAgICAgICAgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvciB8fCBoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcbiAgICAgIFwiXG4gICAgICBjZGtEcm9wTGlzdFxuICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJlbnRlclRvVG9wUm93R3JvdXBpbmcoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdGVkRnJvbVRoZVRvcFJvdygkZXZlbnQpXCJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wVG9wR3JvdXAoJGV2ZW50KVwiXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJjYW5FbnRlclRvUm93c0dyb3VwaW5nXCJcbiAgICAgIGlkPVwicm93cy1ncm91cGluZy10b3AtY29udGFpbmVyXCJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93IGQtZmxleCBweC00IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFncm91cGVkQ29sdW1ucz8ubGVuZ3RoXCI+XG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgZ3JvdXBzXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkdyb3VwUmVvcmRlcigkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBbY2RrRHJhZ0xvY2tBeGlzXT1cIid4J1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGdyb3VwZWRDb2x1bW5zO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbHVtbnMubGVuZ3RoID4gMSAmJiBpICE9IGdyb3VwZWRDb2x1bW5zLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQuaGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgW3N0eWxlLmhlaWdodF09XCJcbiAgICAgICAgJ2NhbGMoMTAwJSAtICcgK1xuICAgICAgICAoc2hvd1Jvd3NHcm91cGluZ1xuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICsgZm9vdGVyUm93SGVpZ2h0XG4gICAgICAgICAgOiBmb290ZXJSb3dIZWlnaHQpICtcbiAgICAgICAgJ3B4KSdcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxuICAgICAgICAgICFzaG93U2lkZU1lbnVcbiAgICAgICAgICAgID8gJzEwMCUnXG4gICAgICAgICAgICA6IHNpZGVNZW51VmlzaWJsZVxuICAgICAgICAgICAgPyAnY2FsYygxMDAlIC0gMjgwcHgpJ1xuICAgICAgICAgICAgOiAnY2FsYygxMDAlIC0gMzBweCknXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCB0cmFuc2l0aW9uIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyIHctMTAwXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cImhlYWRlclRleHRGb250c1NpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCIhaGFzQW55VmlzaWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBMZWZ0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgbGVmdC1waW5uZWRcIlxuICAgICAgICAgICAgICAjbGVmdFBpbm5lZEhlYWRlclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlcmlhbE51bWJlclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXG4gICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFMuTm9cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xuICAgICAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhU2V0KVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKGRhdGFTZXQpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKGRhdGFTZXQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICBpZD1cImxlZnQtcGlubmVkLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibGVmdFBpbm5lZENvbHVtbnNcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxuICAgICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDFweFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGxlZnRQaW5uZWRDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIENlbnRlciBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGNlbnRlci1zY3JvbGxhYmxlXCJcbiAgICAgICAgICAgICAgI2NlbnRlclBpbm5lZEhlYWRlclxuICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgaWQ9XCJjZW50ZXItcGlubmVkLWhlYWRlclwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjZW50ZXJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdjZW50ZXInKVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3Q2VudGVyQ29sdW1ucycpXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoXT1cIlxuICAgICAgICAgICAgICAgICdjYWxjKDEwMCUgLSAnICtcbiAgICAgICAgICAgICAgICAocmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggKyBsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoKSArXG4gICAgICAgICAgICAgICAgJ3B4KSdcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgI2NvbHVtbnNHcm91cGVkQm94XG4gICAgICAgICAgICAgICAgaWQ9XCJncm91cEJveEhlYWRlckRpdlwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCB3LTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgICAgIHNob3dGaWx0ZXJSb3cgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcy0zXCI+R3JvdXA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCAnZ3JvdXAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVHcm91cEJveCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAtMnB4XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIlxuICAgICAgICAgICAgICAgICAgY2hlY2tDb2x1bW5Hcm91cGluZ1N0YXR1cyhjb2wpO1xuICAgICAgICAgICAgICAgICAgZHJhZ1N0YXJ0T25Hcm91cChjb2wpO1xuICAgICAgICAgICAgICAgICAgb25EcmFnU3RhcnRlZChjb2wpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoKVwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBjZW50ZXJDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNPdXRzaWRlQ29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2dpbmdJbkdyb3VwQXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNPdXRzaWRlQ29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS1jcm9zcy5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXJDb2x1bW5zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWlzT3V0c2lkZUNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX2dyb3VwYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5pc19ncm91cGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgUmlnaHQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgaWQ9XCJyaWdodC1waW5uZWQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciByaWdodC1waW5uZWRcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXG4gICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucycpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ3JpZ2h0JylcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxuICAgICAgICAgICAgICAjcmlnaHRQaW5uZWRIZWFkZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtaGVhZGVyIGQtZmxleFwiXG4gICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAwLjJweFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiByaWdodFBpbm5lZENvbHVtbnM7XG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIEJvZHkgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWRhdGFTZXQ/Lmxlbmd0aCAmJiAhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVjb3JkLW5vdC1mb3VuZC5zdmcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+PC9kaXY+IC0tPlxuICAgICAgICAgICAgPGRpdj5ObyBSZWNvcmQgRm91bmQ8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGxvYWRpbmctb3ZlcmxheVwiXG4gICAgICAgICAgICAqbmdJZj1cImxvYWRpbmcgfHwgZGF0YVNldExvYWRpbmdcIlxuICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgei1pbmRleDogOTk5O1xuICAgICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMXB4KTtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5LXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW5cIlxuICAgICAgICAgICAgI21haW5TY3JvbGxcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluU2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gTEVGVCBQSU5ORUQgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgIWdyb3VwZWRDb2x1bW5zLmxlbmd0aCA/IG9yaWdpbmFsRGF0YVNldC5sZW5ndGggKiByb3dIZWlnaHQgOiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgbGVmdC1waW5uZWQtYm9keSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwiaGFzTGVmdFBpbm5lZENvbHVtbnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50cmFuc3BhcmVudC1ib3JkZXItcmlnaHRdPVwiIWhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibGVmdFBpbm5lZEJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPD0gNFwiXG4gICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXG5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWZ0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDRU5URVIgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLmNsaWVudFdpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgY2VudGVyLXNjcm9sbGFibGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuOyBvdmVyZmxvdy14OiBhdXRvXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgI2NlbnRlclNjcm9sbGFibGVCb2R5XG4gICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJveFNoYWRvd109XCJoYXNMZWZ0UGlubmVkQ29sdW1ucyA/IGxlZnRQaW5uZWRCb3hzaGFkb3c6ICdub25lJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCIgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSSUdIVCBQSU5ORUQgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWJvZHktd3JhcHBlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUmlnaHRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPD0gNFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJcbiAgICAgICAgICAgICAgICBpc1Njcm9sbGJhclZpc2libGVcbiAgICAgICAgICAgICAgICAgID8gcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxNVxuICAgICAgICAgICAgICAgICAgOiByaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgcmlnaHQtcGlubmVkLWJvZHkgdy0xMDAgaC0xMDBcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwiaGFzUmlnaHRQaW5uZWRDb2x1bW5zID8gcmlnaHRQaW5uZWRCb3hzaGFkb3c6ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT1cInRvcDogYXV0bzsgbGVmdDogYXV0b1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZnVsbHNjcmVlbkltYWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gKGZvb3RlclJvd0hlaWdodCArIDEwMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1tb2RhbCBmdWxsLWltYWdlLW1vZGFsXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkZ1bGxzY3JlZW4gSW1hZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemUgPiAwICYmIHNob3dUYXNrYmFyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YXNrYmFyIHctMTAwXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCIwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLXJvd3MtYWN0aW9uLWJhclwiIFtAc2xpZGVVcF0+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC1jb3VudFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSb3dzLnNpemUgfX0gc2VsZWN0ZWQgb2ZcbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnPy5wYWdpbmF0aW9uUGFyYW1zPy50b3RhbEl0ZW1zXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgVG90YWxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YXNrYmFyQWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbj8uaGFzX3Blcm1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHZlcmlmaWVkIGJ0biB7eyBhY3Rpb24gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q2xpY2soYWN0aW9uPy5hY3Rpb25OYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYWN0aW9uPy5hY3Rpb25OYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9ucy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT09IHRhc2tiYXJBY3Rpb25zLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2JhckFjdGlvbnNbaSArIDFdPy5oYXNfcGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID58PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGUpO3NlbGVjdGVkUm93cy5jbGVhcigpO1wiIGNsYXNzPVwiY2xlYXItYnRuIG1zLTIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtY2lyY2xlXCI+PC9pPiBDbGVhciBTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gVmVydGljYWwgRmFrZSBzY3JvbGwgQmFyIC0tPlxuICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbk1haW5GYWtlU2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLXNjcm9sbGJhciBmYWtlLXNjcm9sbGJhci12ZXJ0aWNhbCBkLW5vbmVcIlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcbiAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgICAgICAgd2lkdGg6IDE3cHg7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGYxZjJmMztcbiAgICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgKiBkYXRhU2V0TGVuZ3RoXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEhvcml6aW50YWwgRmFrZSBTY3JvbGxiYXJzIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICpuZ0lmPVwiaGFzU2Nyb2xsICYmICFzaG91bGRSZXN0b3JlU2Nyb2xsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2hvcml6aW50YWxGYWtlU2Nyb2xsXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGggLSAxMFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTaWRlIE1lbnUgSW1wbGVtZW50ZWQgSGVyZSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzaG93U2lkZU1lbnVcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2lkZU1lbnVWaXNpYmxlID8gMjgwIDogMzBcIlxuICAgICAgICBjbGFzcz1cInJpZ2h0LW1lbnUgaC0xMDBcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNpZGVtZW51QmFja2dyb3VuZENvbG9yXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIGQtZmxleCBmbGV4LXJvdy1yZXZlcnNlXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMzBweFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1zdGFydF09XCJzaWRlTWVudVZpc2libGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdjb2xzJylcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctZmZmXT1cIlxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3VpLWNoZWNrcy1ncmlkLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+Q29sdW1uczwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdmaWx0cnMnKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJcbiAgICAgICAgICAgICAgICBzaWRlTWVudVZpc2libGUgJiYgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbnMtYnV0dG9uIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudWUtdGV4dFwiPkZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXG4gICAgICAgICAgICAqbmdJZj1cInNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBzaWRlTWVudVZpc2libGUgPyAnMjUwcHgnIDogJycgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFubmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPCEtLSBDb2x1bW4gSXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1ib2R5IHB4LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxociAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudS1yb3ctZ3JvdXBzXCIgc3R5bGU9XCJoZWlnaHQ6IDMwJVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVNZW51Um93R3JvdXBzXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlRmlsdGVyc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZm9vdGVyUm93SGVpZ2h0XCJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLXRvcFwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImZvb3RlclJvd0JhY2tncm91bmRDb2xvclwiXG4gICAgICAqbmdJZj1cInBhZ2luYXRpb25Db25maWdcIlxuICAgID5cbiAgICAgIDwhLS0gUm93czogPHNwYW4gY2xhc3M9XCJmdy01MDAgbXMtMVwiPnt7IGRhdGFTZXQubGVuZ3RoIH19PC9zcGFuPiAtLT5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy5weF09XCJmb290ZXJQYWRkaW5nXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2l6ZVwiPlxuICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFnaW5hdGlvbkNvbmZpZy5saW1pdFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBwYWdlU2l6ZU9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlJZFwiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgICAgICAgIHt7IHNpemUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+IHBlciBwYWdlIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxuICAgICAgICAgIFJlc3VsdHM6XG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgPFxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XG4gICAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9mXG4gICAgICAgICAge3sgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDigLlcbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzOyB0cmFja0J5OiB0cmFja0J5SWRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSAnLi4uJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy5wYWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09ICcuLi4nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb25Db25maWcucGFnZSArIDEpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDigLpcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gSGVhZGVyIENlbGwgVGVtcGxhdGUgLS0+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuXG48bmctdGVtcGxhdGVcbiAgI2hlYWRlckNlbGxcbiAgbGV0LWNvbFxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXG4gIGxldC1pPVwiaW5kZXhcIlxuICBsZXQtY29sdW1uSW5kZXg9XCJpbmRleFwiXG4gIGxldC1zZWN0aW9ucz1cInNlY3Rpb25cIlxuICBsZXQtY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyPVwiY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyXCJcbj5cbiAgPGRpdj5cbiAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRIZWFkZXJcIj5cbiAgICAgIDxkaXYgY2RrRHJvcGxpc3RHcm91cCBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gUGFyZW50IEhlYWRlciAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvdWxkVGhlR3JvdXBIZWFkZXJTaG93KGNvbClcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZ3JvdXAtaGVhZGVyXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICBbc3R5bGUuZ3JpZENvbHVtbl09XCInc3BhbiAnICsgY29sLmNoaWxkcmVuLmxlbmd0aFwiXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtZW5kXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sPy5pbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItY29udGVudFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXG4gICAgICAgICAgICBbY2xhc3MubXMtMl09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sLmNoaWxkcmVuKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXAoJGV2ZW50LCBjb2wsIHBpbm5lZFJpZ2h0KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXJzIGFuZCBGaWx0ZXJzIC0tPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2wuY2hpbGRyZW5cIlxuICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbkNoaWxkRHJvcGxpc3RTb3J0ZWQoJGV2ZW50LCBzZWN0aW9ucylcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25DaGlsZERyb3BsaXN0RHJvcGVkKCRldmVudClcIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXG4gICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlsZFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVyIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmlzX3Zpc2libGUgJiYgIWNoaWxkWydpc1Jvd0dyb3VwZWQnXVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHMgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjaGlsZC5maWVsZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0YWJsZS1oZWFkZXJdPVwiY2hpbGQ/LmlzX2VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZC5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0oIWNoaWxkPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMiAtIDEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb2xJbmRleDogaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjaGlsZC5maWVsZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoaWxkLmZpbHRlclZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKTsgYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy50eXBlID09ICdkcm9wZG93bicgfHwgY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJyB8fCBjaGlsZD8udHlwZSA9PSAnYXJyYXknXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNoaWxkPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjaGlsZClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wZS1ub25lXT1cImNoaWxkPy50eXBlID09ICdpbWFnZSdcIlxuICAgICAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICM3NDg2ZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGQtYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbD8uZmllbGQgPT0gY2hpbGQ/LmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy5waW5uZWQgPyAwIDogLWNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICFkcmFnZ2luZ0luR3JvdXBBcmVhIHx8XG4gICAgICAgICAgICAgICAgICAgIChjaGlsZC5pc19ncm91cGFibGUgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYSlcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFjaGlsZC5pc19ncm91cGFibGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYmFuLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBjaGlsZEhlYWRlclBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICBjYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmIGNoaWxkPy5pc19ncm91cGFibGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogcGlubmVkUmlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEZsYXQgSGVhZGVyIHx8IFNpbmdsZSBIZWFkZXIgQ2VsbC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZmxhdEhlYWRlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiXG4gICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGUgJiYgIWNvbFsnaXNSb3dHcm91cGVkJ11cIlxuICAgICAgPlxuICAgICAgICA8IS0tIEZ1bGwtaGVpZ2h0IEhlYWRlciBDZWxsIChzcGFucyAyIHJvd3MgdmlzdWFsbHkpIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMSAvIHNwYW4gMlwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZS1oZWFkZXJdPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDb2x1bW5JbmRpY2VzLmluY2x1ZGVzKGNvbC5pbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjb2w/LmlzX2VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwiY29sLm9yZGVyX2J5XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/LmZpZWxkID09IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLSBBc2NlbmRpbmcgU29ydCBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGVzYyhjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYydcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBEZXNjZW5kaW5nIFNvcnQgSWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2Rlc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0QXNjKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnZGVzYydcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpO1xuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgLSghY29sPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXG4gICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMiAtIDEwXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXG4gICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29sSW5kZXg6IDBcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJjb2wucGlubmVkID09ICdyaWdodCdcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRmlsdGVyIENlbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLmZpbHRlclZhbHVlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNvbClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXG4gICAgICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaCgkZXZlbnQsIGNvbClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNvbClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyKGNvbClcIlxuICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY29sPy50eXBlID09ICdpbWFnZSdcIlxuICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICM3NDg2ZmY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGQtYmxvY2tcIlxuICAgICAgICAgICAgPjwvc3BhblxuICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZpbHRlci1yb3ctZmlsdGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsID09PSBjb2xcIlxuICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjb2w/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIEJvZHkgQ2VsbCBUZW1wbGF0ZSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuXG48bmctdGVtcGxhdGVcbiAgI3Jvd0NlbGxcbiAgbGV0LXJvd1xuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICBsZXQtaXNFdmVuPVwiaXNFdmVuXCJcbiAgbGV0LWlzT2RkPVwiaXNPZGRcIlxuICBsZXQtaXNMZWZ0U2VjdGlvbj1cImlzTGVmdFwiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgbGV0LWlzVG90YWxSb3c9XCJpc1RvdGFsUm93XCJcbj5cbiAgPCEtLSBDaGVjayBpZiByb3cgaXMgYSBncm91cCAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBSb3dUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgZGVwdGg6IDAgfVwiXG4gID48L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNncm91cFJvd1RlbXBsYXRlIGxldC1yb3cgbGV0LWRlcHRoPVwiZGVwdGhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmlzR3JvdXA7IGVsc2UgcmVndWxhclJvd1wiPlxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLXJvdyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNlY3Rpb24gIT09ICdjZW50ZXInXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxuICAgICAgICAgIHNlY3Rpb24gPT09ICdjZW50ZXInXG4gICAgICAgICAgICA/IChjZW50ZXJTY3JvbGxhYmxlQm9keT8uc2Nyb2xsV2lkdGggPz8gMCkgKyAncHgnXG4gICAgICAgICAgICA6ICcxMDAlJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdsZWZ0J1wiXG4gICAgICAgICAgY2xhc3M9XCJoLTEwMCBkLWZsZXhcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMVwiXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGgtMTAwIGJvcmRlci1yaWdodCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcbiAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiXG4gICAgICAgICAgICAgICd1cmwoJyArXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXJpZ2h0LnN2ZyksIGF1dG8nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJvd01vdXNlRG93bihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJvblJvd01vdXNlT3Zlcihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZ2V0U3RhcnRJbmRleCgpICsgKHJvdy5fX3ZpcnR1YWxJbmRleCAtIDEpIHx8IFwiXCIgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hlc1wiXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGgtMTAwIGJvcmRlci1yaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzLmxlZnQtc2VsZWN0aW9uLWJvcmRlcl09XCJcbiAgICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRHcm91cENoZWNrZWRTdGF0ZShyb3cpID09PSB0cnVlXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RHcm91cFJvdygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdjZW50ZXInXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHMtMiBoLTEwMCBib3JkZXItYmVsb3dcIlxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gYWxpZ24taXRlbXMtY2VudGVyIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHJvdy5pc0V4cGFuZFxuICAgICAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXG4gICAgICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICB7eyByb3cuZ3JvdXBWYWx1ZSB9fSAoe3sgY291bnRMZWFmUm93cyhyb3cpIH19KVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1jaGlsZHJlblwiICpuZ0lmPVwicm93LmlzRXhwYW5kXCIgW0BzbGlkZVRvZ2dsZV0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygcm93LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmlzR3JvdXA7IGVsc2UgZGF0YVJvd1wiPlxuICAgICAgICAgICAgPCEtLSBSZWN1cnNpdmUgY2FsbCBmb3IgbmVzdGVkIGdyb3VwIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGdyb3VwUm93VGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBkZXB0aDogZGVwdGggKyAxIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0YVJvdz5cbiAgICAgICAgICAgIDwhLS0gUmVndWxhciBkYXRhIHJvdyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgaXNFdmVuOiBpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgIGlzT2RkOiBpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgIGlzTGVmdDogaXNMZWZ0U2VjdGlvbixcbiAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBSZWd1bGFyIHJvdyAobm90IGEgZ3JvdXApIC0tPlxuICA8bmctdGVtcGxhdGUgI3JlZ3VsYXJSb3c+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvd1wiXG4gICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNlY3Rpb24gPT0gJ2NlbnRlcicgJiYgKGdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJylcbiAgICAgICAgXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxuICAgICAgICB9XCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93KVwiXG4gICAgICAgICAgKm5nSWY9XCJyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGZpbHRlci1pY29uLXdyYXBwZXJcIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBpc0RldGFpbHNFeHBhbmRlZChyb3cpXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIlxuICAgICAgICAgIHNlY3Rpb24gPT0gJ2NlbnRlcicgJiYgZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA/IGdyb3VwQm94UGFkZGluZyA6IDBcbiAgICAgICAgXCJcbiAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1yb3cgaC0xMDBcIlxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcbiAgICAgICAgW2NsYXNzLm9kZC1yb3ddPVwiaXNPZGRcIlxuICAgICAgICBbY2xhc3MuaG92ZXJlZC1yb3ddPVwiaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dMZWF2ZSgpXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxuICAgICAgICB9XCJcbiAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1yb3dcIlxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcbiAgICAgICAgW2NsYXNzLm9kZC1yb3ddPVwiaXNPZGRcIlxuICAgICAgICBbY2xhc3MuaG92ZXJlZC1yb3ddPVwiaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dMZWF2ZSgpXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXG4gICAgICAgICAgKm5nSWY9XCJpc0xlZnRTZWN0aW9uICYmIHNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiYm9keVRleHRGb250c1NpemVcIlxuICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiXG4gICAgICAgICAgICAndXJsKCcgK1xuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXJpZ2h0LnN2ZyksIGF1dG8nXG4gICAgICAgICAgXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJvblJvd01vdXNlT3Zlcihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0U3RhcnRJbmRleCgpICsgKHJvdy5fX3ZpcnR1YWxJbmRleCAtIDEpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxuICAgICAgICAgICAgICA/IHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICA6IGNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsXCJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd0NoZWNrYm94ZXNcIlxuICAgICAgICAgIFtjbGFzcy5sZWZ0LXNlbGVjdGlvbi1ib3JkZXJdPVwiXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMVwiXG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW5cIlxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gUmVuZGVyIGFsbCBjb2x1bW5zIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnM7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGQ7XG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGQ7XG4gICAgICAgICAgICAgICAgbGV0IHN1YkNvbEluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkPy5pc192aXNpYmxlICYmICFjaGlsZD8uaXNSb3dHcm91cGVkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgIHN1YkNvbEluZGV4OiBzdWJDb2xJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgW0BzbGlkZVRvZ2dsZV1cbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlsc1wiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGxlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyO1xuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAnY2VudGVyJyAmJiBpc0RldGFpbHNFeHBhbmRlZChyb3cpXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHMgY2VudGVyLXNlY3Rpb25cIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgbWF4LWhlaWdodDogMzUwcHg7XG4gICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xuICAgICAgXCJcbiAgICAgICNuZXN0ZWRUYWJsZVxuICAgICAgW3N0eWxlLndpZHRoXT1cIlxuICAgICAgICBoYXNSaWdodFBpbm5lZENvbHVtbnNcbiAgICAgICAgICA/ICcxMDAlJ1xuICAgICAgICAgIDogaGFzVmVydGljYWxTY3JvbGxcbiAgICAgICAgICA/ICdjYWxjKDEwMCUgLSAxMnB4KSdcbiAgICAgICAgICA6ICcxMDAlJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibmVzdGVkVGFibGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ1Rhc2tzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHRhc2tNYW5hZ2VtZW50VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgW0BzbGlkZVRvZ2dsZV1cbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ3JpZ2h0JyAmJiBpc0RldGFpbHNFeHBhbmRlZChyb3cpXCJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImhhc0hvcml6b250YWxTY3JvbGwgPyAzMzkgOiAzNDFcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxuPG5nLXRlbXBsYXRlXG4gICNjZWxsVGVtcGxhdGVcbiAgbGV0LWNvbD1cImNvbFwiXG4gIGxldC1yb3c9XCJyb3dcIlxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgbGV0LWNvbEluZGV4PVwiY29sSW5kZXhcIlxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxuPlxuICA8ZGl2XG4gICAgI2NlbGxDb250YWluZXJcbiAgICAoY2xpY2spPVwicm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7IGVkaXRpbmdLZXkgPSAnJzsgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2V0QWN0aXZlQ2VsbChyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpOyBjb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKVwiXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiYm9keUZvbnRXZWlnaHRcIlxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXG4gICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICBbYXR0ci5sb2NhdGlvbl09XCJyb3cuX192aXJ0dWFsSW5kZXggKyAnLScgKyBjb2wuaW5kZXhcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiYm9keVRleHRGb250c1NpemVcIlxuICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgW2NsYXNzLmFjdGl2ZS1jZWxsXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoIDw9IDEgJiYgIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzQWN0aXZlQ2VsbChyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpICYmICFpc0VkaXRpbmcocm93LCBjb2wpXCJcbiAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbCwgZmFsc2UsIGNlbGxDb250YWluZXIpXCJcbiAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGVuYWJsZUVkaXQocm93LCBjb2wpXCJcbiAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNTZWxlY3RlZChyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MudG9wLWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNUb3BCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmJvdHRvbS1ib3JkZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzQm90dG9tQm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5sZWZ0LWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNMZWZ0Qm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5yaWdodC1ib3JkZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzUmlnaHRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnRvcC1sZWZ0LWNvcm5lcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNUb3BMZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy50b3AtcmlnaHQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcFJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5ib3R0b20tbGVmdC1jb3JuZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzQm90dG9tTGVmdENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MuYm90dG9tLXJpZ2h0LWNvcm5lcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21SaWdodENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICAobW91c2Vkb3duKT1cImNlbGxTZWxlY3Rpb25TZXJ2aWNlLnN0YXJ0U2VsZWN0aW9uKHJvdywgY29sLCBzdWJDb2xJbmRleCwgJGV2ZW50KTsgY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgKG1vdXNlZW50ZXIpPVwiY2VsbFNlbGVjdGlvblNlcnZpY2UuZXh0ZW5kU2VsZWN0aW9uKHJvdywgY29sLCBzdWJDb2xJbmRleCwgJGV2ZW50KTsgY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgKG1vdXNldXApPVwiY2VsbFNlbGVjdGlvblNlcnZpY2UuZW5kU2VsZWN0aW9uKCk7IGNkci5kZXRlY3RDaGFuZ2VzKClcIlxuICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgIFxuPlxuXG4gICAgPCEtLSAgKG1vdXNlZG93bik9XCJzdGFydFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxuICAobW91c2VlbnRlcik9XCJleHRlbmRTZWxlY3Rpb24ocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXggPz8gMCwgY29sLmZpZWxkLCAkZXZlbnQpXCJcbiAgKG1vdXNldXApPVwiZW5kU2VsZWN0aW9uKClcIlxuICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJpc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsICBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQpXCIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsXCJcbiAgICAgIFtjbGFzcy5hY3RpdmUtZm9yLWVkaXRpbmddPVwiXG4gICAgICAgIGlzRWRpdGluZyhyb3csIGNvbCkgJiZcbiAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA8PSA1MCB8fCBjb2wudHlwZSA9PSAnaW1hZ2UnKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGlzRWRpdGluZyhyb3csIGNvbCkgJiZcbiAgICAgICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGNvbC50eXBlID09ICdpbWFnZScgfHxcbiAgICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwICYmXG4gICAgICAgICAgICAgICAgIWV4cGFuZGVkQ2VsbHMuc2l6ZSkpO1xuICAgICAgICAgIGVsc2Ugdmlld01vZGVcbiAgICAgICAgXCJcbiAgICAgID5cblxuICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbEVkaXRvcjsgZWxzZSBidWlsdEluRWRpdG9yc1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW2NlbGxFZGl0b3JdPVwiY29sLmNlbGxFZGl0b3JcIlxuICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW2NvbERhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICBbY2VsbFZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAgICAgKGVkaXRvckV2ZW50KT1cImZpbmlzaEVkaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYnVpbHRJbkVkaXRvcnM+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbD8udHlwZVwiPlxuICAgICAgICAgIDwhLS0gVGV4dCBJbnB1dCAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dCdcIlxuICAgICAgICAgICAgI2RhdGVJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZGF0ZUlucHV0LmludmFsaWQgfHwgIWlzVmFsdWVWYWxpZChyb3csIGNvbCwgZGF0ZUlucHV0KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDwhLS0gTnVtYmVyIElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAjbnVtYmVySW5wdXQ9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICNudW1iZXJSZWZcbiAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgbnVtYmVySW5wdXQpXCJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogbnVtYmVySW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBudW1iZXJJbnB1dClcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImNvbD8uaXNfcmVxdWlyZWRcIlxuICAgICAgICAgIC8+ICBcblxuICAgICAgICAgIDwhLS0gRGF0ZSBJbnB1dCAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcbiAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBkYXRlSW5wdXQpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBkYXRlSW5wdXQpXCJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICNkYXRlSW5wdXQ9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImJsdXJJbnB1dCgkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZGF0ZUlucHV0LmludmFsaWQgfHwgIWlzVmFsdWVWYWxpZChyb3csIGNvbCwgZGF0ZUlucHV0KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTtcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImNvbD8uaXNfcmVxdWlyZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPCEtLSBEYXRlIElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIlxuICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRpbWVJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgI3RpbWVJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiB0aW1lSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCB0aW1lSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiIGNsYXNzPVwidy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIiBbc3R5bGUudGV4dC1hbGlnbl09XCInbGVmdCdcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0yXCJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjIwXCJcbiAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIyMFwiXG4gICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiMjBcIlxuICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09PSB0cnVlIHx8IGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSA9PT0gJ3RydWUnXCJcbiAgICAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBib29sZWFuSW5wdXQpXCJcbiAgICAgICAgICAgICAgICNib29sZWFuSW5wdXQ9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBib29sZWFuSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBib29sZWFuSW5wdXQpXG4gICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICA8IS0tIEltYWdlIFVwbG9hZCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInaW1hZ2UnXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hhbmdlKCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgKm5nSWY9XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgICBbc3JjXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAgIGFsdD1cInByZXZpZXdcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjMyXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICAgICAgICBzdHlsZT1cIm9iamVjdC1maXQ6IGNvdmVyOyBib3JkZXItcmFkaXVzOiA0cHhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XG4gICAgICAgICAgPCEtLSBuZy1zZWxlY3QgbGlrZSBkcm9wZG93biAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duIHctMTAwXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIHRleHQtc3RhcnQgdy0xMDAgdGV4dC1lbGxpcHNpcyBkcm9wZG93bi1lZGl0LWJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Ecm9wZG93bktleURvd24oJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0RHJvcGRvd25DZWxsVGV4dChyb3csIGNvbCk7IGVsc2UgcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sKSB9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tcGxhY2Vob2xkZXJcIj5TZWxlY3QgYW4gb3B0aW9uLi4uPC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cblxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgdy0xMDAgcC0wIGNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51IHJvdW5kZWQtM1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cImlzRWRpdGluZyhyb3csIGNvbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMSBlZGl0aW5nLWRyb3Bkb3duLXNlYXJjaC1pbnB1dFwiICpuZ0lmPVwiY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCA+IDVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbkRyb3Bkb3duU2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBcbiAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjM1XCIgXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSB8IGZpbHRlcjogZWRpdGluRHJvcGRvd25TZWFyY2ggOiAndmFsdWUnKSBhcyBmaWx0ZXJlZE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gSXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvbj8udmFsdWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgb3B0aW9uLCB0cnVlKTsgZWRpdGluZ0tleSA9IG51bGw7IGZvY3VzQWZ0ZXJWYWx1ZVNlbGVjdChyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjb2wuZmllbGQgKyAnLScgKyAob3B0aW9uLnZhbHVlIHx8IG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU2hvdyB3aGVuIG5vIGZpbHRlcmVkIHJlc3VsdHMgLS0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zPy5sZW5ndGhcIiBjbGFzcz1cInB4LTIgcHktMSBkLWJsb2NrIHRleHQtY2VudGVyXCI+Tm8gUmVjb3JkIEZvdW5kPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBGb3IgQXJyYXkgdHlwZSB2YWx1ZXMgLS0+XG5cbiAgICAgICAgICA8IS0tIE1VTFRJIFNFTEVDVCAoQVJSQVkpIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInYXJyYXknXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQXJyYXlCbHVyKHJvdywgY29sKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjb21taXRBcnJheShyb3csIGNvbClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gVHJpZ2dlciAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICBkYXRhLWJzLWRpc3BsYXk9XCJzdGF0aWNcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0QXJyYXlUZW1wKHJvdywgY29sKS5sZW5ndGg7IGVsc2UgYXJyYXlQbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAge3sgZGlzcGxheUFycmF5TGFiZWxzKHJvdywgY29sKSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhcnJheVBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIFNlbGVjdCBvcHRpb25zLi4uXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgdy0xMDAgcC0wIGNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51IHJvdW5kZWQtM1wiIFtjbGFzcy5pbnZpc2libGVdPVwiIW1lbnVSZWFkeVwiIFtjbGFzcy5zaG93XT1cImlzRWRpdGluZyhyb3csIGNvbClcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggLS0+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiIGNsYXNzPVwicHgtMiBweS0xIGFycmF5LXNlYXJjaC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluRHJvcGRvd25TZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gT3B0aW9ucyAtLT5cbiAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjM1XCIgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHwgZmlsdGVyOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHB4LTIgcHktMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG0tMCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FycmF5U2VsZWN0ZWQocm93LCBjb2wsIG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQXJyYXlUZW1wKHJvdywgY29sLCBvcHRpb24pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGNvbW1pdEFycmF5KHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBtYXgtd2lkdGg6IDE2cHg7IG1heC1oZWlnaHQ6IDE2cHhcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/LnZhbHVlIHx8IG9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU2hvdyB3aGVuIGZpbHRlcmVkIGxpc3QgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zPy5sZW5ndGhcIiBjbGFzcz1cInB4LTIgcHktMSBkLWJsb2NrIHRleHQtY2VudGVyXCI+Tm8gUmVjb3JkIEZvdW5kPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAjZW1haWxNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgI2VtYWlsSW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIHBhdHRlcm49XCJeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBlbWFpbE1vZGVsKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGVtYWlsTW9kZWwuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBlbWFpbE1vZGVsKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIERlZmF1bHQgZmFsbGJhY2sgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgI3RleHRJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRleHRNb2RlbC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIHRleHRNb2RlbClcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImNvbD8uaXNfcmVxdWlyZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRGlzcGxheSBtb2RlIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TW9kZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKGNvbCwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIEZpZWxkIGljb24gKGZvciBUYXNrcyBncmlkKSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09PSAnVGFza3MnICYmIGljb25NYXBbY29sLmZpZWxkXSAmJiAhaXNUb3RhbFJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtZS0yXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cImljb25NYXBbY29sLmZpZWxkXShyb3csIGNvbClcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0g4pyFIEN1c3RvbSBjZWxsIHJlbmRlcmVyIHN1cHBvcnQgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsUmVuZGVyZXIgJiYgIWlzVG90YWxSb3c7IGVsc2UgZGVmYXVsdENlbGxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW2NlbGxSZW5kZXJJbml0XT1cImNvbC5jZWxsUmVuZGVyZXJcIlxuICAgICAgICAgICAgICBbcm93RGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICBbY2VsbFZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sPy5maWVsZClcIlxuICAgICAgICAgICAgICAoY2VsbEV2ZW50KT1cIm9uQ2VsbEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIPCfp74gRGVmYXVsdCB0ZXh0LWJhc2VkIGNlbGwgcmVuZGVyaW5nIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbGw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICNjZWxsVGV4dFxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0Q2VsbFRpdGxlKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGNlbGwgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29sPy50eXBlICE9PSAnaW1hZ2UnICYmXG4gICAgICAgICAgICAgICAgICBjb2w/LmZpZWxkICE9ICdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgIGNvbD8uZmllbGQgIT0gJ2ludm9pY2UuaW52b2ljZV9pbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgICFpc1RvdGFsUm93XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXG4gICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7e2dldENlbGxUaXRsZShyb3csIGNvbCl9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIFRvdGFsIHJvdyAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVG90YWxSb3dcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRUb3RhbEFtb3VudChjb2wpIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gSW52b2ljZSBJbWFnZSAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5maWVsZCA9PSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB6b29tOiAwLjdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8ICdBdHRhY2htZW50JyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEF0dGNobWVudChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xuICAgICAgICAgICAgICAgICAgICAgIGdldEV4dGVudGlvbihnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpICtcbiAgICAgICAgICAgICAgICAgICAgICAnLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gSW1hZ2UgY2VsbCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnaW1hZ2UnICYmICFpc1RvdGFsUm93XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEltYWdlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3csIGNvbDogY29sIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICghY29sPy5jZWxsUmVuZGVyZXIgJiYgc2hvd0NlbGxEZXRhaWxzQm94ICYmXG4gICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPiA1MCAmJiBjb2w/LnR5cGUgIT09ICdpbWFnZScpIHx8XG4gICAgICAgICAgICAgIChpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpICYmXG4gICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgaXNFeHBhbmRlZChyb3csIGNvbClcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXG4gICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2wsIGNvbHVtbnMsIGZhbHNlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPCEtLSBFeHBhbmQgLyBDb2xsYXBzZSBpY29uIC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEV4cGFuZGVkIHRleHQgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGV4cGFuZGVkLWJveFwiXG4gICAgICAgICAgKm5nSWY9XCJpc0V4cGFuZGVkKHJvdywgY29sKVwiXG4gICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJnZXRaSW5kZXgocm93LCBjb2wpXCJcbiAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgbGVmdDogMFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZClcIlxuICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIXNob3dEZXRhaWxzQm94XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGZ1bGxUZXh0VGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICBpc0FycmF5OiBpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBIZWFkZXJzIEFjdGlvbiBMaXN0IE9uIGNsaWNraW5nIHRocmVlIGRvdHMgLS0+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY29sdW1uTWVudVxuICBsZXQtY29sPVwiY29sXCJcbiAgbGV0LWlzTmVzdGVkVGFibGU9XCJpc05lc3RlZFRhYmxlXCJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcbiAgbGV0LWNvbHVtbkluZGV4PVwiY29sdW1uSW5kZXhcIlxuICBsZXQtY2hpbGRDb2xJbmRleD1cImNoaWxkQ29sSW5kZXhcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb2x1bW4tbWVudSB0aHJlZS1kb3RzLWNvbC1tZW51XCJcbiAgICBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cImlzTWVudWVIaWRkZW5cIlxuICAgICpuZ0lmPVwiYWN0aXZlQ29sICYmICFpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcbiAgPlxuICAgIDwhLS0gU29ydCBBc2NlbmRpbmcgLS0+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1iZWxvdyBwYi0yXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX3NvcnRhYmxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5Tb3J0PC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBc2NlbmRpbmcgJiZcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8uZmllbGQgIT0gY29sLmZpZWxkIHx8XG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYycpXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJzb3J0QXNjKGFjdGl2ZUNvbClcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctdXAuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIFNvcnQgQXNjZW5kaW5nXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTb3J0IERlc2NlbmRpbmcgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Rlc2NlbmRpbmcgJiZcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8uZmllbGQgIT0gY29sLmZpZWxkIHx8XG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnYXNjJylcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGFjdGl2ZUNvbClcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctZG93bi5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgU29ydCBEZXNjZW5kaW5nXG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNvcnRpbmdDb25maWc/LmZpZWxkID09PSBjb2wuZmllbGQgJiZcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdhc2MnIHx8XG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwicmVzZXRTb3J0KGFjdGl2ZUNvbClcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICBSZXNldCBTb3J0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHktMiBib3JkZXItYmVsb3cgdGhyZWUtZG90cy1maWx0ZXJcIiBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cImNvbD8udHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2wuaXNfc2VhcmNoX2FibGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RmlsdGVyXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtIHRocmVlLWRvdHMtZmlsdGVyXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIEZpbHRlclxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHktMiBib3JkZXItYmVsb3dcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlBpbjwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlubGVmdCAmJiBjb2w/LnBpbm5lZCAhPT0gJ2xlZnQnXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXG4gICAgICAgICAgICBhY3RpdmVDb2wsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICBpc05lc3RlZFRhYmxlLFxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1sZWZ0LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuXG4gICAgICAgID5QaW4gTGVmdFxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlucmlnaHQgJiYgY29sPy5waW5uZWQgIT09ICdyaWdodCdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXG4gICAgICAgICAgICBhY3RpdmVDb2wsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcbiAgICAgICAgICAgIGNvbHVtbnNcbiAgICAgICAgICApXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tcmlnaHQuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuXG4gICAgICAgID5QaW4gUmlnaHRcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBpc05lc3RlZFRhYmxlLFxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGF5b3V0LXRocmVlLWNvbHVtbnMuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlVucGluXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplVGhpc0NvbHVtblwiXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGFjdGl2ZUNvbClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWV4cGFuZC12ZXJ0aWNhbC5zdmcnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgQXV0b3NpemUgVGhpcyBDb2x1bW5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQXV0b3NpemUgQWxsIENvbHVtbnMgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVBbGxDb2x1bW5zXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVBbGxDb2x1bW5zKClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWFuZ2xlLWV4cGFuZC5zdmcnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgPjwvc3BhblxuICAgICAgPkF1dG9zaXplIEFsbCBDb2x1bW5zXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEdyb3VwIEJ5IC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImdyb3VwQnkoYWN0aXZlQ29sKVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfZ3JvdXBhYmxlXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2RpYWdyYW0tMy5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgR3JvdXAgYnkge3sgY29sLmhlYWRlciB9fVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaG9vc2UgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dDaG9zZUNvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJjaG9vc2VDb2x1bW5zKClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIENob29zZSBDb2x1bW5zXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJlc2V0IENvbHVtbnMgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UmVzZXRDb2x1bW5zXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwicmVzZXRDb2x1bW5zKClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctY291bnRlcmNsb2Nrd2lzZS5zdmcnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgPjwvc3BhblxuICAgICAgPlJlc2V0IENvbHVtbnNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cImlzVGhyZWVEb3RzRmlsdGVyT3BlbiAmJiBjb2w/LmlzX3NlYXJjaF9hYmxlXCJcbiAgICBjbGFzcz1cInRocmVlLWRvdHMtY29sLW1lbnUgcG9zaXRpb24tcmVsYXRpdmVcIlxuICAgIFtzdHlsZS5yaWdodC5weF09XCJnZXREeW5hbWljUmlnaHQoY29sLCBzZWN0aW9uLCBjb2x1bW5JbmRleCwgY2hpbGRDb2xJbmRleClcIlxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXG4gID5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uZmlsdGVyUmVuZGVyZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51IHAtMFwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtjZWxsUmVuZGVySW5pdF09XCJjb2wuZmlsdGVyUmVuZGVyZXJcIlxuICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAoY2VsbEV2ZW50KT1cIm9uQ2VsbEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICBbY29udGV4dF09XCJncmlkQ29udGV4dFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2w/LmZpbHRlclJlbmRlcmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEZpbHRlciBNZW51ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyTWVudSBsZXQtY29sPVwiY29sXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbHRlci1tZW51LWNvbnRhaW5lciBmaWx0ZXItbWVudVwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICpuZ0lmPVwiIWNvbD8uZmlsdGVyUmVuZGVyZXJcIlxuICA+XG4gICAgPCEtLSBEcm9wZG93biBUeXBlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09PSAnYXJyYXknOyBlbHNlIHRleHRGaWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItZHJvcGRvd24tc2VjdGlvbiBwLTFcIj5cblxuICAgIDwhLS0gU2VhcmNoIGlucHV0IC0tPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXG4gICAgLz5cblxuICAgIDwhLS0gRmlsdGVyICsgUmVzdWx0IEhhbmRsaW5nIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgfCBmaWx0ZXIgOiBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgXCJcbiAgICA+XG4gPCEtLSBDaGVjayBpZiBjb2x1bW5fZHJvcGRvd25fdmFsdWUgZXhpc3RzIGFuZCBoYXMgZGF0YSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aDsgZWxzZSBub0Ryb3Bkb3duRGF0YVwiPlxuICAgICAgPCEtLSBEQVRBIEZPVU5EIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7IGVsc2Ugbm9EYXRhRm91bmRcIj5cblxuICAgICAgICA8IS0tIFNlbGVjdCBBbGwgKG9ubHkgd2hlbiBkYXRhIGV4aXN0cykgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXQtMiBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA/PyAwKSA9PT1cbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID8/IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIlxuICAgICAgICAgICAgICAgIChjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHM/LnNpemUgPz8gMCkgPiAwICYmXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA/PyAwKSA8XG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCA/PyAwKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cbiAgICAgICAgICAgIFNlbGVjdCBBbGxcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFZpcnR1YWwgU2Nyb2xsIC0tPlxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgaXRlbVNpemU9XCIzMlwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdmlld3BvcnRcIlxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcbiAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtpZF09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgW2Zvcl09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRpb24/LnZhbHVlID8/IG9wdGlvbj8ubmFtZSA/PyBvcHRpb24pIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gTk8gREFUQSBGT1VORCAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhRm91bmQ+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgbXQtMlwiXG4gICAgICAgICAgKm5nSWY9XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXG4gICAgICAgID5cbiAgICAgICAgICBObyBSZWNvcmQgRm91bmRcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTk8gRFJPUERPV04gREFUQSBBVkFJTEFCTEUgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Ecm9wZG93bkRhdGE+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgbXQtMyBtYi0zXCI+XG4gICAgICAgICAgICAgTm8gUmVjb3JkIEZvdW5kXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cbiAgICA8bmctdGVtcGxhdGUgI3RleHRGaWx0ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbdHlwZV09XCJjb2w/LnR5cGUgPT0gJ3N0cmluZycgPyAndGV4dCcgOiBjb2w/LnR5cGVcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxuICAgICAgICAgICNmaWx0ZXJNZW51ZVRleHRjaElucHV0XG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPk9SPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcbiAgICAgICAgICAgICAgaWQ9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBAc2xpZGVUb2dnbGUgKm5nSWY9XCJmaXJzdFZhbHVlICYmIGNvbmRpdGlvbiAhPSAnbm9uZSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kQ29uZGl0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnIHx8IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiY29sPy50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sPy50eXBlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIG10LTJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMHB4XCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIEFwcGx5XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxuICAgICAgICAoY2xpY2spPVwicmVzZXRTaWRlRmlsdGVyKGNvbClcIlxuICAgICAgPlxuICAgICAgICBSZXNldFxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaWRlIE1lbnVlIC0tPlxuXG48IS0tIENvbHVtbiBQYW5uZWwgLyBQaXZvdCBNb2RlIC8gU2VhcmNoaW5nIC0tPlxuXG48bmctdGVtcGxhdGUgI2NvbHVtblBhbm5lbD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cbiAgICA8IS0tIFBpdm90IFRvZ2dsZSAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yIHBpdm90LW1vZGUgcHgtNSBtcy0yIGQtbm9uZVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgaWQ9XCJwaXZvdFRvZ2dsZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicGl2b3RNb2RlXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwicGl2b3RUb2dnbGVcIj5QaXZvdCBNb2RlPC9sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VsZWN0IEFsbCAmIFNlYXJjaCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yIHB4LTMgbXQtM1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXG4gICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlcGFyYXRvciAtLT5cbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFJpZ2h0IENvbHVtbnMgTWVudWUgLS0+XG5cbjwhLS0gQ29sdW1uIFBhbmVsIEl0ZW0gVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2NvbHVtblBhbmVsSXRlbSBsZXQtY29sPVwiY29sXCI+XG4gIDwhLS0gR3JvdXAgQ29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWdyb3VwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRcIlxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWQgPSAhY29sLmV4cGFuZGVkXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgIFtpZF09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxuICAgICAgICBbY2hlY2tlZF09XCJpc0NvbHVtblZpc2libGUoY29sKVwiXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbClcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcbiAgICAgICAgW2Zvcl09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRcIiBjbGFzcz1cInBzLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBMZWFmIENvbHVtbiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWUtMlwiIHN0eWxlPVwid2lkdGg6IDEuNXJlbVwiPjwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sLmlzX3Zpc2libGVcIlxuICAgICAgICBbaWRdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBbZm9yXT1cIidjb2xfJyArIGNvbC5maWVsZFwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBDb2x1bW5zIFNpZGUgRmlsdGVyIC0tPlxuPG5nLXRlbXBsYXRlICNzaWRlRmlsdGVycz5cbiAgPGRpdiBjbGFzcz1cInB5LTMgcHgtMiBwZS0zIGgtMTAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIGZpbHRlckFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXG4gICAgICAgICAgICAgIDogZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIHNpZGUtZmlsdGVyLWNvbHVtbnMtd3JhcHBlclwiXG4gICAgICBzdHlsZT1cImhlaWdodDogY2FsYygxMDAlIC0gNzBweCk7IHNjcm9sbGJhci13aWR0aDogdGhpblwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiBjb2x1bW5TZWFyY2ggOiAnaGVhZGVyJztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmaWx0ZXJQYW5uZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sdW1uLWdyb3VwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiXG4gICAgICAqbmdJZj1cImNvbD8udHlwZSAhPT0gJ2ltYWdlJ1wiXG4gICAgPlxuICAgICAgPCEtLSBDaGV2cm9uIHRvZ2dsZSAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gR3JvdXAgbGFiZWwgdG9nZ2xlIC0tPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICA+e3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBtcy0xXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoIHx8IGNvbD8ucXVlcnk/Ll9maXJzdF92YWx1ZVwiXG4gICAgICAgICAgICA+Kjwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ2hpbGRyZW4gY29sdW1ucyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZnctYm9sZFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTaG93IGZpbHRlciB3aGVuIGV4cGFuZGVkIC0tPlxuICAgIDxkaXYgW0BzbGlkZVRvZ2dsZV0gKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTQgcGUtM1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVOZXN0ZWRGaWx0ZXI7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaWRlIE5lc3RlZCBGaWx0ZXJzIC0tPlxuPG5nLXRlbXBsYXRlICNzaWRlTmVzdGVkRmlsdGVyIGxldC1jb2w9XCJjb2xcIj5cbiAgPGRpdiBjbGFzcz1cIlwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2FycmF5JzsgZWxzZSB0ZXh0RmlsdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0yXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxuICAgICAgICAgICAgICB8IGZpbHRlciA6IHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggOiAndmFsdWUnKSBhcyBmaWx0ZXJlZE9wdGlvbnNcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7IGVsc2Ugbm9EYXRhRm91bmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMSBzZWxlY3QtYWxsLWZpbHRlclwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCA9PSBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCIoY29sLnF1ZXJ5Py5faWRzPy5sZW5ndGggIT09IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggJiYgY29sLnF1ZXJ5Py5faWRzPy5sZW5ndGgpXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxuICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcbiAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/LmluY2x1ZGVzKG9wdGlvbj8uX2lkIHx8IG9wdGlvbj8uaWQgfHwgb3B0aW9uKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25PcHRpb25Ub2dnbGUoY29sLCBvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwib3B0aW9uX3t7IGNvbC5maWVsZCB9fV97e1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvblxuICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbZm9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xuICAgICAgICAgICAgICAgICAgICBjb2wuZmllbGQgK1xuICAgICAgICAgICAgICAgICAgICAnXycgK1xuICAgICAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IChvcHRpb24udmFsdWUgfHwgb3B0aW9uKSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YUZvdW5kPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgbXQtMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2lkZU5lc3RlZEZpbHRlclNlYXJjaFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIE5vIFJlY29yZCBGb3VuZFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cbiAgICA8bmctdGVtcGxhdGUgI3RleHRGaWx0ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5xdWVyeS5maXJzdF9jb25kaXRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnZGF0ZScgfHwgY29sPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPkZWXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+RlZcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbdHlwZV09XCJjb2w/LnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogKGNvbD8udHlwZSA9PSAnbnVtYmVyJyA/ICdudW1iZXInOiAndGV4dCcpXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJWYWx1ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5IS5maXJzdF92YWx1ZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zIGQtZmxleCBmbGV4LXJvdyBtdXRlZFwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPk9SPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJubm9uZW0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCJcbiAgICAgICAgICAgICAgZm9yPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmIGNvbD8ucXVlcnk/LmNvbmRpdGlvbiAhPT0gJ25vbmUnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfY29uZGl0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnZGF0ZScgfHwgY29sPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAndGV4dCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWNvbmQgVmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF92YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5hcHBseTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPnJlc2V0PC9kaXY+XG5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIGJvcmRlci10b3BcIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tbGlnaHQgYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZVNpZGVGaWx0ZXIoY29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNsZWFyPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwcHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseVNpZGVGaWx0ZXIoY29sKVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoY29sPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXG4gICAgICAgIFtjbGFzcy5wZS1ub25lXT1cIihjb2whPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTFweFwiPkFwcGx5PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBDZW50ciBPdmVybGF5IGZvciBzaG93aW5nIHRoZSBjaG9zZSBjb2x1bW5zIC0tPlxuXG48ZGl2ICpuZ0lmPVwic2hvd0NvbHVtblBhbmVsXCIgY2xhc3M9XCJjdXN0b20tbW9kYWwtb3ZlcmxheVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjdXN0b20tbW9kYWwtY29udGVudFwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGFsQ29sdW1uUGFubmVsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gVGhlIGV4aXN0aW5nIG5nLXRlbXBsYXRlIHlvdSBwcm92aWRlZCAtLT5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb2x1bW5QYW5uZWw+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tcGFuZWwtaGVhZGVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcHMtMyByb3VuZGVkLXRvcC0yIG1vZGEtaGVhZGVyXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiNDhcIlxuICAgID5cbiAgICAgIENob29zZSBDb2x1bW5zXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwiY2xvc2VNb2RhbENvbHVtblBhbmVsKClcIlxuICAgICAgICA+PHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwZS0zXCIgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBhY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXG4gICAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxBY2NvcmRpb25zKClcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtbnMuLi5cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hvc2VDb2x1bW5zU2VhcmNoXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8aHIgY2xhc3M9XCJtdC0wIG1iLTFcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cInB4LTIgb3ZlcmxheS1zY3JvbGxhYmxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNob3NlQ29sdW1uc1NlYXJjaCA6ICdoZWFkZXInO1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpZGVNZW51Um93R3JvdXBzPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIGQtbm9uZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIG1iLTRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+Um93IEdyb3Vwczwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImgtNTBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHgtMyBweS0yIGJvcmRlci1kYXNoZWQgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXG4gICAgICAgID5cbiAgICAgICAgICBEcmFnIGhlcmUgdG8gc2V0IHJvdyBHcm91cHNcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxociBjbGFzcz1cIm10LTRcIiAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3Bhbj5WYWx1ZXM8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLTUwIGQtZmxleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIERyYWcgaGVyZSBhZ2dyZWdhdGVcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tIERyYWcgUHJldmlldyBUZW1wbGF0ZSAtLT5cbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48bmctdGVtcGxhdGUgI2RyYWdQcmV2aWV3IGxldC1jb2w+XG4gIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxuICAgIDxkaXY+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIERyYWcgUGxhY2Vob2xkZXIgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2RyYWdQbGFjZWhvbGRlclxuICBsZXQtY29sXG4gIGxldC1pPVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxuICBsZXQtZHJhZ2dpbmdJbkdyb3VwQXJlYT1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuPlxuICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sLCBpbmRleDogaSwgc2VjdGlvbjogc2VjdGlvbiB9XG4gICAgICBcIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCI+TmV3IFBsYWNlaG9sZGVyPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRvcCBHcm91cCBSb3cgUGxhY2Vob2xkZXIgLS0+XG48bmctdGVtcGxhdGUgI3RvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXIgbGV0LWNvbCBsZXQtc2hvd0NoZXZyb249XCJzaG93Q2hldnJvblwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgdG9wLXJvdy1ncm91cGluZy1wbGFjZWhvbGRlclwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIChjbGljayk9XCJ1bmdyb3VwQ29sdW1uKGNvbClcIlxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInNob3dDaGV2cm9uXCIgc3R5bGU9XCJvcGFjaXR5OiAwLjY7IGZvbnQtc2l6ZTogMTRweFwiPlxuICAgIDxzcGFuXG4gICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1wiXG4gICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgID48L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNjaGlsZEhlYWRlclBsYWNlaG9sZGVyXG4gIGxldC1jb2xcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxuICBsZXQtaT1cImluZGV4XCJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvbnNcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXG4gICAgW2NsYXNzLmFjdGl2ZS1oZWFkZXJdPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDb2x1bW5JbmRpY2VzLmluY2x1ZGVzKGNvbC5pbmRleClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxuICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7IGFjdGl2ZUNvbCA9IG51bGxcIlxuICAgICAgICA+PHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW5cbiAgICAgID48L3NwYW4+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcbiAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiAxMDsgbGVmdDogMFwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dD5cbiAgPGRpdlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxuICAgIHN0eWxlPVwid2lkdGg6IDMyMHB4XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIExheW91dDwvaDY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUYWJsZUxheW91dFwiPiBcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbWItMyBkLWZsZXhcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImJ0bi1jaGVjayBsYXlvdXQtYnV0dG9uLWNoZWNrXCJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxuICAgICAgICBpZD1cInNtYWxsXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdzbWFsbCcpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwic21hbGxcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ3NtYWxsJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDhweFwiPjwvZGl2PlxuICAgICAgICBTbWFsbFxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxuICAgICAgICBuYW1lPVwibGF5b3V0U2l6ZVwiXG4gICAgICAgIGlkPVwibWVkaXVtXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbWVkaXVtJ1wiXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbWVkaXVtJylcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImJvcmRlciBteC0zIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbGF5b3V0LWJ1dHRvblwiXG4gICAgICAgIGZvcj1cIm1lZGl1bVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbWVkaXVtJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEycHhcIj48L2Rpdj5cbiAgICAgICAgTWVkaXVtXG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcbiAgICAgICAgaWQ9XCJsYXJnZVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbGFyZ2UnKVwiXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJ1wiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbGF5b3V0LWJ1dHRvblwiXG4gICAgICAgIGZvcj1cImxhcmdlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdsYXJnZScgPyAnIzAwMCcgOiAnIzcyNzI3MidcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWJveCBib3JkZXIgbWItMVwiIHN0eWxlPVwiaGVpZ2h0OiAxNnB4XCI+PC9kaXY+XG4gICAgICAgIExhcmdlXG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IHNlcGFyYXRvcnM8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPVwic2VwYXJhdG9yc1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuPlJvdyBzaGFkaW5nPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dTaGFkaW5nRW5hYmxlZFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTaGFkaW5nKClcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4+U2hvdyBTaWRlIE1lbnU8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dTaWRlTWVudVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD1cInJvd1NoYWRpbmdcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4+U2hvdyBGaWx0ZXIgUm93PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93RmlsdGVyUm93XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJsZVByZXNldD5cbiAgPGRpdlxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uICE9PSAnc2F2ZS1wcmVzZXQnXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXG4gID5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBQcmVzZXRzPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBTYXZlIFByZXNldCBCdXR0b24gd2l0aCBEcm9wZG93biAtLT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGlkPVwic2F2ZVByZXNldERyb3Bkb3duXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVTdWJBY3Rpb25zKCdzYXZlLXByZXNldCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gXCJTYXZlIHByZXNldFwiIDogXCJVcGRhdGUgUHJlc2V0XCIgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0UHJlc2V0VGFibGVcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHRhYmxlVmlldyB8IGZpbHRlciA6IHNlYXJjaFRleHRQcmVzZXRUYWJsZSA6ICduYW1lJyBhcyBmaWx0ZXJlZExpc3RcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPCEtLSBJZiBmaWx0ZXJlZExpc3QgZXhpc3RzIGFuZCBub25lIGlzIGRlZmF1bHQgLT4gc2hvdyBmYWxsYmFjayAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCIgcGItNSBvdmVyZmxvdy1hdXRvXCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAyNTBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgY2xlYXJBbGxGaWx0ZXJzKHRydWUpO1xuICAgICAgICAgICAgb3BlbkluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPSAnJztcbiAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgICAgICAgICAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gbnVsbFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5EZWZhdWx0IFZpZXc8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5DcmVhdGVkIGJ5IHN5c3RlbTwvc21hbGw+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmICFoYXNBbnlEZWZhdWx0VmlldygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxuICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICA+PC9zcGFuPiAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICpuZ0lmPVwidGFibGVGaWx0ZXJWaWV3SWRcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGUgbGlzdDogcmVuZGVyIGVhY2ggdGFibGUgZnJvbSBmaWx0ZXJlZExpc3QgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgdGFibGUgb2YgZmlsdGVyZWRMaXN0O1xuICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlUYWJsZVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIEl0ZW0gLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5JbmRleCA9IG51bGw7IGFjdGl2ZVRvcEJ1dHRvbiA9ICcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RGaWx0ZXIodGFibGUpOyBvcGVuSW5kZXggPSBudWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XG4gICAgICAgICAgICAgICAge3sgdGFibGU/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8IS0tIHt7dGFibGU/LmlzX3RlbXB9fSAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAodGFibGU/LmlzX3RlbXAgJiYgIXRlbXBfc3RhdGUuaWQpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPT0gdGFibGUuaWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlPy5pc19kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxuICAgICAgICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cInRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCIgW3RpdGxlXT1cInRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzPy5sZW5ndGggPiAyNVxuICAgICAgICAgICAgICA/ICh0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lcyB8IHNsaWNlOjA6MjUpICsgJy4uLidcbiAgICAgICAgICAgICAgOiB0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAoe3sgdGFibGU/LmNvbmZpZz8udG90YWxDb3VudCB9fSlcbiAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCIhdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj57eyB0YWJsZT8uY3JlYXRlZEF0IHwgZGF0ZSA6IFwiTU1NIGQsIHlcIiB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIih0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHwgdGVtcF9zdGF0ZS5pZCA9PSB0YWJsZS5pZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIiF0YWJsZT8uaXNfZGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1pY29uIG11dGVkLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5JbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9ob3Jpem9udGFsLWRvdHMuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIG1lbnUgLS0+XG4gICAgICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5JbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duLW1lbnUgcG9zaXRpb24tZml4ZWQgdG9wLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCIndW5zZXQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0V2lkdGggLSAyMDBcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogdW5zZXQ7IHJpZ2h0OiB1bnNldFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25QcmVzZXQodGFibGUsICdzZXRQcmVzZXQnKTsgdGVtcF9zdGF0ZS5pZCA9ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGFzIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIiAqbmdJZj1cIiF0YWJsZS5jb25maXJtRGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlLmNvbmZpcm1EZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29uZmlybS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMyBweS0yIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPuKAnHt7IHRhYmxlPy5uYW1lIH194oCdPC9iXG4gICAgICAgICAgICAgICAgICAgICAgICAgID4/XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlLmNvbmZpcm1EZWxldGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvblByZXNldCh0YWJsZSwgJ2RlbGV0ZVByZXNldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEl0ZW0gRW5kIEhlcmUgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcbiAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgcC0zIGJhZGdlIG10LTQgc2F2ZS1wcmVzZXQtZHJvcGRvd24gbXQtMVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwic2F2ZVByZXNldERyb3Bkb3duXCJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtMTRweCBtYi0yXCI+XG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZzLTE0cHggbWItMlwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDIwcHhcIj5cbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSW5wdXQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZXROYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsIGZzLTEycHggZnctYm9sZFwiXG4gICAgICAgID5QcmVzZXQgTmFtZTwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJlc2V0TmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2lzLWludmFsaWQnOlxuICAgICAgICAgICAgICBwcmVzZXROYW1lQ3RybC5pbnZhbGlkICYmXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBwcy0yXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJlc2V0RmlsdGVyXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXG4gICAgICAvPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtdC0xXCIgZm9yPVwic2F2ZUZpbHRlcnNcIj5cbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2F2ZSBCdXR0b24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCIgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZVByZXNldChwcmVzZXROYW1lQ3RybClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIiAqbmdJZj1cImlzVGFibGVQcmVzZXROb3RDaGFuZ2VkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcbiAgICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxuICAgICAgICAgID5VcGRhdGUgUHJlc2V0PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd0hpZGVDb2x1bW5zPlxuICA8ZGl2XG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxuICA+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LWRlY29yYXRpb24tbm9uZSBkLW5vbmVcIlxuICAgICAgICA+UmVzZXQ8L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtblwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBQcmVzZXQgTGlzdCAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXG4gICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvOyBzY3JvbGxiYXItd2lkdGg6IHRoaW5cIlxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAyMjBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdXRlZC10ZXh0IHNob3ctaGlkZS10YWJsZS1sYWJlbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW5cIj5cbiAgICAgICAgU2hvdyBpbiB0YWJsZVxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cImhpZGVfYWxsXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBmb3I9XCJoaWRlX2FsbFwiPlxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBJdGVtIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiB0b3BTaG93SGlkZUNvbHVtbnMgOiAnaGVhZGVyJztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpcC12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1ncmFwIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbCwgZmFsc2UpXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxuICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwidmlzaWJsZUNvbHVtbnMoKS5sZW5ndGggPD0gMiB8fCBjb2w/LmlzX2Fsd2F5c192aXNpYmxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5vcGFjaXR5LTUwXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8IGNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIlxuICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW4gJiYgaGFzQW55SW5WaXNpYmxlQ29sdW1uXCJcbiAgICAgID48L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICpuZ0lmPVwiaGFzQW55SW5WaXNpYmxlQ29sdW1uXCJcbiAgICAgID5cbiAgICAgICAgSGlkZSBpbiB0YWJsZVxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwic2hvd19hbGxcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XG4gICAgICAgICAgICAgIFNob3cvSGlkZSBBbGwgXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogdG9wU2hvd0hpZGVDb2x1bW5zIDogJ2hlYWRlcic7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbC5pc192aXNpYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2w/LnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjdXJzb3ItZ3JhcFwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjdXJzb3ItZ3JhcFwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlckNvbHVtbnMgbGV0LWNvbD1cImNvbHVtblwiPlxuICA8ZGl2XG4gICAgQHNsaWRlVG9nZ2xlXG4gICAgKm5nSWY9XCIhaXNGaWx0ZXJPcGVuICYmIGFjdGl2ZVRvcEJ1dHRvbiA9PSAnZmlsdGVyLWNvbHVtbnMnXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0IGZpbHRlci1jb2x1bW5zXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTIgcHgtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ2hlYWRlcic7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29sLmlzX3Zpc2libGUgJiZcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxuICAgICAgICAgICAgIWNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aCAmJiBjb2w/LnR5cGUgIT09ICdpbWFnZScgJiYgY29sLmlzX3NlYXJjaF9hYmxlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLTNweFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtY2FwaXRhbGl6ZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCI+XG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgIHwgdGl0bGVjYXNlICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRHJvcGRvd24gLS0+XG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cImlzRmlsdGVyT3BlbiAmJiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZHJvcGRvd24nIHx8IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdhcnJheSdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnMgcGItMlwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJweC0zIG15LTIgYm9yZGVyLWJlbG93IHB5LTEgcGItMiBtYi0zIGQtZmxleCBwcy0xXCI+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXIgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxuICAgICAgPjwvc3BhblxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfCB0aXRsZWNhc2UgIH19PC9iPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBib3JkZXIgcm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBweC0yIGZpbHRlci1zZXJhY2gtaW5wdFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkIG9mIHNlbGVjdGVkRmlsdGVyT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgbWUtMSBtYi0xIHRvcC1yb3ctZmlsdGVyLWRyb3Bkb3duIHRleHQtY2FwaXRhbGl6ZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKHNlbGVjdGVkKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGJvcmRlci0wIGZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duXCJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgY29sIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxuICAgICAgICAgICAgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gOiAndmFsdWUnOyB0cmFja0J5OiB0cmFja0J5SWQ7XG4gICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoY29sLmlkIHx8IGNvbC5faWQgfHwgY29sKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIoY29sKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZCB0ZXh0LWNhcGl0YWxpemVcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiIFtmb3JdPVwiaVwiPlxuICAgICAgICAgICAgICB7eyBjb2w/LnZhbHVlIHx8IGNvbD8ubmFtZSB8fCBjb2wgfCB0aXRsZWNhc2UgIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgcHgtMiBib3JkZXItdG9wXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tbGlnaHQgYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlc2V0RmlsdGVyQ2hhbmdlcygpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGb3IgVGV4dCBmaWVsZHMgYW5kIG51bWJlciBmaWVsZHMtLT5cblxuICA8ZGl2XG4gICAgQHNsaWRlVG9nZ2xlXG4gICAgKm5nSWY9XCJcbiAgICAgIGlzRmlsdGVyT3BlbiAmJlxuICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnIHx8XG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICd0aW1lJyB8fFxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScpXG4gICAgXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0IGZpbHRlci1jb2x1bW5zIHBiLTJcIlxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgPjwvc3BhblxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwb3NpdGlvbi1yZWxhdGl2ZSBwLTIgdGV4dC1maWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGN1c3RvbS1zZWxlY3QgYm9yZGVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJyB8fCBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZSdcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGZpcnN0IHZhbHVlXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgID8gJ3RleHQnXG4gICAgICAgICAgICAgIDogc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteS0zIGQtZmxleCBmbGV4LXJvd1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsQW5kXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbEFuZFwiXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgY29sLTQgbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbE9yXCI+T1I8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsTm9uZVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsTm9uZVwiXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZGl0aW9uICE9PSAnbm9uZScgJiYgZmlyc3RWYWx1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIG10LTNcIj5cbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gYm9yZGVyXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICA8IS0tIFNlY29uZCB2YWx1ZSBpbnB1dCAtLT5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcbiAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBzZWNvbmQgdmFsdWVcIlxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHM/LnNpemUgJiYgIWZpcnN0VmFsdWVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cIihjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHM/LnNpemUgPT09IDAgJiYgIWZpcnN0VmFsdWUpIHx8IChjb25kaXRpb24gIT09ICdub25lJyAmJiAhc2Vjb25kVmFsdWUpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTFcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCI+QXBwbHk8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEVkaXQgZHJvcGRvd24gaGVyZSAtLT5cbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxuICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLWVkaXRcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZnVsbFRleHRUZW1wbGF0ZVxuICBsZXQtcm93PVwicm93XCJcbiAgbGV0LWNvbD1cImNvbFwiXG4gIGxldC1pc0FycmF5PVwiaXNBcnJheVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZ1bGwtdGV4dC1ib3hcIlxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLyAyXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nKHJvdywgY29sKVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcbiAgICAgICAgY2xhc3M9XCJmdWxsLXRleHQtY29udGVudFwiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXG4gICAgICAgIChkYmxjbGljayk9XCJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxuICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0FycmF5XCI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7IHRyYWNrQnk6IHRyYWNrQnlJZDsgIGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnJvbGVOYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmZ1bGxfbmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIFwiLVwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZyhyb3csIGNvbClcIj5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAoZGJsY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXG4gICAgICAgIFwiXG4gICAgICAgICN0ZXh0TW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgcm93cz1cIjRcIlxuICAgICAgICAjdGV4dEFyZWFkSW5wdXRcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICByZXF1aXJlZFxuICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXG4gICAgICAgIGF1dG9mb2N1c1xuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnaXMtaW52YWxpZCc6IHRleHRNb2RlbC5pbnZhbGlkXG4gICAgICAgIH1cIlxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJweC0yIGQtZmxleCB3LTEwMCBjZWxsLWNvbnRlbnQgaW1hZ2UtcGxhY2Vob2xkZXJcIlxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgcm93Py5sb2dvIHx8XG4gICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XG4gICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlO1xuICAgICAgICBlbHNlIHBsYWNlaG9sZGVyXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LmxvZ28gfHwgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcbiAgICAgICAgICAgIHJvdz8ubG9nbyB8fFxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcIlxuICAgICAgICBjbGFzcz1cInBpY1wiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbd2lkdGhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgIHJvdz8ubG9nbyB8fFxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcbiAgICAgICAgICAgIHJvdz8ubG9nbyB8fFxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcbiAgICAgICAgICBcIlxuICAgICAgICAgIGFsdD1cImljb25cIlxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIDxkaXZcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcbiAgICAgICpuZ0lmPVwiZnVsbHNjcmVlbkltYWdlXCJcbiAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSBudWxsXCJcbiAgICA+XG4gICAgICA8aW1nIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCIgY2xhc3M9XCJmdWxsc2NyZWVuLWltZ1wiIC8+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcbiAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXG4gICAgICAgIFtjbGFzcy5hc3NldHMtcGljXT1cImdyaWRUeXBlID09ICdBc3NldHMnXCJcbiAgICAgID5cbiAgICAgICAge3sgZ2V0SW5pdGlhbHMocm93Py5mdWxsX25hbWUpIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBSaWdodCBDbGljayBNZW51ZSAtLT5cbjxkaXZcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXG4gIGNsYXNzPVwiY29udGV4dC1tZW51IHAtMlwiXG4gICpuZ0lmPVwiYWN0aW9uSGlkZSAmJiBhY3Rpb25zPy5sZW5ndGhcIlxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXG4gIFtjbGFzcy5zaG93XT1cImlzVmlzaWJsZVwiXG4gIGFwcGVuZFRvPVwiYm9keVwiXG4+XG4gIDx1bD5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGFjdGlvbiArICcuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHJpZ2h0LWNsaWNrLW1lbnUtaWNvbnMgbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgZnctNTAwXCI+e3sgYWN0aW9uIH19PC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cblxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cblxuPG5nLXRlbXBsYXRlICNuZXN0ZWRUYWJsZVRlbXBsYXRlIGxldC1yb3c+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wIGNlbnRlci1uZXN0ZWQtdGFibGUgdy0xMDBcIlxuICAgIHN0eWxlPVwidGFibGUtbGF5b3V0OiBmaXhlZCAhaW1wb3J0YW50XCJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcbiAgPlxuICAgIDx0aGVhZFxuICAgICAgI25lc3RlZEhlYWRlclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInJvdz8uZGV0YWlsLmNvbHVtbnNcIlxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcENvbHVtbigkZXZlbnQsIHJvdylcIlxuICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25OZXN0ZWRDb2xTb3J0KCRldmVudCwgcHJldmlld05lc3RlZENvbHMpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IHRyIGJvcmRlci1iZWxvd1wiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHJvdy5kZXRhaWwuY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICBjbGFzcz1cInB4LTQgdGhcIlxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gcG9zaXRpb24tcmVsYXRpdmUgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRTdWJTb3J0Q29sdW1uID09IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgKGNvbD8ub3JkZXJfYnkgPT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiByb3c/LmRldGFpbC5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90aGVhZD5cbiAgICA8ZGl2XG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICA+XG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgIFtpdGVtU2l6ZV09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwidmlld3BvcnRcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgIChyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggPCA1XG4gICAgICAgICAgICA/IG5lc3RlZFRhYmxlcm93SGVpZ2h0ICogcm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoICsgNDBcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcbiAgICAgICAgXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgZCBvZiByb3c/LmRldGFpbD8ucmVzdWx0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyPy5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBwcmV2aWV3TmVzdGVkQ29sczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaiA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplXCJcbiAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0IC0gMVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiY29sPy53aWR0aFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0ge3sgZFtjb2wuZmllbGRdIHx8IChjb2wuaXNfYW1vdW50ID8gMCA6IFwiLVwiKSB9fSAtLT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNjZWxsVGV4dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgY29sPy50eXBlID09PSAnZGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICA6IGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfHwgJy0nXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgIT09ICdpbWFnZSdcIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbFxuICAgICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBjb2wuaGVhZGVyID09PSAnQXJjaGl2ZWQgU3RhdHVzJ1xuICAgICAgICAgICAgICAgICAgICAgID8gKGdldENlbGxUaXRsZShkLCBjb2wpID09PSB0cnVlIHx8IGdldENlbGxUaXRsZShkLCBjb2wpID09PSAndHJ1ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnQXJjaGl2ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ1VuYXJjaGl2ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Q2VsbFRpdGxlKGQsIGNvbClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRUb3RhbEFtb3VudChjb2wpIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEltYWdlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93OiBkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXIgbGV0LXJvdz5cbiAgPHRhYmxlXG4gICAgY2xhc3M9XCJuZXN0ZWQtdGFibGUgdGFibGUgdGFibGUtc20gdy0xMDAgbWItMFwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcbiAgICAgICAgPyAobmVzdGVkVGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCA/PyAwKSArIDEyXG4gICAgICAgIDogKHRhc2tNYW5hZ2VtZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMClcbiAgICBcIlxuICA+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGhlYWRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0ciBkLWZsZXggYm9yZGVyLWJlbG93XCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgKm5nRm9yPVwibGV0IF8gb2YgWzEsIDIsIDMsIDQsIDVdXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGJvZHlcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0ciBib3JkZXItYmVsb3dcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IF8gb2Ygcm93Py5kZXRhaWw/LnJlc3VsdFwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgKm5nRm9yPVwibGV0IF9fIG9mIFsxLCAyLCAzLCA0LCA1XVwiIGNsYXNzPVwicHktMFwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuICA8L3RhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YXNrTWFuYWdlbWVudFRlbXBsYXRlIGxldC10YXNrRGV0YWlscz1cInRhc2tEZXRhaWxzXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInAtNFwiXG4gICAgI3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgW3N0eWxlLmZvbnRGYWltbHldPVwiZm9udEZhaW1seVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5EZXNjcmlwdGlvbjwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZmlyc3REaXZcIj5cbiAgICAgICAge3sgdGFza0RldGFpbHMuZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPHBcbiAgICAgICAgICBbc3R5bGUuZm9udFNpemVdPVwiYm9keVRleHRGb250c1NpemVcIlxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2IHRhc2tEZXNjcmlwdGlvbiBwZS00XCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KHRhc2tEZXRhaWxzPy5lZGl0b3JfZGVzY3JpcHRpb24pXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+QXR0YWNobWVudHM8L2Rpdj5cbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIE5vIEF0dGFjaG1lbnRzIGZvdW5kXG4gICAgICAgIDwvaDU+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInRhc2tEZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBkLWZsZXggZmxleC13cmFwXCJcbiAgICAgICAgICBzdHlsZT1cImdhcDogMTBweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dGFjaGVtZW50IG9mIHRhc2tEZXRhaWxzPy5hdHRhY2htZW50czsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwic3ltYm9sLWxhYmVsIGZzLTIgZnctc2VtaWJvbGQgdGV4dC1zdWNjZXNzIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRhc2tEZXRhaWxzPy5hdHRhY2htZW50c19uYW1lW2ldIHx8ICdBdHRhY2htZW50JyB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEF0dGNobWVudChhdHRhY2hlbWVudClcIlxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXG4gICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGF0dGFjaGVtZW50KSArXG4gICAgICAgICAgICAgICAgJy5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XG4gICAgICAgICAgQ29tbWVudHMgKHt7IHRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoIH19KVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggPT0gMFwiPk5vIENvbW1lbnRzIGZvdW5kPC9oNT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoXCIgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIHRhc2tEZXRhaWxzLmNvbW1lbnRzOyB0cmFja0J5OiB0cmFja0J5SWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIHNyYz1cInt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nbyB9fVwiXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwhLS0gPGFwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiIHRpdGxlPVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiIFtuYW1lXT1cImNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWVcIj48L2FwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyPiAtLT5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50Py5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudC1jb250ZW50IGZvckNvbW1lbnRJbWdcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|