vcomply-workflow-engine 6.6.1 → 6.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +23 -11
- package/fesm2022/vcomply-workflow-engine.mjs +22 -10
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -399,7 +399,16 @@ export class WorkflowComplianceComponent {
|
|
|
399
399
|
this.unSubscribeProgram = new Subject();
|
|
400
400
|
this.customFields = [];
|
|
401
401
|
this.selectedPrograms = {};
|
|
402
|
-
this.
|
|
402
|
+
this.getOrgUserInfo();
|
|
403
|
+
}
|
|
404
|
+
ngOnInit() {
|
|
405
|
+
this.setFeatureFlags();
|
|
406
|
+
this.getInitialData();
|
|
407
|
+
this.populateRCList();
|
|
408
|
+
this.pickerChanged.emit(false);
|
|
409
|
+
}
|
|
410
|
+
getOrgUserInfo() {
|
|
411
|
+
this.loader = true;
|
|
403
412
|
this.organizationCommonService?.getOrgUserInfo()?.subscribe({
|
|
404
413
|
next: (res) => {
|
|
405
414
|
const complianceSubmodule = res?.roleActions[res?.roleActions?.findIndex((ele) => ele?.moduleName === 'compliance')]?.subModule;
|
|
@@ -415,15 +424,10 @@ export class WorkflowComplianceComponent {
|
|
|
415
424
|
this.hiddenList.push('PROGRAM');
|
|
416
425
|
this.getCategoryList();
|
|
417
426
|
}
|
|
427
|
+
this.loader = false;
|
|
418
428
|
},
|
|
419
429
|
});
|
|
420
430
|
}
|
|
421
|
-
ngOnInit() {
|
|
422
|
-
this.setFeatureFlags();
|
|
423
|
-
this.pickerChanged.emit(false);
|
|
424
|
-
this.getInitialData();
|
|
425
|
-
this.populateRCList();
|
|
426
|
-
}
|
|
427
431
|
populateRCList() {
|
|
428
432
|
if (this.openedFrom === 'RISK_TREATMENT' && this.mode === 'CREATE') {
|
|
429
433
|
this.getRCList();
|
|
@@ -444,6 +448,7 @@ export class WorkflowComplianceComponent {
|
|
|
444
448
|
this.checkWhetherAllListsLoaded();
|
|
445
449
|
this.getOrganizationDetails();
|
|
446
450
|
this.getUserDetails();
|
|
451
|
+
this.checkCustomFields();
|
|
447
452
|
this.shortMonth = this.frequencyService.monthArray.map((month) => month.substring(0, 3));
|
|
448
453
|
if (this.openedFrom === 'RISK_TREATMENT') {
|
|
449
454
|
this.getRCDetailsinRiskTreatment();
|
|
@@ -466,16 +471,19 @@ export class WorkflowComplianceComponent {
|
|
|
466
471
|
}
|
|
467
472
|
checkCustomFields() {
|
|
468
473
|
if (!this.customFields?.length) {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
474
|
+
if (!this.hiddenList.includes('CUSTOM_FIELDS')) {
|
|
475
|
+
this.hiddenList.push('CUSTOM_FIELDS');
|
|
476
|
+
}
|
|
472
477
|
}
|
|
478
|
+
this.hideElementsFromMoreOptions.emit(this.hiddenList);
|
|
473
479
|
}
|
|
474
480
|
getRCDetailsinRiskTreatment() {
|
|
475
481
|
this.responsibilityForm.rc = this.setList(this.responsibilityCentersList, [this.selectedRC], 'item_id');
|
|
476
482
|
this.moreOptions.RC = true;
|
|
477
483
|
}
|
|
478
484
|
getOrgDetails() {
|
|
485
|
+
this.uiKitService.isLoader = true;
|
|
486
|
+
this.entrustLoader = true;
|
|
479
487
|
this.organizationCommonService?.getOrgDetailsInfo()?.subscribe({
|
|
480
488
|
next: (res) => {
|
|
481
489
|
this.isRiskEnable = res?.enable_riskclass ? true : false;
|
|
@@ -483,9 +491,13 @@ export class WorkflowComplianceComponent {
|
|
|
483
491
|
this.hiddenList.push('RISK_CLASSIFICATION');
|
|
484
492
|
this.hideElementsFromMoreOptions.emit(this.hiddenList);
|
|
485
493
|
}
|
|
494
|
+
this.uiKitService.isLoader = false;
|
|
495
|
+
this.entrustLoader = false;
|
|
486
496
|
},
|
|
487
497
|
error: (err) => {
|
|
488
498
|
console.error(err);
|
|
499
|
+
this.uiKitService.isLoader = false;
|
|
500
|
+
this.entrustLoader = false;
|
|
489
501
|
},
|
|
490
502
|
});
|
|
491
503
|
}
|
|
@@ -4153,4 +4165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4153
4165
|
type: ViewChild,
|
|
4154
4166
|
args: ['customItemTemplate', { static: true }]
|
|
4155
4167
|
}] } });
|
|
4156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0saURBQWlELENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVM5RCxNQUFNLE9BQU8sMkJBQTJCO0lBZ0R0QyxJQUF5QixVQUFVLENBQUMsZUFBd0I7UUFDMUQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFn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QUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS3dCLGtCQUFrQjtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBV2Qsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQTJSWSxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU07Z0JBR1IscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBdXJJNkMsa0JBQWtCO3NCQUFwRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2dyYW1zU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR1JDX1RZUEVfQVJSQVksXG4gIE9USEVSX0dSQ19DQVJELFxufSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfMjRIUiwgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wbGlhbmNlQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9jb21wbGlhbmNlLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeU9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVzcG9uc2liaWx0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdC9pbnRlcmZhY2VzL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0L2ludGVyZmFjZXMvZGF0YS1zb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQUk9HUkFNX0xJU1RfQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgTU9OVEhfTkFNRVMgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuY29uc3RhbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctY29tcGxpYW5jZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiBEZWZpbmluZyB0aGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eUlkOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBmcmFtZXdvcmtEZXRhaWxzOiBBcnJheTxhbnk+ID0gW107XG4gIEBJbnB1dCgpIGlzRW50cnVzdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgYXNzZXNzbWVudERldGFpbHM6IGFueTtcbiAgQElucHV0KCkgaXNEdXBsaWNhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBhbGxHcm91cEFzc2lnbmVlOiBib29sZWFuID0gdHJ1ZTtcbiAgYXNzaWdub3JJZDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIHJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBvdmVyc2VlcklkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZVJhZGlvQXNzaWduZWU6IGFueVtdID0gW107XG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICcnO1xuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1xuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxuICAgIGJ5U3RhdHVzOiB7IHR5cGU6IFtdLCBzdWJUeXBlOiBbXSB9LFxuICAgIGZpbHRlck9iamVjdDoge1xuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICB9LFxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcbiAgICBzdGF0dXM6ICcnLFxuICB9O1xuICBpc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBncmNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIGdyY0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvdGhlckdSQ0NhcmQ6IGFueSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcbiAgc2VsZWN0ZWRHUkNUYWI6IG51bWJlciA9IDA7XG4gIGdyY1RhYkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBncmNTZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBHUkNfVFlQRV9BUlJBWSA9IEdSQ19UWVBFX0FSUkFZO1xuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XG4gICAgYXNzZXRzOiBbXSxcbiAgICBwcm9jZXNzZXM6IFtdLFxuICAgIHZlbmRvcnM6IFtdLFxuICAgIGludmVudG9yeTogW10sXG4gIH07XG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueVtdID0gW107XG4gIHByb2dyYW1MaXN0VXJsID0gUFJPR1JBTV9MSVNUX0FQSTtcblxuICBASW5wdXQoJ2Nsb3NlT25Fc2MnKSBzZXQgY2xvc2VPbkVzYyhlc2NhcGVDb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICBpZiAoZXNjYXBlQ29uZGl0aW9uKSB7XG4gICAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgb3JnRGV0YWlsczogYW55O1xuXG4gIHVybCA9XG4gICAgJ3E9e1wiYnlSZXNwb25zaWJpbGl0aWVzXCI6e1widHlwZVwiOltcInJlc3BvbnNpYmlsaXRpZXNfaW5fcXVldWVcIl0sXCJzdWJUeXBlXCI6W1wiQ0NcIl19LFwiYnlTdGF0dXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXX0sXCJmaWx0ZXJPYmplY3RcIjp7XCJyZXNwb25zaWJpbGl0eUNlbnRlclwiOltdLFwiZW50cnVzdGVkQnlcIjpbXSxcImVudHJ1c3RlZFRvXCI6W10sXCJyaXNrSWRzXCI6W10sXCJyZXNwb25zaWJpbGl0eUNhdGVnb3J5XCI6W119LFwidGltZVBlcmlvZERldGFpbHNcIjp7XCJ0eXBlXCI6XCJcIixcInNlbGVjdGVkUGVyaW9kXCI6XCJcIixcInNlbGVjdGVkWWVhclwiOlwiXCJ9LFwic3RhdHVzXCI6XCJcIn0nO1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlc2V0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2hlY2twb2ludENvdW50VXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJjU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG9wZW5lZEZyb20hOiBhbnk7IC8vd2hlbiBvcGVuZWQgZnJvbSByaXNrIHRyZWF0bWVudCBpdCB3aWxsIGJlICdSSVNLX1RSRUFUTUVOVCdcbiAgQElucHV0KCkgc2VsZWN0ZWRSQzogbnVtYmVyID0gMDsgLy8gNC01IGRpZ2l0IGlkIG9mIHNlbGVjdGVkIHJjIGJ5IGRlZmF1bHQgd2hlbiBvcGVuZWQgZnJvbSByaXNrIHRyZWF0bWVudFxuICAvLyBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIHNlbGVjdGVkUmV2aWV3ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ3NlbGVjdGVkUHJvZ3JhbScpIHNldCBzZXRTZWxlY3RlZFByb2dyYW0ocHJvZ3JhbTogYW55KSB7XG4gICAgaWYgKHByb2dyYW0gJiYgT2JqZWN0LmtleXMocHJvZ3JhbSk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSA9IFtdO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbSA9IFtdO1xuICAgICAgLy8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbS5wdXNoKHByb2dyYW0pO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbS5wdXNoKHByb2dyYW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qIENyZWF0aW5nIGFuIGV2ZW50IGVtaXR0ZXIuICovXG4gIEBPdXRwdXQoKSBvblJlbW92aW5nQ2hlY2twb2ludDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpc0Fzc2Vzc21lbnREaXNhYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFzc2lnbmVlVHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gaXQgd2lsbCBlbWl0IHdoZW4gYXNzaWduZWUgdHlwZSBjaGFuZ2VcbiAgQE91dHB1dCgpIG9uUmV2aWV3ZXJUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBpdCB3aWxsIGVtaXQgd2hlbiByZXZpZXdlciB0eXBlIGNoYW5nZVxuXG4gIGVudHJ1c3RMb2FkZXIgPSBmYWxzZTtcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHknLFxuICB9O1xuICBwcm9ncmFtUGVvcGxlTGlzdDogYW55ID0ge1xuICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgIHJldmlld2Vyc0xpc3Q6IFtdLFxuICAgIG92ZXJzZWVyc0xpc3Q6IFtdLFxuICB9O1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIGVkaXREZXRhaWxzITogYW55O1xuICBzbWlsZXlNZXNzYWdlID0gYERvbmUhYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7XG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgY2xhc3M6ICd3aGl0ZS1idG4nLFxuICAgICAgaWQ6ICdhZGRNb3JlJyxcbiAgICB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXcnIH0sXG4gIF07XG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xuICBhc3NpZ25vcnNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGFzc2lnbmVlc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBzZWxlY3RlZEZyYW1ld29ya1ZhbHVlcyE6IGFueTtcbiAgaGFzUmV2aWV3ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyB1c2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbm9yc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbmVlc0xpc3Q6IGFueVtdID0gW107XG4gIHJldmlld2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGRpc2FibGVBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG4gIHJldmlld2VyTWVtYmVySWRzTGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBPdmVyc2Vlckxpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwUmV2aWV3ZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cEFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYWxsVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBiZWhhbGZPZlVzZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdDogYW55W10gPSBbXTtcbiAgYWxsQ2F0ZWdvcmllczogYW55W10gPSBbXTtcbiAgYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICBPcmdHcm91cDogYW55W10gPSBbXTtcbiAgYWRtaW5zTGlzdDogYW55W10gPSBbXTtcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55W10gPSBbXTtcbiAgY2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTogTnVtYmVyID0gMTtcblxuICByZXNwb25zaWJpbGl0eUZvcm06IGFueSA9IHtcbiAgICBhc3NpZ25vcnM6IHtcbiAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiBmYWxzZSxcbiAgICB9LFxuICAgIGFzc2lnbmVlR3JvdXBzOiB7XG4gICAgICB3aG9DYW5Db21wbGV0ZTogJ0FOWU9ORScsXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIGFzc2lnbmVlczoge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTllfT05FJyxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgYWxsb3dFZGl0RHVlRGF0ZTogZmFsc2UsXG4gICAgZnJlcXVlbmN5OiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgb2JqZWN0aXZlOiAnJyxcbiAgICByYzogW10sXG4gICAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOiAxLFxuICAgIGNhdGVnb3J5OiBbXSxcbiAgICBwcm9ncmFtOiBbXSxcbiAgICBwcm9ncmFtX3NlbGVjdGVkX2lkczogW10sXG4gICAgY2hlY2twb2ludEluc3RydWN0aW9uOiAnJyxcbiAgICBjdXN0b21UYWdzOiBbXSxcbiAgICBjaGVja3BvaW50czogW10sXG4gICAgcmV2aWV3ZXJzOiB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOiAyLFxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgZ3JvdXBSZXZpZXdlcnM6IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBvdmVyc2VlcnM6IHtcbiAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBvdmVyc2VlcnNHcm91cHM6IHtcbiAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xuICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxuICAgICAgZm9ybWF0TGlua3M6IFtdLFxuICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXG4gICAgcmlza0NsYXNzOiAnbG93JyxcbiAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxuICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgc2FtcGxlOiA1LFxuICAgICAgcGVyY2VudGFnZTogMzAsXG4gICAgICBmcmVxdWVuY3lfcGF0dGVybjogJzF+MH4zfjEnLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IERFRkFVTFRfMjRIUixcbiAgICB9LFxuICAgIGFzc2Vzc21lbnQ6IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAnJyxcbiAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgIH0sXG4gICAgbmV3X2NoZWNrcG9pbnRzOiB7fSxcbiAgICBsaW5rZWRQcm9ncmFtOiBbXSxcbiAgICBzZWxlY3RlZEdSQ09iamVjdHM6IFtdLFxuICAgIGN1c3RvbUZpZWxkczogW10sXG4gIH07XG4gIG1vcmVPcHRpb25zOiBhbnkgPSB7XG4gICAgT0JKRUNUSVZFOiBmYWxzZSxcbiAgICBSQzogZmFsc2UsXG4gICAgQ0FURUdPUlk6IGZhbHNlLFxuICAgIFBST0dSQU06IGZhbHNlLFxuICAgIEZPUk1BVEVfRVZJREVOQ0U6IGZhbHNlLFxuICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcbiAgICBBU1NFU1NNRU5UOiBmYWxzZSxcbiAgICBSSVNLX0NMQVNTSUZJQ0FUSU9OOiBmYWxzZSxcbiAgICBSRVZJRVdFUjogZmFsc2UsXG4gICAgT1ZFUlNFRVI6IGZhbHNlLFxuICAgIEFTU1VSQU5DRTogZmFsc2UsXG4gICAgQVBQUzogZmFsc2UsXG4gICAgUkVRVUlSRVNfQVVESVQ6IGZhbHNlLFxuICAgIENIRUNLUE9JTlRTX05FVzogZmFsc2UsXG4gICAgR1JDX09CSkVDVFM6IGZhbHNlLFxuICAgIENVU1RPTV9GSUVMRFM6IGZhbHNlLFxuICB9O1xuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gW1xuICAgICdhc3N1cmFuY2UnLFxuICAgICdmcmFtZXdvcmsnLFxuICAgICdhc3NpZ25vcnMnLFxuICAgICdhc3NpZ25lZXMnLFxuICAgICdjYXRlZ29yeScsXG4gICAgJ3Byb2dyYW0nLFxuICAgICdyYycsXG4gICAgJ2NoZWNrcG9pbnRzJyxcbiAgICAnZnJlcXVlbmN5JyxcbiAgICAncmV2aWV3ZXInLFxuICAgICdyZXZpZXdlckZyZXF1ZW5jeScsXG4gICAgJ292ZXJzZWVyJyxcbiAgICAnb3ZlcnNlZXJOb3RpZnknLFxuICAgICdyaXNrQ2FsY3VsYXRvcicsXG4gICAgJ2lzQXNzZXNzbWVudCcsXG4gICAgJ3JlcXVpcmVzX2F1ZGl0JyxcbiAgICAnY2hlY2twb2ludHMtbmV3JyxcbiAgICAnR1JDX09CSkVDVFMnLFxuICAgICdDVVNUT01fRklFTERTJyxcbiAgXTtcblxuICBmb2N1cyA9IHtcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBmYWxzZSxcbiAgICBvYmplY3RpdmU6IGZhbHNlLFxuICB9O1xuXG4gIGNhdGVnb3JpZXM6IGFueSA9IHtcbiAgICByZWd1bGF0aW9uczoge1xuICAgICAgbGlzdDogW10sXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxuICAgIH0sXG4gICAgc3RhbmRhcmRzOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBpbnRlcm5hbENvbnRyb2xzOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBvdGhlcnM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICB9O1xuXG4gIGFsbFByb2dyYW1zOiBhbnlbXSA9IFtdO1xuXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMb3cnLCB2YWx1ZTogJ2xvdycsIGNsYXNzOiAnbG93JyB9LFxuICAgIHsgbmFtZTogJ0xvdy1NZWRpdW0nLCB2YWx1ZTogJ2xvd19tZWRpdW0nLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogJ21lZGl1bV9oaWdoJywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6ICdoaWdoJywgY2xhc3M6ICdoaWdoJyB9LFxuICBdO1xuXG4gIGFzc2lnbm9yTW9kZSA9ICdjaGVja2JveCc7XG4gIHJjTW9kZSA9ICdjaGVja2JveCc7XG4gIGludmFsaWRUeXBlID0gJyc7XG4gIHJlc3BvbnNpYmlsaXR5UGF5bG9hZCE6IGFueTtcbiAgYXNzaWduZWVSYWRpb1NlbGVjdCA9IGZhbHNlO1xuICBwcm9ncmFtc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLy8gZnJlcXVlbmN5IHZhcmlhYmxlIGRlY2xhcmF0aW9uXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgZmFpbGVkVGltZTogJycsXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiB7fSxcbiAgfTtcblxuICBmcmVxdWVuY3lPYmplY3Q6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwgPSBudWxsO1xuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdIb3cgb2Z0ZW4gZG9lcyB0aGUgcmVzcG9uc2liaWxpdHkgb2NjdXI/JztcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBpc0VkaXRXaGF0OiBCb29sZWFuID0gdHJ1ZTtcbiAgaXNGcmFtZXdvcmtBdmFpbGFibGUgPSAxO1xuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xuXG4gIGFzc3VyYW5jZUZsYWchOiBhbnk7XG4gIHJpc2tDbGFzc2lmaWNhdGlvbkZsYWchOiBhbnk7XG4gIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XG4gIHN1YnNjcmlwdGlvbkRldGFpbHMhOiBhbnk7XG4gIGlzUmlza0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzRHVwbGljYXRlRW50cnVzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBhdWRpdFRpbWU6IHN0cmluZyA9IERFRkFVTFRfVElNRTtcbiAgc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWU6IG51bWJlciA9IDI7XG4gIHNhbXBsZVZhbHVlOiBhbnk7XG4gIHNhbXBsZVBlcmNlbnRhZ2U6IGFueTtcbiAgc2VsZWN0ZWRTYW1wbGUhOiBudW1iZXI7XG4gIGlzU2FtcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBDaGVja1ZhbHVlOiBudW1iZXIgPSAtMTtcbiAgaXNBc3Nlc3NtZW50OiBib29sZWFuID0gZmFsc2U7XG4gIG1hbmFnZVBlcm1pc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2hlY2twb2ludENvdW50OiBudW1iZXIgPSAwO1xuICByb2xlQmFzZWRQZXJtaXNzaW9ucyE6IGFueTtcbiAgaXNHcm91cEFzc2lnbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHJlc3BvbnNpYmlsaXR5RGF0YSE6IGFueTtcbiAgb3JpZ2luYWxBc3NpZ25lZSE6IGFueTtcbiAgdXNlckxpc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXNzaWdub3JzTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICByYXdSZXNwb25zaWJpbGl0eTogYW55O1xuICBvdGhlckdSQ1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgYWxsb3dFZGl0RHVlRGF0ZUZlYXR1cmVGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGFsbFByb2dhbVNlbGVjdGVkOiBhbnlbXSA9IFtdO1xuICBvbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eTogYW55O1xuICBjdXN0b21GaWVsZHNTZWxlY3RlZDogc3RyaW5nID0gJysgQWRkIEN1c3RvbSBGaWVsZHMnO1xuXG5cbiAgQFZpZXdDaGlsZCgnd2hhdCcpIHdoYXRJbnB1dCE6IEVsZW1lbnRSZWY7XG4gIHVuU3Vic2NyaWJlUHJvZ3JhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIGN1c3RvbUZpZWxkczogYW55W10gPSBbXG4gIF1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb246IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSxcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Db21tb25TZXJ2aWNlOiBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZSxcblxuICApIHtcbiAgICB0aGlzLmNoZWNrQ3VzdG9tRmllbGRzKCk7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdVc2VySW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBsaWFuY2VTdWJtb2R1bGUgPVxuICAgICAgICAgIHJlcz8ucm9sZUFjdGlvbnNbXG4gICAgICAgICAgICByZXM/LnJvbGVBY3Rpb25zPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tb2R1bGVOYW1lID09PSAnY29tcGxpYW5jZSdcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdPy5zdWJNb2R1bGU7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID1cbiAgICAgICAgICBjb21wbGlhbmNlU3VibW9kdWxlW1xuICAgICAgICAgICAgY29tcGxpYW5jZVN1Ym1vZHVsZT8uZmluZEluZGV4KFxuICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uc3ViTW9kdWxlTmFtZSA9PT0gJ1Byb2dyYW1zJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIF0/LnBlcm1pc3Npb25zO1xuICAgICAgICB0aGlzLm1hbmFnZVBlcm1pc3Npb24gPSBwZXJtaXNzaW9uc1tcbiAgICAgICAgICBwZXJtaXNzaW9ucz8uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlPy5uYW1lID09PSAnbWFuYWdlIHByb2dyYW1zJylcbiAgICAgICAgXT8uZW5hYmxlXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubWFuYWdlUGVybWlzc2lvbikge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDQVRFR09SWScpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdQUk9HUkFNJyk7XG4gICAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUxpc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZ2V0SW5pdGlhbERhdGEoKTtcbiAgICB0aGlzLnBvcHVsYXRlUkNMaXN0KCk7XG4gIH1cblxuICBwb3B1bGF0ZVJDTGlzdCgpIHtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmIHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMuZ2V0UkNMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmVhdHVyZUZsYWdzKCkge1xuICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfZ3JvdXBzJ1xuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZCA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X3NpbXBsaWZpY2F0aW9uJ1xuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X3JjX2xpbmsnXG4gICAgKTtcbiAgICB0aGlzLmFsbG93RWRpdER1ZURhdGVGZWF0dXJlRmxhZyA9XG4gICAgICB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZWRpdF9kdWVfZGF0ZScpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbERhdGEoKSB7XG4gICAgdGhpcy5pc0R1cGxpY2F0ZSA9IHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzPy5kdXBsaWNhdGUgPz8gZmFsc2U7XG4gICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0FTU0VTU01FTlQnKTtcbiAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQVNTVVJBTkNFJyk7XG4gICAgdGhpcy5nZXRBc3NpZ25lZXNMaXN0KCk7XG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgIHRoaXMuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxuICAgICAgbW9udGguc3Vic3RyaW5nKDAsIDMpXG4gICAgKTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICB0aGlzLmdldFJDRGV0YWlsc2luUmlza1RyZWF0bWVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcbiAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlci51aWQ7XG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRPcmdEZXRhaWxzKCk7XG4gICAgdGhpcy5nZXRTdWJzY3JpcHRpb25EZXRhaWwoKTtcbiAgICB0aGlzLnNldFJlc3BvbnNpYmlsaXR5TmFtZSgpO1xuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgfVxuXG4gIGNoZWNrQ3VzdG9tRmllbGRzKCkge1xuICAgIGlmICghdGhpcy5jdXN0b21GaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIGN1c3RvbSBmaWVsZHMnKTtcbiAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDVVNUT01fRklFTERTJyk7XG4gICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG5cbiAgICB9XG4gIH1cblxuICBnZXRSQ0RldGFpbHNpblJpc2tUcmVhdG1lbnQoKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICBbdGhpcy5zZWxlY3RlZFJDXSxcbiAgICAgICdpdGVtX2lkJ1xuICAgICk7XG4gICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XG4gIH1cblxuICBnZXRPcmdEZXRhaWxzKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmlza0VuYWJsZSA9IHJlcz8uZW5hYmxlX3Jpc2tjbGFzcyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3Vic2NyaXB0aW9uRGV0YWlsKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0U3Vic2NyaXB0aW9uRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgPSByZXM7XG4gICAgICAgIHRoaXMuaGlkZU9wdGlvbkZyb21Nb3JlT3B0aW9ucygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgaGlkZU9wdGlvbkZyb21Nb3JlT3B0aW9ucygpIHtcbiAgICBjb25zdCB2aXNpYmxlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzWzBdPy5hc3Nlc3NtZW50X2ZsYWcpIHtcbiAgICAgIHZpc2libGVPcHRpb25zLnB1c2goJ0FTU0VTU01FTlQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzWzBdPy5hc3N1cmFuY2VfZmxhZykge1xuICAgICAgdmlzaWJsZU9wdGlvbnMucHVzaCgnQVNTVVJBTkNFJyk7XG4gICAgfVxuXG4gICAgdGhpcy5oaWRkZW5MaXN0ID0gdGhpcy5oaWRkZW5MaXN0Py5maWx0ZXIoXG4gICAgICAoZWxlKSA9PiAhdmlzaWJsZU9wdGlvbnMuaW5jbHVkZXMoZWxlKVxuICAgICk7XG4gICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xuICB9XG5cbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzPy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzLW5ldyc6XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDVVNUT01fRklFTERTJzpcbiAgICAgICAgdGhpcy5zZXRDdXN0b21GaWVsZHMoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21GaWVsZHMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VzdG9tRmllbGRzU2VsZWN0ZWQgPSAnKyBBZGQgQ3VzdG9tIEZpZWxkcyc7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tRmllbGRzLnB1c2goZXZlbnQpO1xuICAgIHRoaXMuY3VzdG9tRmllbGRzID0gdGhpcy5jdXN0b21GaWVsZHMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLmlkICE9PSBldmVudC5pZCk7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xuXG4gIH1cblxuICBzZXRSZXNwb25zaWJpbGl0eU5hbWUoKSB7XG4gICAgaWYgKHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSA9PT0gJ2NvbXBsaWFuY2VfYXVkaXQnKSB7XG4gICAgICBjb25zdCBhc3Nlc3NtZW50RGF0YSA9IHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgdmFsdWU6ICdBdWRpdDogJyArIHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBhc3Nlc3NtZW50X2lkOiB0aGlzLmFzc2Vzc21lbnREZXRhaWxzLmFpZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlbMF0/Ll9pZCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0QXNzZXNzbWVudERhdGEoW3RoaXMuYXNzZXNzbWVudERldGFpbHNdLCBwYXlsb2FkLCAnYXNzZXNzbWVudCcpO1xuXG4gICAgICB0aGlzLndoYXRDaGFuZ2VkKGFzc2Vzc21lbnREYXRhKTtcbiAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDSEVDS1BPSU5UUycpO1xuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTX05FVycpO1xuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xuICAgIH1cbiAgfVxuXG4gIHdoYXRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCkgIT09ICcnKSB7XG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aGF0Jykge1xuICAgICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFjdGl2ZURlc2VsZWN0b3IoKSB7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgICB0aGlzLm1vcmVPcHRpb25zW2V2ZW50LmNvZGVdID0gZXZlbnQuY2hlY2tlZDtcbiAgfVxuXG4gIG9uUmNUeXBlQ2hhbmdlKHNlbGVjdGVkVHlwZTogTnVtYmVyKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPSBzZWxlY3RlZFR5cGUgPz8gMTtcbiAgfVxuXG4gIGdldFJDTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XG4gICAgfVxuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8ocGFyYW1zKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAvLyBOb3JtYWxpc2UgUkMgbGlzdCBzdHJ1Y3R1cmUgc28gVUkgY29tcG9uZW50cyBjYW4gcmVseSBvbiBpdGVtX2lkIC8gaXRlbV9uYW1lXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IEFycmF5LmlzQXJyYXkocmVzKVxuICAgICAgICAgID8gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgaXRlbV9uYW1lIC0gcHJpb3JpdGl6ZSBleGlzdGluZyBpdGVtX25hbWUsIHRoZW4gcmNfbmFtZVxuICAgICAgICAgICAgbGV0IGl0ZW1OYW1lID0gaXRlbT8uaXRlbV9uYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWl0ZW1OYW1lIHx8IGl0ZW1OYW1lID09PSAnJykge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtPy5yY19uYW1lKSAmJiBpdGVtLnJjX25hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgZW1wdHkgc3RyaW5ncyBhbmQgam9pbiBhcnJheSBlbGVtZW50cyB3aXRoICcgLyAnIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUmNOYW1lID0gaXRlbS5yY19uYW1lLmZpbHRlcigobmFtZTogYW55KSA9PiBuYW1lICYmIG5hbWUudHJpbSgpICE9PSAnJyk7XG4gICAgICAgICAgICAgICAgaXRlbU5hbWUgPSBmaWx0ZXJlZFJjTmFtZS5qb2luKCcgLyAnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5yY19uYW1lICYmIHR5cGVvZiBpdGVtLnJjX25hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHJjX25hbWUgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgaXRlbU5hbWUgPSBpdGVtLnJjX25hbWU7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpdGVtPy5pdGVtX25hbWUpICYmIGl0ZW0uaXRlbV9uYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjazogaWYgaXRlbV9uYW1lIGlzIGFuIGFycmF5LCBmaWx0ZXIgYW5kIGpvaW4gaXRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1OYW1lID0gaXRlbS5pdGVtX25hbWUuZmlsdGVyKChuYW1lOiBhbnkpID0+IG5hbWUgJiYgbmFtZS50cmltKCkgIT09ICcnKTtcbiAgICAgICAgICAgICAgICBpdGVtTmFtZSA9IGZpbHRlcmVkSXRlbU5hbWUuam9pbignIC8gJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIG5hbWUgLSByZW1vdmUgYW55IGV4dHJhIHNwYWNlcywgdHJpbSwgYW5kIGVuc3VyZSBpdCdzIGEgc3RyaW5nXG4gICAgICAgICAgICBpZiAoaXRlbU5hbWUpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpdGVtTmFtZSA9IGl0ZW1OYW1lLnRyaW0oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIHN0cmluZyBpZiBpdCdzIG5vdCBhbHJlYWR5XG4gICAgICAgICAgICAgICAgaXRlbU5hbWUgPSBTdHJpbmcoaXRlbU5hbWUpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpc2VkID0ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAvLyBpdGVtX2lkIGlzIHdoYXQgdGhlIFJDIHNlbGVjdG9yICYgZmxvYXRpbmcgYmFyIGV4cGVjdFxuICAgICAgICAgICAgICBpdGVtX2lkOlxuICAgICAgICAgICAgICAgIGl0ZW0/Lml0ZW1faWQgPz8gaXRlbT8ucmNfaWQgPz8gaXRlbT8ucmNpZCA/PyBudWxsLFxuICAgICAgICAgICAgICAvLyBpdGVtX25hbWUgaXMgd2hhdCBmbG9hdGluZyBiYXIgZGlzcGxheXMgLSBlbnN1cmUgaXQncyBwcm9wZXJseSBzZXRcbiAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtTmFtZSB8fCBpdGVtPy5pdGVtX25hbWUgfHwgKEFycmF5LmlzQXJyYXkoaXRlbT8ucmNfbmFtZSkgPyBpdGVtLnJjX25hbWUuam9pbignIC8gJykgOiBpdGVtPy5yY19uYW1lKSB8fCAnJyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpc2VkO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XG5cbiAgICAgICAgLy8gRXh0cmFjdCBJRHMgdXNpbmcgdGhlIG5vcm1hbGlzZWQga2V5XG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLCAnaXRlbV9pZCcpO1xuXG4gICAgICAgIGNvbnN0IFJDID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgIGlkcz8uaW5jbHVkZXMoZWxlbWVudC5pdGVtX2lkKVxuICAgICAgICApO1xuICAgICAgICBpZiAoUkM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gUkM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcbiAgICAgICAgICAgIFt0aGlzLnNlbGVjdGVkUkNdLFxuICAgICAgICAgICAgJ3JjaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJDID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdHbyB0byByaXNrIHRyZWF0bWVudCcsXG4gICAgICAgICAgICAgIGNsYXNzOiAnYmx1ZS1idG4nLFxuICAgICAgICAgICAgICBpZDogJ3ZpZXcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIC8vIFByZXZpb3VzbHkgdGhlcmUgd2FzIG9ubHkgUkMgd2FzIGVtaXR0aW5nIHdoaWNoIG1hZGUgdGhlIGNoZWNrZWQgb3B0aW9ucyB0byBkZSBjaGVjayBub3cgY2hlY2tpbmcgdGhlIGNvbmRpdGlvbiBhbmQgc2VuZGluZyBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcbiAgICAgICAgICBsZXQgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbnNba2V5XSkge1xuICAgICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRVc2VyRGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25CdXR0b25zPy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldE9yZ1VzZXJJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nID0gcmVzPy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xuICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uc1sxXS5idXR0b25UZXh0ID0gdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmdcbiAgICAgICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBpbiBRdWV1ZSdcbiAgICAgICAgICAgIDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25EZXRhaWxzKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzRnJhbWV3b3JrQXZhaWxhYmxlID0gcmVzPy5lbmFibGVfcmVzcG9uc2liaWxpdHlfZnJhbWV3b3JrO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM7XG4gICAgICAgIHRoaXMuYWxsQ2F0ZWdvcmllcyA9IGNsb25lRGVlcChyZXMpO1xuICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAyKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMykge1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0ocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLm5leHQoKTtcbiAgICB0aGlzLnVuU3Vic2NyaWJlUHJvZ3JhbS5jb21wbGV0ZSgpO1xuICAgIGlmIChwcm9ncmFtX2lkICYmIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3JhbURldGFpbHMocHJvZ3JhbUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbShwcm9ncmFtSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzPy5hc3Nlc3NtZW50ICYmXG4gICAgICAgIHJlcz8uYXNzZXNzbWVudD8ubGVuZ3RoICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KT8ubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlBc3Nlc3NtZW50ID0gcmVzPy5hc3Nlc3NtZW50LmZpbHRlcihcbiAgICAgICAgICAoYXNzZXNzbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQ/LmNhdGVnb3J5X2lkID09PVxuICAgICAgICAgICAgYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhdGVnb3J5QXNzZXNzbWVudD8ubGVuZ3RoICYmXG4gICAgICAgICAgY2F0ZWdvcnlBc3Nlc3NtZW50WzBdPy5hc3Nlc3NtZW50SWRzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaXNFeGlzdCA9IGNhdGVnb3J5QXNzZXNzbWVudFswXT8uYXNzZXNzbWVudElkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFpc0V4aXN0KSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBnZXRMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShwcm9ncmFtX2lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0UkNMaXN0KHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkKTtcbiAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XG4gIH1cblxuICBnZXRBc3NpZ25vcnNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRBc3NpZ25vcnNMaXN0KHBhcmFtcykuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYmVoYWxmT2ZVc2Vyc0xpc3QgPSByZXM7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy51c2VyTGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5mZXRjaEFzc2lnbmVlKHByb2dyYW1faWQpO1xuICB9XG5cbiAgZmV0Y2hBc3NpZ25lZShwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCA9IHJlcy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XG4gICAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZDogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldE9yZ2FuaXphdGlvblVzZXJMaXN0KHJlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgfHxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgZWxlbWVudD8ubXlfbWVtYmVyX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1Bc3NpZ25lZUdyb3VwKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VycyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfcmV2aWV3ZXJzKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHRoaXMucmV2aWV3ZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfcmV2aWV3ZXJzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICByZXZpZXdlcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gcmV2aWV3ZXJzO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnM7XG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbVJldmlld2VyR3JvdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X292ZXJzZWVycyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDSWRzID0gW1xuICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19tZW1iZXJfZW1haWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXTtcbiAgICAgICAgICBjb25zdCBvdmVyc2VlcnNDQyA9IHRoaXMub3ZlcnNlZXJzTGlzdD8uZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICBhbGxEZWZhdWx0Q0NJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIGNvbnN0IG92ZXJzZWVycyA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT4gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X292ZXJzZWVycy5jY19lbWFpbC5pbmNsdWRlcyhlbGVtZW50Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0LFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0ZhaWx1cmVJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KG5vdGlmeUxpc3RJZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDRmFpbHVyZSA9IHRoaXMub3ZlcnNlZXJzTGlzdD8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUlkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlbWVudC5teV9tZW1iZXJfaWQpKTtcbiAgICAgICAgICAvLyBpZiAob3ZlcnNlZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gb3ZlcnNlZXJzO1xuICAgICAgICAgIC8vICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIC8vIGlmIChub3RpZnlPdmVyc2VlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBub3RpZnlPdmVyc2VlcnM7XG4gICAgICAgICAgLy8gICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICBpZiAob3ZlcnNlZXJzQ0M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBvdmVyc2VlcnNDQztcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IG92ZXJzZWVyc0NDRmFpbHVyZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9XG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtT3ZlcnNlZXJHcm91cCgpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uc1trZXldKSB7XG4gICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBzZXRPcmdhbml6YXRpb25Vc2VyTGlzdChyZXM6IGFueSkge1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IHJlcy5hc3NpZ25lZS5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHJlcy5vdmVyc2Vlci5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IHJlcy5yZXZpZXdlci5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMucHJvZ3JhbVBlb3BsZUxpc3QgPSB7XG4gICAgICBhc3NpZ25lZXNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlc0xpc3QpXSxcbiAgICAgIHJldmlld2Vyc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJzTGlzdCldLFxuICAgICAgb3ZlcnNlZXJzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcnNMaXN0KV0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLmdldE9yZ2FuaXphdGlvbkdyb3VwcyhwYXJhbXMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YnNjcmliZVByb2dyYW0pKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/PyBbXTtcbiAgICAgICAgICBpZiAoIXByb2dyYW1faWQpIHtcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAgPSBkYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xuICAgICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBlbGVtZW50Lmdyb3VwX25hbWUsXG4gICAgICAgICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBncm91cHMucHVzaChvYmopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwPy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgJiZcbiAgICAgICAgICAgIHByb2dyYW1faWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZGF0YS5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgZWxlbWVudC5ncm91cF9pZFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxldCBtZW1iZXJJZHM6IGFueVtdID0gW107XG4gICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBzLmZvckVhY2goKGVhY2hHcm91cDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVhY2hHcm91cD8ubWVtYmVyX2lkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBtZW1iZXJJZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC4uLm5ldyBTZXQobWVtYmVySWRzLmNvbmNhdChlYWNoR3JvdXA/Lm1lbWJlcl9pZHMpKSxcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0LFxuICAgICAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbElkcyA9IFsuLi5uZXcgU2V0KGlkcyksIC4uLm5ldyBTZXQobWVtYmVySWRzKV07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gYXNzaWdub3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICBtZW1iZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRFZGl0UmVzcG9uc2liaWxpdHlEZXRhaWxzKGlkOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMucG9wdWxhdGVSZXNwb25zaWJpbGl0eURldGFpbHMoKTtcbiAgfVxuXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RcbiAgICAgID8ubWFwKChlbGUpID0+IHtcbiAgICAgICAgaWYgKGVsZVtrZXldKSB7XG4gICAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZWxlKSA9PiBlbGUpO1xuICB9XG5cbiAgcG9wdWxhdGVQcm9ncmFtQXNzaWduZWVHcm91cCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBhc3NpZ25lZUdyb3VwcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBzID0gdGhpcy5ncm91cEFzc2lnbmVlTGlzdD8uZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBhc3NpZ25lZUdyb3VwcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gW107XG4gICAgfVxuICB9XG5cbiAgcG9wdWxhdGVQcm9ncmFtT3ZlcnNlZXJHcm91cCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVyc1xuICAgICAgICA/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NHcm91cElkcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBhbGxEZWZhdWx0Q0NHcm91cElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0ZhaWx1cmVHcm91cElkcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KG5vdGlmeUxpc3RJZHMpLFxuICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbERlZmF1bHRDQ0ZhaWx1cmVHcm91cElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IG92ZXJzZWVyc0NDR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgIG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgZWxlbWVudD8uZ3JvdXBfaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBvdmVyc2VlcnNDQ0dyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cC5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9XG4gICAgICAgICAgICBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cDtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1SZXZpZXdlckdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICdncm91cF9pZCdcbiAgICAgICk7XG4gICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkc1xuICAgICAgICApLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJldmlld2Vyc0dyb3VwID0gdGhpcy5ncm91cFJldmlld2VyTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgIHJldmlld2Vyc0dyb3VwPy5sZW5ndGggfHxcbiAgICAgICAgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnNHcm91cDtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0ID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZU92ZXJzZWVyRGF0YShyZXM6IGFueSkge1xuICAgIGxldCBvdmVyc2VlclVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBvdmVyc2VlclVzZXJOb3RpZnlMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBvdmVyc2VlckVtcGxveWVlc0xpc3QgPSByZXM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgPyBPYmplY3Qua2V5cyhyZXM/LmNjX21lbWJlcl9lbWFpbCkubWFwKE51bWJlcilcbiAgICAgIDogW107XG4gICAgb3ZlcnNlZXJVc2VyTGlzdCA9XG4gICAgICBvdmVyc2VlckVtcGxveWVlc0xpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IG92ZXJzZWVyRW1wbG95ZWVzTGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmNjRW1haWxNZW1iZXJJZHM/LmluY2x1ZGVzKGVtcGxveWVlSWRzKVxuICAgICAgICApXG4gICAgICAgIDogWy4uLm92ZXJzZWVyRW1wbG95ZWVzTGlzdF07XG4gICAgbGV0IG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0ID0gcmVzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgPyBPYmplY3Qua2V5cyhyZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsKS5tYXAoTnVtYmVyKVxuICAgICAgOiBbXTtcbiAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cbiAgICAgIG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3QuZmlsdGVyKChlbXBsb3llZUlkczogbnVtYmVyKSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5mYWlsdXJlQ0NFbWFpbE1lbWJlcklkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4ub3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3RdO1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVycyddID0ge1xuICAgICAgbGlzdDogcmVzPy5jY19tZW1iZXJfZW1haWxcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBvdmVyc2VlclVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKVxuICAgICAgICA6IFtdLFxuICAgICAgbm90aWZ5TGlzdDogcmVzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVyc0dyb3VwcyddID0ge1xuICAgICAgbGlzdDogcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkc1xuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHMsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBub3RpZnlMaXN0OiByZXM/LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkc1xuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzLFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBwb3B1bGF0ZVJldmlld2VyRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHJldmlld2VyRGV0YWlscyA9IE9iamVjdC5rZXlzKHJlcz8ucmV2aWV3ZXJfYXJyKTtcbiAgICB0aGlzLmhhc1Jldmlld2VyID0gcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJEZXRhaWxzID0gcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aFxuICAgICAgPyBPYmplY3QuYXNzaWduKHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzKVxuICAgICAgOiBbXTtcbiAgICBsZXQgcmV2aWV3ZXJfdXNlcnM6IGFueVtdID0gW107XG4gICAgcmV2aWV3ZXJfdXNlcnMgPVxuICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzPy5sZW5ndGggPiAwICYmXG4gICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzLmZpbHRlcigobWVtYmVySWQ6IGFueSkgPT5cbiAgICAgICAgICByZXM/LmV4aXN0aW5nVXNlcklkcz8ucmV2aWV3ZXJJZHM/LmluY2x1ZGVzKG1lbWJlcklkPy5tZW1iZXJfaWQpXG4gICAgICAgIClcbiAgICAgICAgOiByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ3Jldmlld2VycyddID0ge1xuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxuICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlID09ICdTRVFVRU5USUFMJyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6XG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXMgOiAyLFxuICAgICAgfSxcbiAgICAgIGFjY2VwdGVkRGF0YTogcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmV2aWV3ZXJfdXNlcnMgOiBbXSxcbiAgICAgIGxpc3Q6XG4gICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXG4gICAgICAgICAgICByZXZpZXdlcl91c2VycyxcbiAgICAgICAgICAgICdvYmplY3QnLFxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZVxuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2dyb3VwUmV2aWV3ZXJzJ10gPSB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDpcbiAgICAgICAgZ3JvdXBSZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLk9yZ0dyb3VwLCBncm91cFJldmlld2VyRGV0YWlscywgJ2dyb3VwX2lkJylcbiAgICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBwb3B1bGF0ZUFzc2lnbmVlRGF0YShyZXM6IGFueSkge1xuICAgIGxldCBBc3NpZ25lZUFueVVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBBc3NpZ25lZUFsbFVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUFueU9uZUxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQgJiYgdGhpcy5pc0VudHJ1c3RcbiAgICAgICAgPyByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZFxuICAgICAgICA6IFtdO1xuICAgIEFzc2lnbmVlQW55VXNlckxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQ/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBhc3NpZ25lZUFueU9uZUxpc3QuZmlsdGVyKChlbXBsb3llZUlkczogbnVtYmVyKSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5hc3NpZ25lZUFueW9uZUlkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4uYXNzaWduZWVBbnlPbmVMaXN0XTtcblxuICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQgJiYgIXRoaXMuaXNFbnRydXN0ID8gcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQgOiBbXTtcbiAgICBjb25zdCBhc3NpZ25lZFRvVXNlckRldGFpbHMgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICBbTnVtYmVyKHJlcz8uYXNzaWduZWVfbWVtYmVyX2lkKV0sXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAoYXNzaWduZWRUb1VzZXJEZXRhaWxzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1lbWJlcl9pZCA9IGFzc2lnbmVkVG9Vc2VyRGV0YWlsc1swXT8ubXlfbWVtYmVyX2lkO1xuICAgICAgaWYgKHJlcz8uZXhpc3RpbmdVc2VySWRzPy5hc3NpZ25lZUFsbElkcz8uaW5jbHVkZXMobWVtYmVyX2lkKSkge1xuICAgICAgICBBc3NpZ25lZUFsbFVzZXJMaXN0ID0gcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQ7XG4gICAgICAgIHJlcy51c2VyR3JvdXBJZHNbJ2Fzc2lnbmVlQWxsR3JvdXBJZHMnXSA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChyZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBBc3NpZ25lZUFsbFVzZXJMaXN0ID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZXMnXSA9IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXMuaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXG4gICAgICBsaXN0OlxuICAgICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID09IDBcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIFtOdW1iZXIoQXNzaWduZWVBbGxVc2VyTGlzdCldLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgIClcbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIEFzc2lnbmVlQW55VXNlckxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICksXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXNzaWduZWVHcm91cHMnXSA9IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXM/LmlzR3JvdXBBc3NpZ25UbyA/ICdBTllfT05FJyA6ICdBTEwnLFxuICAgICAgbGlzdDpcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHM/Lmxlbmd0aCA9PSAwXG4gICAgICAgICAgPyByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzLFxuICAgICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdXG4gICAgICAgICAgOiB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMuYWxsR3JvdXBBc3NpZ25lZSA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICF0aGlzLmlzRW50cnVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIGlzIGZvciBnZXR0aW5nIHRoZSB1c2VycyBkYXRhIGJhc2VkIG9uIG1lbWJlcl9pZCBvZiB1c2VycyBvZiBzZWxlY3RlZCBVc2VyIEdyb3VwXG4gICAqIEBwYXJhbSB1c2VybGlzdCBjb250YWlucyB1c2VycyBkYXRhXG4gICAqIEBwYXJhbSBzZWxlY3RlZGdyb3VwcyBjb250YWlucyBzZWxlY3RlZCBVc2VyIEdyb3VwIGRhdGFcbiAgICogQHJldHVybnMgdXNlciBkYXRhIG9mIFNlbGVjdGVkIHVzZXIgZ3JvdXAuXG4gICAqL1xuICBnZXRHcm91cHNVc2VyRW1wbG95ZWVzSWQodXNlckxpc3Q6IGFueSwgc2VsZWN0ZWRHcm91cHM6IGFueSkge1xuICAgIGxldCBncm91cE1lbWJlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwVXNlckVtcGxveWVlOiBhbnkgPSBbXTtcbiAgICBzZWxlY3RlZEdyb3Vwcz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBNZW1iZXJJZHMgPSBbLi4ubmV3IFNldChbLi4uZ3JvdXBNZW1iZXJJZHMsIC4uLmdyb3VwPy5tZW1iZXJfaWRzXSldO1xuICAgIH0pO1xuICAgIHVzZXJMaXN0Py5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgaWYgKGdyb3VwTWVtYmVySWRzPy5pbmNsdWRlcyhlbGU/Lm15X21lbWJlcl9pZCkpIHtcbiAgICAgICAgZ3JvdXBVc2VyRW1wbG95ZWUucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBncm91cFVzZXJFbXBsb3llZTtcbiAgfVxuXG4gIHNldFJldmlld2VyUGF5bG9hZChcbiAgICBpZHM6IGFueVtdLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBhY2NlcHRlZERhdGE/OiBBcnJheTxhbnk+LFxuICAgIHJldmlld2VyVHlwZT86IHN0cmluZ1xuICApIHtcbiAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGlkT2JqQXJyYXkgPSB0aGlzLnJldHVybklkcyhpZHMsICd1aWQnKTtcbiAgICAgIHJldHVybiB0aGlzLnNldExpc3QodGhpcy5hbGxVc2Vyc0xpc3QsIGlkT2JqQXJyYXksICd1aWQnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgY29uc3QgcGF5TG9hZDogYW55ID0gW107XG4gICAgICBjb25zdCBpZHNMaXN0ID0gdGhpcy5yZXR1cm5JZHMoaWRzLCAndWlkJyk7XG4gICAgICBpZHNMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgaWYgKChhY2NlcHRlZERhdGEgPz8gW10pPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW5kZXggPVxuICAgICAgICAgICAgYWNjZXB0ZWREYXRhPy5maW5kSW5kZXgoKGVsZSkgPT4gZWxlLm1lbWJlcl9pZCA9PT0gZWxlbWVudCkgPz8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBwYXlMb2FkLnB1c2goeyBtZW1iZXJfaWQ6IGVsZW1lbnQgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwYXlMb2FkO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xuICAgIGNvbnN0IGVkaXRMb2FkZXIgPVxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCdcbiAgICAgICAgPyB0aGlzLnJjTGlzdExvYWRlZCAmJlxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkXG4gICAgICAgIDogdHJ1ZTtcbiAgICBpZiAodGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJiB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgJiYgZWRpdExvYWRlcikge1xuICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrRGV0YWlscz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmFzc2lnbkZyb21GcmFtZXdvcmsodGhpcy5mcmFtZXdvcmtEZXRhaWxzWzBdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0RWRpdFJlc3BvbnNpYmlsaXR5RGV0YWlscyh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0pIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2godGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzLnB1c2goXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbS5jYXRlZ29yeV9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmRlZmF1bHRfYXNzaWduZWVfdHlwZSA9PSAnQU5ZT05FJ1xuICAgICAgICAgICAgICAgID8gJ0FOWV9PTkUnXG4gICAgICAgICAgICAgICAgOiAnQUxMJztcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9IHRoaXNcbiAgICAgICAgICAgICAgLnNlbGVjdGVkUHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWdcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gdGhpcy5zZWxlY3RlZFByb2dyYW0/LmN1c3RvbV90YWdzXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZFByb2dyYW0uY3VzdG9tX3RhZ3MpXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIHByb2dyYW1DdXN0b21UYWdzLmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gSlNPTi5wYXJzZSh0YWcpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlBST0dSQU0gPSB0cnVlO1xuICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdQUk9HUkFNJyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnICYmXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0odGhpcy5zZWxlY3RlZFByb2dyYW0/Ll9pZCk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aG9tJykge1xuICAgICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3QsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hvJykge1xuICAgICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuaXNFbnRydXN0ICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5lbXBsb3llZV9pZF0sXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5zYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnaXRlbV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApO1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9IDA7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFnID1cbiAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT09ICcnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT09ICdudWxsJyAmJlxuICAgICAgICAgICAgICBlbGVtZW50LmN1c3RvbV90YWdzICE9ICdbXSdcbiAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpXG4gICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJvZ3JhbSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpbmtlZFByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zPy5saW5rZWRQcm9ncmFtO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICAhKFxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5wcm9ncmFtVHlwZSA9PT0gMCAmJlxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnKSB8fFxuICAgICAgICAgICAgIXRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgICF0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgID8gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIGxldCBjYXRlZ29yeUlkID0gc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8udG9TdHJpbmcoKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkICsgJywnICsgY2F0ZWdvcnlJZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChbc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3M/LmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHRhZykgOiB0YWc7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcbiAgICAgICAgICAgICAgPyB0aGlzLmdldFByb2dyYW1EZXRhaWxzKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0uX2lkKVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPSAnJztcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gc2VsZWN0ZWRJdGVtcy5wcm9ncmFtXG4gICAgICAgICAgICA/IFtzZWxlY3RlZEl0ZW1zLnByb2dyYW1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIGxldCBjYXRlZ29yeUlkID0gc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8udG9TdHJpbmcoKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkICsgJywnICsgY2F0ZWdvcnlJZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChbc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3M/LmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHRhZykgOiB0YWc7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXG4gICAgICAgICAgICAgICAgPyAnQU5ZX09ORSdcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUgPT0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZykge1xuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5wcm9ncmFtVHlwZSA9PT0gMCAmJlxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/Ll9pZCAmJlxuICAgICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oc2VsZWN0ZWRJdGVtcy5wcm9ncmFtLl9pZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZUdyb3VwUmV2aWV3ZXJEYXRhKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJMaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJOb3RpZnknOlxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtcywgJ292ZXJzZWVyTm90aWZ5TGlzdCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXF1aXJlc19hdWRpdCc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3QsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXM/LmNhdGVnb3J5X2lkXSxcbiAgICAgICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNhdGVnb3J5X2lkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscztcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludEluc3RydWN0aW9uID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb247XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2FsY3VsYXRlZHJpc2snOlxuICAgICAgICBjb25zdCByaXNrQ2xhc3MgPSBbJ2xvdycsICdsb3dfbWVkaXVtJywgJ21lZGl1bV9oaWdoJywgJ2hpZ2gnXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzID0gcmlza0NsYXNzW3NlbGVjdGVkSXRlbXM/LnJpc2tDbGFzc107XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJpc2tNYXRyaXggPSBzZWxlY3RlZEl0ZW1zPy5yaXNrTWF0cml4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Zvcm1hdGVfZXZpZGVuY2UnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRSZXF1aXJlZCA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uaXNGb3JtYXRlVXBsb2FkZWQgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcy5tYXAoKGZpbGVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoOiBmaWxlcy5maWxlcGF0aCxcbiAgICAgICAgICAgICAgbmFtZTogZmlsZXMuZmlsZV9uYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBmaWxlcy50eXBlLFxuICAgICAgICAgICAgICBmaWQ6IGZpbGVzPy5maWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSA/PyBbXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3MgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5pc0V2aWRlbmNlUmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmV2aWV3RnJlcXVlbmN5JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeSA9IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IHNlbGVjdGVkSXRlbXMuY29tcGxldGVEYXlzLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IHNlbGVjdGVkSXRlbXMubm90Q29tcGxldGVkLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcHJvZ3JhbSBpcyBzZWxlY3RlZCBhbmQgdGhlIHVzZXIgaGFzIGZ1bGwgcGVybWlzc2lvbiwgcmVmcmVzaCB0aGUgbGlzdHMgd2hpbGUgdGhlIHByb2dyYW1cbiAgICogaXMgc2VsZWN0ZWQuIE90aGVyd2lzZSwgcmVmcmVzaCBhbGwgbGlzdHMuXG4gICAqIDwvY29kZT5cbiAgICovXG4gIGNhbGxSZWZyZXNoTGlzdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtPy5sZW5ndGggJiZcbiAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ/OiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLmZpbmRJbmRleChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuc3BsaWNlKHJjSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID4gMCk7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyddWydjYXRlZ29yeV9pZCddID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Quc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cGFzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0LnNwbGljZShncm91cEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdC5zcGxpY2UocmV2aWV3ZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cFJldmlld2VyJzpcbiAgICAgICAgY29uc3QgZ3JvdXBSZXZpZXdlckluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdC5zcGxpY2UoXG4gICAgICAgICAgZ3JvdXBSZXZpZXdlckluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3Quc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJHcm91cCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXBJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJHcm91cEluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeUxpc3QnOlxuICAgICAgICBjb25zdCBvdmVyc2Vlck5vdGlmeUluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3Quc3BsaWNlKFxuICAgICAgICAgIG92ZXJzZWVyTm90aWZ5SW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnOlxuICAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJHcm91cE5vdGlmeUluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeS5maW5kSW5kZXgoXG4gICAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LnNwbGljZShjYXRlZ29yeUluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShldmVudC5jdXN0b21fdGFncyk7XG4gICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShlbGVtZW50LmN1c3RvbV90YWdzKTtcbiAgICAgICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcm9ncmFtJzpcbiAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQpO1xuICAgICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IFtdO1xuICAgICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG5cbiAgICAgICAgLy8gdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcbiAgICAgICAgICBzYW1wbGU6IDAsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogJycsXG4gICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XG4gICAgICAgIGNvbnN0IGFzc3VyYW5jZUluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKGFzc3VyYW5jZTogYW55KSA9PiBhc3N1cmFuY2UuY2F0ZWdvcnlfaWQgPT0gYXNzdXJhbmNlLmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3Quc3BsaWNlKGFzc3VyYW5jZUluZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGVja3BvaW50JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMuc3BsaWNlKGV2ZW50LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3Nlc3NtZW50JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmV3LWNoZWNrcG9pbnRzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0ge307XG4gICAgICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jaGVja3BvaW50Q291bnRVcGRhdGVkLmVtaXQodGhpcy5jaGVja3BvaW50Q291bnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NVU1RPTV9GSUVMRFMnOlxuICAgICAgICB0aGlzLnJlbW92ZUN1c3RvbUZpZWxkcyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUN1c3RvbUZpZWxkcyhldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21GaWVsZHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09PSBldmVudC5pZCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tRmllbGRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuY3VzdG9tRmllbGRzLnB1c2goZXZlbnQpO1xuICB9XG5cbiAgc2F2ZUdyb3VwQXNzaWduZWVEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIGxldCB1c2VyT2JqOiBhbnk7XG4gICAgdXNlck9iaiA9IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA/IHNlbGVjdGVkSXRlbXMgOiBzZWxlY3RlZEl0ZW1zPy51c2VycztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgIHVzZXJPYmosXG4gICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHMsXG4gICAgICAnZ3JvdXBfaWQnXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVHcm91cFJldmlld2VyRGF0YShzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcbiAgICBsZXQgdXNlck9iajogYW55ID0gW107XG4gICAgc2VsZWN0ZWRJdGVtcy51c2Vycy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgdXNlck9iai5wdXNoKGVsZS5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLnJldmlld2Vyc0xpc3QsXG4gICAgICB1c2VyT2JqLFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMgPSB7XG4gICAgICBsaXN0OiBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXSxcbiAgICB9O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93O1xuICB9XG5cbiAgc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zOiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnb3ZlcnNlZXJMaXN0JzpcbiAgICAgICAgbGV0IG92ZXJzZWVyc2VsZWN0ZWRsaXN0ID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy51c2VycyxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICBvdmVyc2VlcnNlbGVjdGVkbGlzdCxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwc1snbGlzdCddID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeUxpc3QnOlxuICAgICAgICBsZXQgb3ZlcnNlZXJzZWxlY3RlZE5vdGlmeWxpc3QgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgIG92ZXJzZWVyc2VsZWN0ZWROb3RpZnlsaXN0LFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzWydub3RpZnlMaXN0J10gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBlbnRydXN0RnJhbWV3b3JrKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eSA9IHtcbiAgICAgIG5hbWU6IGV2ZW50LnJlcG9ydF9uYW1lLFxuICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGV2ZW50LmtleV9jb21wbGlhbmNlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIH07XG4gICAgY29uc3QgbmV3U3RhcnREYXRlID1cbiAgICAgIGV2ZW50LnN0YXJ0X2RhdGUgfHwgZXZlbnQuc3RhcnRfZGF0ZSAhPSBudWxsIHx8IGV2ZW50LnN0YXJ0X2RhdGUgIT09ICcnXG4gICAgICAgID8gbmV3IERhdGUoZXZlbnQuc3RhcnRfZGF0ZSAqIDEwMDApXG4gICAgICAgIDogbmV3IERhdGUoKTtcbiAgICBjb25zdCBwdnRUZW1wbGF0ZSA9XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGVtcGxhdGUgJiYgZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnJ1xuICAgICAgICA/IGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZVxuICAgICAgICA6IGV2ZW50LmZyZXF1ZW5jeTtcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXG4gICAgICBwdnRUZW1wbGF0ZSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXREYXRlKCksXG4gICAgICBuZXdTdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XG4gICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGVcbiAgICAgIDogMjtcbiAgICBldmVudC5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA6IDI7XG4gICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XG4gICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpO1xuICAgIGV2ZW50Lm9uX2NvbXBsZXRpb25fb2YgPSBbXTtcbiAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPVxuICAgICAgZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID8gZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA6IDI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlXG4gICAgICAuZnJhbWV3b3JrU3RhcnREYXRlKGV2ZW50KVxuICAgICAgLnRvRml4ZWQoKVxuICAgICAgLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9XG4gICAgICBldmVudC5yZW1hcmtzLnRyaW0oKSAhPSAnJyA/IGV2ZW50LnJlbWFya3MgOiAnJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzID1cbiAgICAgIGV2ZW50LmN1c3RvbV90YWdzICYmXG4gICAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSBudWxsICYmXG4gICAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSAnbnVsbCcgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICcnXG4gICAgICAgID8gSlNPTi5wYXJzZShldmVudC5jdXN0b21fdGFncylcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBldmVudC5jb250cm9sX29iamVjdGl2ZVxuICAgICAgPyBldmVudC5jb250cm9sX29iamVjdGl2ZVxuICAgICAgOiAnJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYWxsQ2F0ZWdvcmllcyxcbiAgICAgIFtldmVudC5jYXRlZ29yeV9pZF0sXG4gICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgKTsgLy9cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9IDI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzID0gMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5maW5kKFxuICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcbiAgICApXG4gICAgICA/IFtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXG4gICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIDogW107XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAnbG93JyA6ICdsb3dfbWVkaXVtJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcml2YXRlX2xpYnJhcnlfaWQgPSBldmVudC5yZXBvcnRfaWQ7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNsYXNzaWZpY2F0aW9uID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAxIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPVxuICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudCk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UgPSB7XG4gICAgICBldmlkZW5jZVJlcXVpcmVkOiBldmVudC5yZXBvcnRfdXBsb2FkX2ZsYWcgPyB0cnVlIDogZmFsc2UsXG4gICAgICBmb3JtYXRGaWxlczogZXZlbnQucmVwb3J0X2Zvcm1hdCxcbiAgICAgIGZvcm1hdExpbmtzOlxuICAgICAgICAhZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rIHx8IGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayA9PSAnJ1xuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtldmVudC5yZXBvcnRfZm9ybWF0X2xpbmtdLFxuICAgICAgZm9ybWF0UmVxdWlyZWQ6XG4gICAgICAgIGV2ZW50LnJlcG9ydF9mb3JtYXQ/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAoZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rICYmIGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayAhPSAnJylcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgc2FtcGxlOiA1LFxuICAgICAgcGVyY2VudGFnZTogMzAsXG4gICAgICBmcmVxdWVuY3lfcGF0dGVybjogJzF+MH4zfjEnLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IERFRkFVTFRfMjRIUixcbiAgICB9O1xuXG4gICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgIT09ICcnICYmXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJzV+MH4wfjAnXG4gICAgKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSAnJztcbiAgICB9XG5cbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICBldmVudC5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZXZlbnQpO1xuICAgIGNvbnN0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSAhPT0gJycpIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdPQkpFQ1RJVkUnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuT0JKRUNUSVZFID0gdHJ1ZTtcbiAgICB9XG4gICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcbiAgICB0aGlzLm1vcmVPcHRpb25zLlJJU0tfQ0xBU1NJRklDQVRJT04gPSB0cnVlO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NBVEVHT1JZJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNBVEVHT1JZID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2U/LmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZT8uZm9ybWF0UmVxdWlyZWRcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuZW50aXR5X2lkID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JDJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJDID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAvLyAgZXZlbnQucGxhY2Vob2xkZXJcbiAgfVxuXG4gIGFzc2lnbkZyb21GcmFtZXdvcmsoZnJlcU9iajogYW55KSB7XG4gICAgaWYgKGZyZXFPYmouZGF0YSkge1xuICAgICAgLy8gdGhpcy5yZXNldCgpO1xuICAgICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgICBjb25zdCBuZXdTdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPVxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXG4gICAgICAgICAgZnJlcU9iai5kYXRhLmZyZXF1ZW5jeSxcbiAgICAgICAgICBuZXdTdGFydERhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICk7XG5cbiAgICAgIGxldCBldmVudDogYW55ID0ge307XG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICAgIGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzID0gMjtcbiAgICAgIGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzID0gMjtcbiAgICAgIGV2ZW50LmxpZmVjeWNsZV9kZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xuICAgICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgICAgZXZlbnQuZG9tX3V0YyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcbiAgICAgIHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZXZlbnQpO1xuICAgICAgZXZlbnQucGxhY2Vob2xkZXIgPSB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyO1xuICAgICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQpO1xuXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gZnJlcU9iai5kYXRhLm5hbWUgPz8gJyc7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBmcmVxT2JqLmRhdGEub2JqZWN0aXZlcyA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm4gPz8gJyc7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPSBldmVudC5zdGFydF9vZl9kYXlfdXRjO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPSBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXMgPSBmcmVxT2JqLnNlbGVjdGVkRnJhbWV3b3JrRGF0YSA/PyB1bmRlZmluZWQ7XG4gICAgICBpZiAoZnJlcU9iaj8uZGF0YT8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPSBmcmVxT2JqPy5kYXRhPy5kZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5vYmplY3RpdmVzKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGZyZXFPYmouZGF0YS5vYmplY3RpdmVzID8/ICcnO1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XG4gICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGxpc3QgdXNlcmxpc3QgZm9yIGxpc3RpbmcgdXNlcnNcbiAgICogQHJldHVybnMgYXNzaWduIHVzZXIncyBteV9tZW1iZXJfaWQgIHRvIG1lbWJlcl9pZCBkYXRhXG4gICAqL1xuICBhc3NpZ25Vc2VyTWVtYmVySWQobGlzdDogYW55KSB7XG4gICAgY29uc3QgdXNlck9iaiA9IFsuLi5saXN0XTtcbiAgICB1c2VyT2JqPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlcj8ubXlfbWVtYmVyX2lkO1xuICAgIH0pO1xuICAgIGxpc3QgPSBbLi4udXNlck9ial07XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICByZWZyZXNoQWxsTGlzdHMoKSB7XG4gICAgbGV0IGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYWxsVXNlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgcmV2aWV3ZXJzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUlkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwUmV2aWV3ZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJldmlld2VySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbXTtcblxuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XG4gICAgY29uc3QgYmVoYWxmVXNlcnMgPSBjbG9uZURlZXAodGhpcy5iZWhhbGZPZlVzZXJzTGlzdCk7XG5cbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QpO1xuXG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSBjbG9uZURlZXAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcbiAgICApO1xuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlcnNMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QpO1xuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXG4gICAgICA6IFtdO1xuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHVzZXIubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5hc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT0gMCkge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgIH1cbiAgICBhbGxVc2Vycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhbGxVc2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgYXNzaWduZWVHcm91cExpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbmVlR3JvdXBJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuXG4gICAgcmV2aWV3ZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBncm91cE5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcblxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcbiAgICBhbGxVc2Vyc0lkcyA9IFsuLi5uZXcgU2V0KGFsbFVzZXJzSWRzKV07XG4gICAgYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUlkcyldO1xuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbm9ySWQpXTtcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnJldmlld2VySWRzKV07XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJJZHMpXTtcblxuICAgIGFzc2lnbmVlR3JvdXBJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUdyb3VwSWRzKV07XG4gICAgZ3JvdXBSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwUmV2aWV3ZXJJZHMpXTtcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+ICFvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2VycztcbiAgICB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2VycztcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSBhbGxVc2VycztcblxuICAgIHRoaXMuZGlzYWJsZUxpc3QoXG4gICAgICBhbGxVc2VycyxcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLFxuICAgICAgYXNzaWduZWVJZHMsXG4gICAgICByZXZpZXdlcnNJZHMsXG4gICAgICBvdmVyc2Vlcklkc1xuICAgICk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZCh0aGlzLmFsbFVzZXJzTGlzdCk7XG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZCh0aGlzLmFsbFVzZXJzTGlzdCk7XG4gICAgICB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cE92ZXJzZWVyTGlzdCA9IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgIChncm91cDogYW55KSA9PlxuICAgICAgICAgICEoXG4gICAgICAgICAgICBhc3NpZ25lZUdyb3VwSWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlTGlzdChcbiAgICBhbGxVc2VyczogYW55LFxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnksXG4gICAgYXNzaWduZWVJZHM6IGFueSxcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcbiAgICBvdmVyc2VlcklkczogYW55XG4gICkge1xuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVPdmVyc2VlcnNMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpIHtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYXNzaWduZWVHcm91cElkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwUmV2aWV3ZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJldmlld2VySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbXTtcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XG4gICAgY29uc3QgYXNzaWdub3JzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCByZXZpZXdlcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlcnNMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QpO1xuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXG4gICAgICA6IFtdO1xuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09IDApIHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godGhpcy5tZW1iZXJJZCk7XG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICB9XG5cbiAgICBhc3NpZ25lZUdyb3VwTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgcmV2aWV3ZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBub3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBPdmVyc2Vlckxpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwTm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzKV07XG4gICAgYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUlkcyldO1xuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcbiAgICBhc3NpZ25lZUdyb3VwSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVHcm91cElkcyldO1xuICAgIGdyb3VwUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldChncm91cFJldmlld2VySWRzKV07XG4gICAgZ3JvdXBPdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwT3ZlcnNlZXJJZHMpXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbm9ySWQpXTtcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnJldmlld2VySWRzKV07XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJJZHMpXTtcblxuICAgIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+ICFvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5hc3NpZ25lZXNMaXN0O1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3Q7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ub3ZlcnNlZXJzTGlzdDtcblxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgdGhpcy5ncm91cEFzc2lnbmVlTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxuICAgICAgICAgICAgYWxsR3JvdXBzLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgIHRoaXMucHJvZ3JhbVBlb3BsZUxpc3QucmV2aWV3ZXJzTGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QgPVxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcbiAgICAgICAgICAgIGFsbEdyb3VwcyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5yZXZpZXdlcl9ncm91cF9pZHNcbiAgICAgICAgICApXG4gICAgICAgICAgOiBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdC5vdmVyc2VlcnNMaXN0XG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cE92ZXJzZWVyTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1Hcm91cExpc3QoXG4gICAgICAgICAgICBhbGxHcm91cHMsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApXG4gICAgICAgICAgOiBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZVByb2dyYW1MaXN0KFxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXG4gICAgICBhc3NpZ25lZUlkcyxcbiAgICAgIHJldmlld2Vyc0lkcyxcbiAgICAgIG92ZXJzZWVySWRzXG4gICAgKTtcbiAgfVxuXG4gIHByb2dyYW1Hcm91cExpc3QoYWxsR3JvdXBzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgLy8gYXJnc1swXVxuICAgIGxldCBhc3NpZ25lZVByb2dyYW06IGFueSA9IFtdO1xuICAgIGxldCBncm91cElkcyA9IGFyZ3NbMF07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5hc3NpZ25lZV9ncm91cF9pZHMpIHtcbiAgICAgIGFzc2lnbmVlUHJvZ3JhbSA9IGFsbEdyb3Vwcy5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XG4gICAgICAgIGdyb3VwSWRzLmluY2x1ZGVzKGdyb3VwLmdyb3VwX2lkKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFzc2lnbmVlUHJvZ3JhbTtcbiAgfVxuXG4gIGRpc2FibGVQcm9ncmFtTGlzdChcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55LFxuICAgIGFzc2lnbmVlSWRzOiBhbnksXG4gICAgcmV2aWV3ZXJzSWRzOiBhbnksXG4gICAgb3ZlcnNlZXJJZHM6IGFueVxuICApIHtcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3QuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5yZXZpZXdlcnNMaXN0LmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0LmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZvcm0gaXMgdmFsaWQsIHRoZW4gaWYgdGhlIG1vZGUgaXMgRURJVCwgdGhlbiBzZXQgdGhlIG9yZ2FuaXphdGlvbklkIGFuZCBtZW1iZXJJZCB0byB0aGVcbiAgICogYXV0aFNlcnZpY2UgdmFsdWVzLCBhbmQgdGhlbiBjYWxsIHRoZSBlbnRydXN0UmVzcG9uc2liaWxpdHkgZnVuY3Rpb24gd2l0aCB0aGUgcmVzcG9uc2liaWxpdHlGb3JtIGFzXG4gICAqIGEgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBJZiB0aGUgbW9kZSBpcyBub3QgRURJVCwgdGhlbiBjYWxsIHRoZSBlbnRydXN0UmVzcG9uc2liaWxpdHkgZnVuY3Rpb24gd2l0aCB0aGUgcmVzcG9uc2liaWxpdHlGb3JtXG4gICAqIGFzIGEgcGFyYW1ldGVyLlxuICAgKiBAcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBzdWJtaXRSZXNwb25zaWJpbGl0eSgpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVSZXNwb25zaWJpbGl0eSgpO1xuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcgJiYgIXRoaXMuaXNEdXBsaWNhdGUpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xuICAgICAgLy8gZWRpdCBjb25kaXRpb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW50cnVzdFJlc3BvbnNpYmlsaXR5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHJlc3BvbnNpYmlsaXR5IG5hbWUgaXMgZW1wdHksIG9yIHRoZSBmcmVxdWVuY3kgaXMgZW1wdHksIG9yIHRoZSBhc3NpZ25lZXMgbGlzdCBpcyBlbXB0eSxcbiAgICogdGhlbiByZXR1cm4gZmFsc2UuIE90aGVyd2lzZSwgcmV0dXJuIHRydWUuXG4gICAqL1xuICB2YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCkge1xuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlICYmXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dob20nO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgPT0gJydcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hhdCc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0IHx8XG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICgoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCB8fFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSkpXG4gICAgKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dobyc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCdcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hlbic7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgPT0gJycgfHxcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJycgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJzV+MH4wfjAnIHx8XG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICghdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAoKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0IHx8XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0Py5sZW5ndGggPT0gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGVudHJ1c3RSZXNwb25zaWJpbGl0eShlbnRydXN0Rm9ybTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmVudHJ1c3RMb2FkZXIgPSB0cnVlO1xuICAgIGxldCBzdGFydERhdGUgPSBtb21lbnQocGFyc2VJbnQoZW50cnVzdEZvcm0uc3RhcnREYXRlKSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICk7XG4gICAgc3RhcnREYXRlID0gbW9tZW50KHN0YXJ0RGF0ZS5zcGxpdCgnICcpWzBdICsgJyAwMDowMDowMCcpLmZvcm1hdChcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICk7XG4gICAgY29uc3QgcmNEZXRhaWxzID1cbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmMubWFwKChyYzogYW55KTogYW55ID0+IHtcbiAgICAgICAgICBpZiAocmMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJjRGV0YWlsc0FyciA9IHtcbiAgICAgICAgICAgICAgcGFyZW50X3JjX2lkczogcmMucGFyZW50X3JjX2lkcyxcbiAgICAgICAgICAgICAgcmNfaWQ6IHJjLnJjaWQsXG4gICAgICAgICAgICAgIGNoaWxkX3JjX2lkczogcmM/Lml0ZW1fY2hpbGRfaWRzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByY0RldGFpbHNBcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IHJjRGV0YWlsc0lkQXJyID1cbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmMubWFwKChyYzogYW55KTogYW55ID0+IHtcbiAgICAgICAgICBpZiAocmMpIHtcbiAgICAgICAgICAgIHJldHVybiByYy5yY2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgOiBbXTtcblxuICAgIGNvbnN0IG1vcmVPcHRpb25zID0gdGhpcy5tb3JlT3B0aW9ucztcblxuICAgIGNvbnN0IGNoZWNrQ29udGludW91c0ZhaWxlZFZhbHVlID0gKGRldGFpbHM6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgZnJlcXVlbmN5VHlwZSA9IHBhcnNlSW50KGRldGFpbHMuc3BsaXQoJ34nKVswXSk7XG4gICAgICBpZiAoZnJlcXVlbmN5VHlwZSA9PT0gMSB8fCBmcmVxdWVuY3lUeXBlID09PSAyIHx8IGZyZXF1ZW5jeVR5cGUgPT09IDMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGxldCBsaW5rZWRQcm9ncmFtSWRzOiBhbnlbXSA9IFtdO1xuICAgIGxldCBsaW5rZWRDYXRlZ29yeUlkczogYW55W10gPSBbXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbT8uZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkICE9PSBlbGU/LmNhdGVnb3J5X2lkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHtcbiAgICAgICAgICBwcm9ncmFtSWQ6IGVsZT8uY2F0ZWdvcnlfaWQsXG4gICAgICAgICAgcHJvZ3JhbU9iamVjdElkOiBlbGU/Ll9pZCxcbiAgICAgICAgICBzdWJQcm9ncmFtSWRzOiBlbGU/LmNoaWxkX2lkPy5maWx0ZXIoKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8uaW5jbHVkZXMoZWwpO1xuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBsaW5rZWRQcm9ncmFtSWRzPy5wdXNoKHByb2dyYW0pO1xuICAgICAgICBsaW5rZWRDYXRlZ29yeUlkcz8ucHVzaChlbGU/LmNhdGVnb3J5X2lkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBjYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQ6IGFueSA9IFtdO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnkpIHtcbiAgICAgIGNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeT8uZmlsdGVyKFxuICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBlbCAhPT0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkICYmXG4gICAgICAgICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNoaWxkX2lkPy5pbmNsdWRlcyhlbClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICAgIHRoaXMuY29tYmluZVVzZXJBbmRVc2VyR3JvdXBNZW1iZXJzKFxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgJiZcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FMTCcgJiZcbiAgICAgIHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbWFya3MgPVxuICAgICAgZW50cnVzdEZvcm0uZGVzY3JpcHRpb24ucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpLnRyaW0oKSAhPT0gJydcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5kZXNjcmlwdGlvblxuICAgICAgICA6ICcnO1xuICAgIGNvbnN0IG9iamVjdGl2ZSA9XG4gICAgICBlbnRydXN0Rm9ybS5vYmplY3RpdmUucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpLnRyaW0oKSAhPT0gJydcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5vYmplY3RpdmVcbiAgICAgICAgOiAnJztcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xuICAgICAgYXBwX2Fzc29jaWF0aW9uOiBbXSxcbiAgICAgIGFzc2lnbmVlX21lbWJlcl9pZDogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCxcbiAgICAgICAgJ3VpZCdcbiAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgIHByb2dyYW1fY2F0X2lkczogbW9yZU9wdGlvbnM/LlBST0dSQU1cbiAgICAgICAgPyBlbnRydXN0Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoXG4gICAgICAgICAgPyBbZW50cnVzdEZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkXVxuICAgICAgICAgIDogW11cbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmtlZF9wcm9ncmFtX2lkczogbGlua2VkUHJvZ3JhbUlkcyxcbiAgICAgIGxpbmtlZF9jYXRlZ29yeV9pZHM6IHRoaXMuZ2V0VW5pcXVlSWRzKFtcbiAgICAgICAgLi4uY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0LFxuICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcbiAgICAgIF0pLFxuICAgICAgLy8gY2F0ZWdvcnlfaWQ6ICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbV9zZWxlY3RlZF9pZHM/Lmxlbmd0aCA+IDApID8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNhdGVnb3J5X2lkIDogJycsXG4gICAgICBjYXRlZ29yeV9pZDpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1fc2VsZWN0ZWRfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLmdldFVuaXF1ZUlkcyhbXG4gICAgICAgICAgICAuLi50aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnksXG4gICAgICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcbiAgICAgICAgICAgIC4uLltlbnRydXN0Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWRdLFxuICAgICAgICAgIF0pPy5yZXZlcnNlKCkudG9TdHJpbmcoKVxuICAgICAgICAgIDogJycsXG4gICAgICBjY19tZW1iZXJfZW1haWw6IG1vcmVPcHRpb25zPy5PVkVSU0VFUlxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHRoaXMub3ZlcnNlZXJVc2VyTGlzdCwgJ3VpZCcpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJyxcbiAgICAgIGNoZWNrcG9pbnRfZGVzY3JpcHRpb246IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU1xuICAgICAgICA/IGVudHJ1c3RGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvblxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9kZXRhaWxzOiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cylcbiAgICAgICAgOiAnJyxcbiAgICAgIGNoZWNrcG9pbnRfZmxhZzogMCxcbiAgICAgIGNvbGxhYm9yYXRvcl9tYXJrX2RvbmU6IDAsXG4gICAgICBjb21tZW50OiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNoZWNrQ29udGludW91c0ZhaWxlZFZhbHVlKGVudHJ1c3RGb3JtLmZyZXF1ZW5jeSlcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzXG4gICAgICAgIDogMCxcbiAgICAgIGNvc3Rfb2ZfY29tcGxpYW5jZTogJycsXG4gICAgICBjcmVhdGVkX2J5OiBlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoIDwgMSA/IDAgOiB0aGlzLm1lbWJlcklkLFxuICAgICAgY3JlYXRpb25fd2luZG93OiAwLFxuICAgICAgY3VzdG9tX3RhZ3M6IGVudHJ1c3RGb3JtLmN1c3RvbUZpZWxkcy5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IGVsZS5pZCxcbiAgICAgICAgICB2YWx1ZTogZWxlLnZhbHVlLFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGVudGl0eV90cmVlOiBtb3JlT3B0aW9ucz8uUkNcbiAgICAgICAgPyB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT0gMVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJjRGV0YWlsc1xuICAgICAgICA6IFtdLFxuICAgICAgZW50cnVzdF9mcm9tX3Jpc2s6IHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBlbnRydXN0Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyxcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogZW50cnVzdEZvcm0uZmFpbGVkX3RpbWVfdXRjLFxuICAgICAgZmFpbHVyZV9jY19tZW1iZXJfZW1haWw6IG1vcmVPcHRpb25zPy5PVkVSU0VFUlxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCwgJ3VpZCcpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJyxcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBlbnRydXN0Rm9ybS5mcmVxdWVuY3ksXG4gICAgICBmcmVxdWVuY3lfdGltZTogZW50cnVzdEZvcm0udGltZUluMjRIciA/PyBERUZBVUxUXzI0SFIsXG4gICAgICBncmNfb2JqZWN0X2lkOiAwLFxuICAgICAgZ3JjX3JlbGF0aW9uc2hpcDogJycsXG4gICAgICBpZl90ZXN0cGxhbl9mYWlsZWQ6IDAsXG4gICAgICBpbXBhY3Q6ICcnLFxuICAgICAgaXNHcm91cEFzc2lnblRvOlxuICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnID8gMSA6IDAsXG4gICAgICBpc19rZXlfY29tcGxpYW5jZTogZW50cnVzdEZvcm0ucmVzcG9uc2liaWxpdHkua2V5UmVzcG9uc2liaWxpdHkgPyAxIDogMCxcbiAgICAgIGFsbG93RWRpdER1ZURhdGU6IGVudHJ1c3RGb3JtPy5hbGxvd0VkaXREdWVEYXRlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgbGlicmFyeV9yZXBvcnRfaWQ6IDAsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZW50cnVzdEZvcm0ubGlmZWN5Y2xlRGV0YWlscyA/PyAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICBsaW5rX2Zvcl9kZXRhaWxzOiBtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzXG4gICAgICAgIDogW10sXG4gICAgICBsaW5rYWdlczogeyBjb21wbGlhbmNlOiBbXSB9LFxuICAgICAgbWVtYmVyX2lkOlxuICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdCwgJ3VpZCcpPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdCwgJ3VpZCcpWzBdXG4gICAgICAgICAgOiB0aGlzLm1lbWJlcklkLFxuICAgICAgb2JqZWN0aXZlOiBtb3JlT3B0aW9ucz8uT0JKRUNUSVZFID8gb2JqZWN0aXZlIDogJycsXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBlbnRydXN0Rm9ybS5yZXBvcnRJZCA/IFtlbnRydXN0Rm9ybS5yZXBvcnRJZF0gOiBbXSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2ZfdHlwZTogMSxcbiAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcbiAgICAgIG92ZXJyaWRlX3dlZWtseTogMCxcbiAgICAgIHBhcmVudF9pZDogMCxcbiAgICAgIHBlbmFsdHk6ICcnLFxuICAgICAgcHJpdmF0ZV9saWJyYXJ5X2lkOiAwLFxuICAgICAgcmVtYXJrczogcmVtYXJrcyxcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBlbnRydXN0Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyxcbiAgICAgIHJlcG9ydF9mb3JtYXQ6IG1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFXG4gICAgICAgID8gZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0RmlsZXNcbiAgICAgICAgOiBbXSxcbiAgICAgIGlzRm9ybWF0VXBsb2FkOlxuICAgICAgICBtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRSAmJlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiAwLFxuICAgICAgcmVwb3J0X2Zvcm1hdF9saW5rOiAnJyxcbiAgICAgIHJlcG9ydF9uYW1lOiBlbnRydXN0Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLFxuICAgICAgcmVwb3J0X3VwbG9hZF9mbGFnOiBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkXG4gICAgICAgID8gMVxuICAgICAgICA6IDAsXG4gICAgICByZXZpZXdfYWZ0ZXJfZGF5czogbW9yZU9wdGlvbnM/LlJFVklFV0VSXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXMgPT09ICcnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBOdW1iZXIoZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXMpXG4gICAgICAgIDogMCxcbiAgICAgIHJldmlld19mYWlsZWRfYWZ0ZXJfZGF5czogbW9yZU9wdGlvbnM/LlJFVklFV0VSXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzID09PSAnJ1xuICAgICAgICAgID8gMFxuICAgICAgICAgIDogTnVtYmVyKGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5cylcbiAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3ZXJfYXJyOiBtb3JlT3B0aW9ucz8uUkVWSUVXRVJcbiAgICAgICAgPyB7XG4gICAgICAgICAgbGV2ZWwxOiB7XG4gICAgICAgICAgICByZXZpZXdlcnM6IHRoaXMuc2V0UmV2aWV3ZXJQYXlsb2FkKFxuICAgICAgICAgICAgICB0aGlzLnJldmlld2VyVXNlckxpc3QsXG4gICAgICAgICAgICAgICdsaXN0JyxcbiAgICAgICAgICAgICAgZW50cnVzdEZvcm0ucmV2aWV3ZXJzLmFjY2VwdGVkRGF0YSxcbiAgICAgICAgICAgICAgZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgICAgICAgICAgID8gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgICAgOiAnQU5ZT05FJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHR5cGU6IGVudHJ1c3RGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcbiAgICAgICAgICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgOiAnQU5ZT05FJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICAgIDoge30sXG4gICAgICB1c2VyR3JvdXBJZHM6IHtcbiAgICAgICAgYXNzaWduZWVBbGxHcm91cElkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsICd1Z2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGFzc2lnbmVlQW55b25lR3JvdXBJZHM6XG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQU5ZX09ORSdcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LCAndWdpZCcpXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBjY0VtYWlsR3JvdXBJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LFxuICAgICAgICAgICAgJ3VnaWQnXG4gICAgICAgICAgKSA/PyBbXSxcbiAgICAgICAgZmFpbHVyZUNDRW1haWxHcm91cElkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QsXG4gICAgICAgICAgICAndWdpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgICByZXZpZXdlckdyb3VwSWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LFxuICAgICAgICAgICAgJ3VnaWQnXG4gICAgICAgICAgKSA/PyBbXSxcbiAgICAgIH0sXG4gICAgICBleGlzdGluZ1VzZXJJZHM6IHtcbiAgICAgICAgYXNzaWduZWVBbGxJZHM6XG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlcz8ubGlzdCwgJ3VpZCcpXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBhc3NpZ25lZUFueW9uZUlkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVzPy5saXN0LCAndWlkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGNjRW1haWxNZW1iZXJJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/Lm92ZXJzZWVycz8ubGlzdCwgJ3VpZCcpID8/IFtdLFxuICAgICAgICBmYWlsdXJlQ0NFbWFpbE1lbWJlcklkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0LCAndWlkJykgPz9cbiAgICAgICAgICBbXSxcbiAgICAgICAgcmV2aWV3ZXJJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0LFxuICAgICAgICAgICAgJ3VpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgfSxcbiAgICAgIHJldmlld2VyX2NoZWNrcG9pbnRzOiBbeyBjaGVja3BvaW50czogW10sIGluc3RydWN0aW9uOiAnJyB9XSxcbiAgICAgIHJldmlld2VyX2lkOiAwLFxuICAgICAgcmlza19jbGFzczogdGhpcy5pc1Jpc2tFbmFibGUgPyBlbnRydXN0Rm9ybS5yaXNrQ2xhc3MgOiAnbG93X21lZGl1bScsXG4gICAgICByaXNrX2lkczogJycsXG4gICAgICByaXNrX21hdHJpeF9kYXRhOiBtb3JlT3B0aW9ucz8uUklTS19DTEFTU0lGSUNBVElPTlxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJpc2tNYXRyaXhcbiAgICAgICAgOiAnMCwwLDAsMCwwLDAnLFxuICAgICAgc2FtcGxlX3NpemU6IDAsXG4gICAgICBzdGFydF9kYXRlX3V0Yzogc3RhcnREYXRlLFxuICAgICAgc3RhdHV0b3J5X2RheTogMCxcbiAgICAgIHRlc3RfcmVxdWlyZWRfZmxhZzogbW9yZU9wdGlvbnM/LkFTU1VSQU5DRVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDBcbiAgICAgICAgOiAwLFxuICAgICAgdGVzdHBsYW5fY2F0ZWdvcnlfaWQ6IG1vcmVPcHRpb25zPy5BU1NVUkFOQ0VcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3N1cmFuY2VMaXN0LCAnY2F0ZWdvcnlfaWQnKVxuICAgICAgICA6IFtdLFxuICAgICAgdGVzdHBsYW5fY2F0ZWdvcnlfbWFuYWdlcjogJycsXG4gICAgICBhdWRpdF9jYXRlZ29yeV9kZXRhaWxzOlxuICAgICAgICBtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscz8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOlxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgICAgc2FtcGxlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAwID8gdGhpcy5zYW1wbGVWYWx1ZSA6IDAsXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAxID8gdGhpcy5zYW1wbGVQZXJjZW50YWdlIDogMCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiBgMX4wfiR7dGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZX1+MWAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogbW9tZW50KHRoaXMuYXVkaXRUaW1lLCAnSEg6bW0gYScpLmZvcm1hdChcbiAgICAgICAgICAgICAgJ0hIOm1tOnNzJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcbiAgICAgICAgICAgIHNhbXBsZTogMCxcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogYGAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXG4gICAgICAgICAgfSxcbiAgICAgIGFzc2Vzc21lbnQ6IHtcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICA6ICcnLFxuICAgICAgICBhc3Nlc3NtZW50X2lkOiBtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVCAmJiB0aGlzLmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1xuICAgICAgICAgID8gZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5haWRcbiAgICAgICAgICA6IGVudHJ1c3RGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkLFxuICAgICAgfSxcbiAgICAgIGFzc2Vzc21lbnRfY2hlY2twb2ludDogbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTX05FV1xuICAgICAgICA/IE9iamVjdC5rZXlzKGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHMpPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzXG4gICAgICAgICAgOiB7fVxuICAgICAgICA6IHt9LFxuICAgICAgcXVlc3Rpb25uYWlyZV90eXBlOiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXG4gICAgICAgID8gT2JqZWN0LmtleXMoZW50cnVzdEZvcm0/Lm5ld19jaGVja3BvaW50cyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnXG4gICAgICAgICAgOiBtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVCAmJiBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICAgID8gJ2Fzc2Vzc21lbnQnXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cykgIT0gJycgJiZcbiAgICAgICAgICAgICAgbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXG4gICAgICAgICAgICAgID8gJ2NoZWNrcG9pbnQnXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgOiAnJyxcblxuICAgICAgbGlua2VkX0dSQ19pZHM6IG1vcmVPcHRpb25zPy5HUkNfT0JKRUNUU1xuICAgICAgICA/IGVudHJ1c3RGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5tYXAoKGdyYzogYW55KSA9PiBncmMuZ3JjaWQpXG4gICAgICAgIDogW10sXG4gICAgICBmcmVxdWVuY3k6IHRoaXMuZnJlcXVlbmN5T2JqZWN0LFxuICAgICAgc2VsZWN0ZWRDYXRlZ29yeTogdGhpcy5zZWxlY3RlZFByb2dyYW1zXG4gICAgfTtcblxuXG5cbiAgICBpZiAodGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCkge1xuICAgICAgcGF5bG9hZFsncmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlJ10gPVxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICAgID8gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGVcbiAgICAgICAgICA6IDA7XG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlckFyciddID1cbiAgICAgICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJiBtb3JlT3B0aW9ucz8uUkNcbiAgICAgICAgICA/IHJjRGV0YWlsc0lkQXJyXG4gICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zaWJpbGl0eVBheWxvYWQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5idWlsZFJlc3BvbnNpYmlsaXR5UGF5bG9hZChwYXlsb2FkKTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkID0gcGF5bG9hZDtcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnIHx8IHRoaXMuaXNEdXBsaWNhdGUpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLnN1Ym1pdEVudHJ1c3QocmVzcG9uc2liaWxpdHlQYXlsb2FkKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xuXG4gICAgICAgICAgaWYgKHJlcy5tZXNzYWdlICYmIHJlcy5tZXNzYWdlLnRvTG93ZXJDYXNlKCkgPT09ICdidWxrIGVudHJ1c3QnKSB7XG4gICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgWW91IGhhdmUgZW50cnVzdGVkICR7cmVzLmNhbGN1bGF0ZV9ub19vZl9yZXNwb25zaWJpaXRpZXN9IHJlc3BvbnNpYmlsaXRpZXMuIFRoZXNlIHdvdWxkIGJlIHJlZmxlY3RlZCB3aXRoaW4geW91ciBhY2NvdW50IGluIHNvbWV0aW1lLmA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyAmJiBwYXlsb2FkLmNyZWF0ZWRfYnkgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID1cbiAgICAgICAgICAgICAgJ1RoaXMgcmVzcG9uc2liaWxpdHkgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIG5vdGlmaWNhdGlvbiBxdWV1ZS4nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jcmVhdGVkX2J5ID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNbMV0uYnV0dG9uVGV4dCA9ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnO1xuICAgICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgWW91IGp1c3QgY3JlYXRlZCBhIHJlc3BvbnNpYmlsaXR5IG9uIGJlaGFsZiAke2VudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LmZpbmQoXG4gICAgICAgICAgICAgICAgKG1lbWJlcjogYW55KSA9PiBtZW1iZXIubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcl9pZFxuICAgICAgICAgICAgICApLm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy90aGlzLnJlc2V0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbV29ya2Zsb3dDb21wbGlhbmNlXSBlbnRydXN0UmVzcG9uc2liaWxpdHkgLSBFcnJvciByZXNwb25zZTonLCB7XG4gICAgICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnI/Lm1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvclN0YXR1czogZXJyPy5zdGF0dXMsXG4gICAgICAgICAgICBlcnJvckJvZHk6IGVycj8uZXJyb3IsXG4gICAgICAgICAgICBwYXlsb2FkOiByZXNwb25zaWJpbGl0eVBheWxvYWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZXh0cmFjdEVycm9yTWVzc2FnZShlcnI/Lm1lc3NhZ2UpIHx8ICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nO1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAnZXJyb3InXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3BvbnNpYmlsaXR5UGF5bG9hZCkge1xuICAgICAgICByZXNwb25zaWJpbGl0eVBheWxvYWRbJ2lkJ10gPSB0aGlzLnJlc3BvbnNpYmlsaXR5SWRcbiAgICAgIH1cbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmVzcG9uc2liaWxpdHkgaGFzIGJlZW4gbW9kaWZpZWQuYDtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVFbnRydXN0KHJlc3BvbnNpYmlsaXR5UGF5bG9hZCwgdGhpcy5yZXNwb25zaWJpbGl0eUlkLCB0cnVlKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgIHRvdGFsVXNlckxpc3Q6IGFueSxcbiAgICBzZWxlY3RlZEdyb3VwOiBhbnksXG4gICAgc2VsZWN0ZWRVc2VyczogYW55XG4gICkge1xuICAgIGxldCBncm91cFVzZXJMaXN0ID0gdGhpcy5nZXRHcm91cHNVc2VyRW1wbG95ZWVzSWQoXG4gICAgICB0b3RhbFVzZXJMaXN0LFxuICAgICAgc2VsZWN0ZWRHcm91cFxuICAgICk7XG4gICAgbGV0IGlkcyA9IG5ldyBTZXQoc2VsZWN0ZWRVc2Vycy5tYXAoKHVzZXI6IGFueSkgPT4gdXNlcj8ubXlfbWVtYmVyX2lkKSk7XG4gICAgbGV0IHVzZXJMaXN0ID0gW1xuICAgICAgLi4uc2VsZWN0ZWRVc2VycyxcbiAgICAgIC4uLmdyb3VwVXNlckxpc3QuZmlsdGVyKFxuICAgICAgICAoZ3JvdXBVc2VyOiBhbnkpID0+ICFpZHMuaGFzKGdyb3VwVXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKSxcbiAgICBdO1xuICAgIHJldHVybiB1c2VyTGlzdDtcbiAgfVxuXG4gIGNvbWJpbmVVc2VyQW5kVXNlckdyb3VwTWVtYmVycyhpc0dyb3VwPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlVXNlckxpc3QgPSBpc0dyb3VwXG4gICAgICAgID8gW3sgZW1wbG95ZWVfaWQ6IHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlX21lbWJlcl9pZCB9XVxuICAgICAgICA6IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0XG4gICAgICAgICk7XG4gICAgICB0aGlzLnJldmlld2VyVXNlckxpc3QgPSB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdDtcbiAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q7XG4gICAgICB0aGlzLm92ZXJzZWVyVXNlckxpc3QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0O1xuICAgICAgdGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgcmVzZXRzIHRoZSBmb3JtLlxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSA9IHtcbiAgICAgIGFzc2lnbm9yczoge1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICByZXNwb25zaWJpbGl0eToge1xuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlR3JvdXBzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgYXNzaWduZWVzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgYWxsb3dFZGl0RHVlRGF0ZTogZmFsc2UsXG4gICAgICBmcmVxdWVuY3k6ICcnLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgb2JqZWN0aXZlOiAnJyxcbiAgICAgIHJjOiBbXSxcbiAgICAgIGNhdGVnb3J5OiBbXSxcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogJycsXG4gICAgICBjdXN0b21UYWdzOiBbXSxcbiAgICAgIGNoZWNrcG9pbnRzOiBbXSxcbiAgICAgIHJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBncm91cFJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBvdmVyc2VlcnM6IHtcbiAgICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIG92ZXJzZWVyc0dyb3Vwczoge1xuICAgICAgICBub3RpZnlMaXN0OiBbXSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcbiAgICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICAgIGZvcm1hdExpbmtzOiBbXSxcbiAgICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXNzdXJhbmNlTGlzdDogW10sXG4gICAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXG4gICAgICByaXNrQ2xhc3M6ICdsb3cnLFxuICAgICAgcmlza01hdHJpeDogJzAsMCwwLDAsMCwwJyxcbiAgICAgIHByb2dyYW06IFtdLFxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IFtdLFxuICAgIH07XG4gICAgdGhpcy5tb3JlT3B0aW9ucyA9IHtcbiAgICAgIE9CSkVDVElWRTogZmFsc2UsXG4gICAgICBSQzogZmFsc2UsXG4gICAgICBDQVRFR09SWTogZmFsc2UsXG4gICAgICBGT1JNQVRFX0VWSURFTkNFOiBmYWxzZSxcbiAgICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcbiAgICAgIFJJU0tfQ0xBU1NJRklDQVRJT046IGZhbHNlLFxuICAgICAgUkVWSUVXRVI6IGZhbHNlLFxuICAgICAgT1ZFUlNFRVI6IGZhbHNlLFxuICAgICAgQVNTVVJBTkNFOiBmYWxzZSxcbiAgICAgIEFQUFM6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdIb3cgb2Z0ZW4gZG9lcyB0aGUgcmVzcG9uc2liaWxpdHkgb2NjdXI/JztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgICBwYXR0ZXJuOiAnJyxcbiAgICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgd2luZG93OiAwLFxuICAgICAgZmFpbGVkOiAwLFxuICAgICAgdGltZTogREVGQVVMVF9USU1FLFxuICAgICAgZmFpbGVkVGltZTogJycsXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlsczoge30sXG4gICAgfTtcbiAgICB0aGlzLnNhbXBsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlUGVyY2VudGFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gLTE7XG4gICAgdGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZSA9IDI7XG4gICAgdGhpcy5hdWRpdFRpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XG4gICAgdGhpcy5pc0VudHJ1c3QgPSB0cnVlO1xuICAgIHRoaXMuYXNzZXNzbWVudERldGFpbHMgPSBudWxsO1xuICAgIHRoaXMub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkgPSBudWxsO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzID0ge1xuICAgIH07XG4gICAgdGhpcy5yZXNldEZvcm0uZW1pdCh0cnVlKTtcbiAgfVxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcbiAgICAgIHRoaXMuY2xvc2VTbWlsZXkoJ2RzJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlldyc6XG4gICAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXRpZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBjb25zdCBpZCA9IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhPy5kYXRhPy5yZXNwb25zaWJpbGl0eT8uaWQ7XG4gICAgbGV0IHVybFN1YnN0cmluZyA9ICcvY29tcGxpYW5jZS9yZXNwb25zaWJpbGl0aWVzLyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgdXJsU3Vic3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB1cmxTdWJzdHJpbmc7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0aGlzLm1vZGUgIT09ICdFRElUJyk7XG5cbiAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIC8vIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlEYXRhKTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudDogYW55KSB7XG4gICAgY29uc3QgZnJlcXVlbmN5RGF0YSA9IGV2ZW50Py5wYXR0ZXJuPy5zcGxpdCgnficpO1xuICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEYXRhWzBdKSA9PSA2KSB7XG4gICAgICByZXR1cm4gZXZlbnQ/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gZm9yIGVkaXQgcmVzcG9uc2liaWxpdHlcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWREYXksIHNlbGVjdGVkTW9udGggfSA9IHRoaXMuZ2V0U2VsZWN0ZWRBdHRyaWJ1dGVzKGV2ZW50KTtcbiAgICBsZXQgZGF0YTogYW55ID0ge1xuICAgICAgcGF0dGVybjogZXZlbnQ/LnBhdHRlcm4sXG4gICAgICB3aW5kb3c6IGV2ZW50Py5zdGFydEJlZm9yZSxcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8uZW5kQWZ0ZXIsXG4gICAgICBmYWlsZWRfdGltZV91dGM6IGV2ZW50Py5mYWlsZWRfdGltZV91dGMsXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHMsXG4gICAgICBzdGFydEZyb206IE51bWJlcihldmVudD8uc3RhcnRfb2ZfZGF5X3V0YyksXG4gICAgICB0aW1lSW4yNEhyOiBldmVudD8udGltZSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50Py5hdXRvRGVhY3RpdmF0ZSxcbiAgICAgIHN0YXJ0RGF0ZTogTnVtYmVyKGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjKSxcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcbiAgICAgICAgZXZlbnQ/LnRpbWVcbiAgICAgICksXG5cbiAgICAgIGNhc2U6IGV2ZW50Py50eXBlLFxuICAgICAgZGF5OiBldmVudD8uZGF5LFxuICAgICAgZXZlcnk6IGV2ZW50Py5yZXBlYXRPcHRpb25zPy5ldmVyeSxcbiAgICAgIHNlbGVjdGVkRGF5OiBzZWxlY3RlZERheSxcbiAgICAgIHNlbGVjdGVkTW9udGg6IHNlbGVjdGVkTW9udGgsXG4gICAgICBzZWxlY3RlZFR5cGU6IGV2ZW50Py5vbkdvaW5nPy5zZWxlY3RlZFR5cGUsXG4gICAgICByYW5kb21JbnN0YW5jZXM6IGV2ZW50Py5yYW5kb20/LnJhbmRvbUluc3RhbmNlcyxcbiAgICAgIHNlbGVjdGVkT25nb2luZ1R5cGU6IGV2ZW50Py5vbkdvaW5nPy5zZWxlY3RlZE9uZ29pbmdUeXBlLFxuICAgICAgb25Db21wbGV0aW9uOiBldmVudD8ub25Db21wbGV0ZSxcblxuICAgIH07XG5cblxuICAgIGlmIChldmVudD8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0gZXZlbnQ/Lm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5O1xuICAgIH1cbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEoZGF0YSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZEF0dHJpYnV0ZXMoZXZlbnQ6IGFueSkge1xuICAgIGxldCBzZWxlY3RlZERheTogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgc2VsZWN0ZWRNb250aDogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCByZXBlYXRPbiA9IGV2ZW50Py5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbi5zcGxpdCgnJyk7XG4gICAgaWYgKHJlcGVhdE9uLmxlbmd0aCA9PT0gNykge1xuICAgICAgcmVwZWF0T24uZm9yRWFjaCgoZWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKE51bWJlcihlbGUpID09PSAxKSB7XG4gICAgICAgICAgc2VsZWN0ZWREYXkucHVzaChpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNlbGVjdGVkRGF5LCBzZWxlY3RlZE1vbnRoOiBbXSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXBlYXRPbi5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoZWxlID09PSAnMScpIHtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLnB1c2goaW5kZXggKyAxKTs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgc2VsZWN0ZWREYXksIHNlbGVjdGVkTW9udGggfTtcbiAgICB9XG5cbiAgfVxuXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50Py5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXI7XG5cbiAgICAvLyBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XG4gICAgLy8gaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xuICAgIC8vICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPVxuICAgIC8vICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xuICAgIC8vIH1cbiAgfVxuXG4gIHNldFBheWxvYWQoZXZlbnQ6IGFueSk6IFJlc3BvbnNpYmlsaXR5IHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hlbicpIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5mcmVxdWVuY3lPYmplY3QgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2V0RnJlcXVlbmN5T2JqZWN0KGV2ZW50KTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzID1cbiAgICAgIGV2ZW50LmNhc2UgPT09ICdkYWlseScgPyAwIDogZXZlbnQud2luZG93O1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5mYWlsZWRBZnRlcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfdGltZV91dGMgPSBldmVudC5mYWlsZWRfdGltZV91dGM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmxpZmVjeWNsZURldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVwb3J0SWQgPSBldmVudC5yZXBvcnRJZCA/PyAwO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RnJvbTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS50aW1lSW4yNEhyID0gZXZlbnQudGltZUluMjRIcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG5cbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgdGhpcy5mcmVxdWVuY3lPYmplY3QgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2V0RnJlcXVlbmN5T2JqZWN0KGV2ZW50KTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICBjaGVja0JsYW5rKGRhdGE6IHN0cmluZykge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBsZXQgdGV4dCA9IGRhdGE7XG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7YW55fSByZXMgLSBhbnkgPSB7XG4gICAqL1xuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihmcmVxdWVuY3k6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmcmVxdWVuY3lUaW1lID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKGZyZXF1ZW5jeT8udGltZSk7XG4gICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5LnBhdHRlcm4uc3BsaXQoJ34nKTtcbiAgICAgIHN3aXRjaCAoZnJlcXVlbmN5Py50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhaWx5JzpcbiAgICAgICAgICB0aGlzLmdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgICAgdGhpcy5nZXRXZWVrbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgICAgdGhpcy5nZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICAgICAgdGhpcy5nZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYmlhbm51YWxseSc6XG4gICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5ZWFybHknOlxuICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29uZV90aW1lJzpcbiAgICAgICAgICB0aGlzLmdldE9uZVRpbWVQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmFuZG9tJzpcbiAgICAgICAgICB0aGlzLmdldFJhbmRvbVBsYWNlaG9sZGVyKGZyZXF1ZW5jeSwgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29uX2NvbXBsZXRlJzpcbiAgICAgICAgICB0aGlzLmdldE9uQ29tcGxldGVQbGFjZWhvbGRlcihmcmVxdWVuY3ksIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgICAnWW91IGhhdmUgc2VsZWN0ZWQgYW4gb25nb2luZyBmcmVxdWVuY3kuJztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29uX2NvbXBsZXRpb25fb2YnOlxuICAgICAgICAvLyB0aGlzLmdldE9uQ29tcGxldGlvbk9mKFxuICAgICAgICAvLyAgIGZyZXF1ZW5jeSxcbiAgICAgICAgLy8gICByZXM/Lm9uX2NvbXBsZXRpb25fb2ZbMF0sXG4gICAgICAgIC8vICAgcmVzLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEl0IGdldHMgdGhlIGZyZXF1ZW5jeSBkZXRhaWxzIGFuZCByZXBvcnQgaWQsIHRoZW4gaXQgc2V0cyB0aGUgZnJlcXVlbmN5IHBsYWNlaG9sZGVyIHRvIHRoZSBmcmVxdWVuY3lcbiAgICogZGV0YWlscyBhbmQgdGhlbiBpdCBnZXRzIHRoZSBvbiBjb21wbGV0aW9uIG9mIHJlc3BvbnNpYmlsaXR5IGFuZCBzZXRzIHRoZSBmcmVxdWVuY3kgcGxhY2Vob2xkZXIgdG9cbiAgICogdGhlIGZyZXF1ZW5jeSBkZXRhaWxzIGFuZCB0aGUgcmVwb3J0IG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gWzBdID0mZ3Q7IFwiMVwiXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXBvcnRJZCAtIG51bWJlclxuICAgKi9cbiAgZ2V0T25Db21wbGV0aW9uT2YoXG4gICAgZnJlcXVlbmN5RGV0YWlsczogYW55LFxuICAgIHJlcG9ydElkOiBudW1iZXIsXG4gICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlsczogYW55XG4gICkge1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXG4gICAgICAnICcgK1xuICAgICAgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXG4gICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJztcbiAgICBpZiAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlscykge1xuICAgICAgaWYgKHJlcG9ydElkID09PSBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzLlJlcG9ydElkKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXG4gICAgICAgICAgJyBhZnRlciBjb21wbGV0aW9uIG9mICcgK1xuICAgICAgICAgIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzXG4gICAgICAgICAgICA/IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMucmVwb3J0X25hbWVcbiAgICAgICAgICAgIDogJycpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogXCJJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1szXSBpcyAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0RhaWx5IGJ5ICcgKyBmcmVxdWVuY3lUaW1lLFxuICAgKiBvdGhlcndpc2UgaWYgZnJlcXVlbmN5RGV0YWlsc1szXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiBzZXQgdGhlIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIHRvICdFdmVyeSAnICtcbiAgICogcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgKyAnIGRheXMgYnkgJyArIGZyZXF1ZW5jeVRpbWUuXCJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMCwgMCwgMCwgMV1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEyOjAwIEFNXCJcbiAgICovXG4gIGdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlscy5tYXAoTnVtYmVyKVxuICAgIGlmIChmcmVxdWVuY3lEZXRhaWxzPy5kYXkgPT09IDEpIHtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAnRXZlcnkgJyArXG4gICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gKyAoZnJlcXVlbmN5RGV0YWlsc1szXSA+IDEgPyAnIGRheXMnIDogJyBkYXknKSArXG4gICAgICAgICcgYnkgJyArXG4gICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIHdvcmRzLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMsIGxpa2UgdGhpczpcbiAgICpcbiAgICogZ2V0V2Vla2x5UGxhY2Vob2xkZXIoW1wiMVwiLFwiMiwzLDQsNSw2LDdcIixcIjFcIixcIjFcIl0sIFwiMTA6MDAgQU1cIilcbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIHdvcmRzLCBsaWtlIHRoaXM6XG4gICAqXG4gICAqIFwiRXZlcnkgTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheSBieSAxMDowMCBBTVwiPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxLDIsMyw0LDVcIiwgXCJcIiwgXCIxXCIsIFwiXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRXZWVrbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gZnJlcXVlbmN5RGV0YWlsc1sxXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJlcXVlbmN5U2VydmljZS5kYXlOYW1lW3BhcnNlSW50KGVsZSkgLSAxXTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5ICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSBhbHRlcm5hdGUgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPT09IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5IDNyZCAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA+IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5ICcgK1xuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAndGggJyArXG4gICAgICAgICAgc2VsZWN0ZWREYXkuam9pbigpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzLCBjb252ZXJ0cyB0aGVtIHRvIG1vbnRoIG5hbWVzLCBhbmQgdGhlbiBhZGRzIHRoZW0gdG8gYVxuICAgKiBzZW50ZW5jZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICB9KTtcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIDEsIDIsIDMsIDIxLCAyMiwgMjMsIG9yIGdyZWF0ZXIgdGhhbiAzLCB0aGVuIHNldCB0aGVcbiAgICogZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gYSBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBhbmQgdGhlIGZyZXF1ZW5jeURldGFpbHNbMl1cbiAgICogYW5kIHRoZSBmcmVxdWVuY3lUaW1lLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjNcIiwgXCIxXCIsIFwiMSwyLDNcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3QgcXVhcnRlcmx5ID0gW1xuICAgICAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxuICAgICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXG4gICAgICAgICcgTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxuICAgICAgXTtcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbW9udGggbmFtZXMuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0Qmlhbm51YWxQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgbGVzcyB0aGFuIDIsIHRoZW4gdGhlIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIGlzIHNldCB0byB0aGUgMXN0LCAybmQsXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoIGJ5IGZyZXF1ZW5jeVRpbWUuXG4gICAqXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGdyZWF0ZXIgdGhhbiAxLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCwgSW50ZXJ2YWw6IGV2ZXJ5IHllYXJTZXF1ZW5jZSB5ZWFycyBieSBmcmVxdWVuY3lUaW1lLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIlllYXJseVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCB5ZWFyU2VxdWVuY2UgPVxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA+IDAgPyBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA6IDE7XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPCAyKSB7XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAxKSB7XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnMXN0ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnMm5kICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnM3JkICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3RoIG9mICAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgcGxhY2Vob2xkZXIgc3RyaW5nIGZvciBvbmUtdGltZSBmcmVxdWVuY3kgZXZlbnRzLlxuICAgKiBcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBBcnJheSBjb250YWluaW5nIGZyZXF1ZW5jeSBkZXRhaWxzIHdoZXJlOlxuICAgKiAgIC0gZnJlcXVlbmN5RGV0YWlsc1szXTogRGF5IG9mIHRoZSBtb250aFxuICAgKiAgIC0gZnJlcXVlbmN5RGV0YWlsc1syXTogTW9udGggbnVtYmVyICgxLTEyKVxuICAgKiAgIC0gZnJlcXVlbmN5RGV0YWlsc1sxXTogWWVhclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFRpbWUgc3RyaW5nIGluIGZvcm1hdCAnSEg6bW0nIChlLmcuICcwOTowMCcpXG4gICAqIFxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBGb3IgSmFudWFyeSAxNSwgMjAyNCBhdCAwOTowMCBBTVxuICAgKiBnZXRPbmVUaW1lUGxhY2Vob2xkZXIoW251bGwsIDIwMjQsIDEsIDE1XSwgJzA5OjAwIGFtJylcbiAgICogLy8gUmV0dXJuczogXCJPbmUgVGltZSAxNSBKYW51YXJ5IDIwMjQgYnkgMDk6MDAgQU1cIlxuICAgKi9cbiAgZ2V0T25lVGltZVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAgY29uc3QgbW9udGhOYW1lID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmdldE1vbnRoTmFtZShwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSk7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdPbmUgVGltZSAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgJyArIG1vbnRoTmFtZSArICcgJyArIGZyZXF1ZW5jeURldGFpbHNbMV0gKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBmcmVxdWVuY3lEZXRhaWxzIGFycmF5IGFuZCBhIGZyZXF1ZW5jeVRpbWUgYXJyYXkgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gWzQsMSwxLDFdXG4gICAqL1xuICBnZXRSYW5kb21QbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIGNvbnN0IHF1YXJ0ZXJseSA9IFtcbiAgICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXG4gICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXG4gICAgICAnIE1hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgICBdO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBmcmVxdWVuY3lEZXRhaWxzPy5wYXR0ZXJuPy5zcGxpdCgnficpO1xuICAgIHtcbiAgICAgIHN3aXRjaCAocGFyc2VJbnQocGF0dGVyblsxXSkpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJ0V2ZXJ5IHdlZWsgZm9yICcgKyBwYXR0ZXJuWzNdICsgJyByYW5kb20gaW5zdGFuY2VzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJyBFdmVyeSAnICtcbiAgICAgICAgICAgIHBhdHRlcm5bMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGFsaWduXG4gICAgICAgICAgICB9KSArXG4gICAgICAgICAgICAnIGZvciAnICtcbiAgICAgICAgICAgIHBhdHRlcm5bM10gK1xuICAgICAgICAgICAgJyByYW5kb20gaW5zdGFuY2VzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJ0V2ZXJ5ICcgK1xuICAgICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KHBhdHRlcm5bMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgICAnIGZvciAnICtcbiAgICAgICAgICAgIHBhdHRlcm5bM10gK1xuICAgICAgICAgICAgJyByYW5kb20gaW5zdGFuY2VzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJ0V2ZXJ5IHllYXIgZm9yICcgKyBwYXR0ZXJuWzNdICsgJyByYW5kb20gaW5zdGFuY2VzJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRPbkNvbXBsZXRlUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICBjb25zdCBkYXlzID0gZnJlcXVlbmN5RGV0YWlscy5vbkNvbXBsZXRlLmR1ZUFmdGVyID4gMSA/ICdkYXlzJyA6ICdkYXknO1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBmcmVxdWVuY3lEZXRhaWxzLm9uQ29tcGxldGUuZHVlQWZ0ZXIgKyAnICcgKyBkYXlzICsgJyBhZnRlciBjb21wbGV0aW9uIG9mICcgKyB0aGlzLnJlc3BvbnNpYmlsaXR5RGV0YWlscz8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHk/LnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVkaXQgYnV0dG9uLCB0aGUgZWRpdCBidXR0b24gaXMgaGlkZGVuIGFuZCB0aGUgaW5wdXQgZmllbGQgaXMgc2hvd24uXG4gICAqIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBpbnB1dCBmaWVsZCwgdGhlIGlucHV0IGZpZWxkIGlzIGhpZGRlbiBhbmQgdGhlIGVkaXQgYnV0dG9uIGlzIHNob3duLlwiXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZnVuY3Rpb25cbiAgICovXG4gIG9uRWRpdFdoYXQoZXZlbnQ6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG1ha2UgdGhlIGV4ZWN1dGlvbiBhZnRlciB0aGUgYWJvdmUgYm9vbGVhbiBoYXMgY2hhbmdlZFxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XG4gICAgICB0aGlzLndoYXRJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHthbnl9IFtyZXNdIC0gaXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgZ2V0RWRpdE1vcmVPcHRpb25zKHJlcz86IGFueSkge1xuICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xuICAgIH1cbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5hbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUFJPR1JBTSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkXG4gICAgKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnRk9STUFURV9FVklERU5DRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NIRUNLUE9JTlRTJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnR1JDX09CSkVDVFMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuR1JDX09CSkVDVFMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JFVklFV0VSJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0FTU1VSQU5DRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5BU1NVUkFOQ0UgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JFUVVJUkVTX0FVRElUJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJFUVVJUkVTX0FVRElUID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzLnF1ZXN0aW9ubmFpcmVfdHlwZSA9PT0gJ2Fzc2Vzc21lbnQnKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQVNTRVNTTUVOVCcpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5BU1NFU1NNRU5UID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzLnF1ZXN0aW9ubmFpcmVfdHlwZSA9PT0gJ2Fzc2Vzc21lbnRfY2hlY2twb2ludCcpIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UU19ORVcnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL2lmIGN1c3RvbSBmaWVsZHMgYXJlIHByZXNlbnQgaW4gdGhlIHJlc3BvbnNpYmlsaXR5IGZvcm0gYW5kIGN1c3RvbSBmaWVsZHMgYXJlIHByZXNlbnQgaW4gdGhlIGN1c3RvbSBmaWVsZHMgbGlzdFxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21GaWVsZHM/Lmxlbmd0aCA+IDAgJiYgdGhpcy5jdXN0b21GaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdDVVNUT01fRklFTERTJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNVU1RPTV9GSUVMRFMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICB9XG5cbiAgLy8gRm9ybWF0ICYgRXZpZGVuY2VcbiAgdGVzdEZ1bmN0aW9uKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID09PSBmYWxzZVxuICAgICkge1xuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID09ICc8YnI+Jykge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPSAnJztcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9PSAnPGJyPicpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldmlld2VyVHlwZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICBldmVudCA9PT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0ZWRTYW1wbGVEYXRhKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gZXZlbnQ7XG4gICAgdGhpcy50ZW1wQ2hlY2tWYWx1ZSA9IGV2ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHBvcHVsYXRlcyBhIGxpc3Qgb2YgYXNzdXJhbmNlIGNhdGVnb3JpZXMgYmFzZWQgb24gdGhlIHRlc3QgcGxhbiBjYXRlZ29yeSBzZWxlY3RlZC5cbiAgICogQHBhcmFtIHthbnl9IHRlc3RQbGFuQ2F0ZWdvcnkgLSBhbnlcbiAgICovXG4gIHBvcHVsYXRlQXNzdXJhbmNlTGlzdCh0ZXN0UGxhbkNhdGVnb3J5OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2UgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxuICAgICAgW3Rlc3RQbGFuQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXSxcbiAgICAgICdjYXRlZ29yeV9pZCdcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMgPSB0ZXN0UGxhbkNhdGVnb3J5O1xuICAgIGlmICh0ZXN0UGxhbkNhdGVnb3J5LnNhbXBsZSkge1xuICAgICAgdGhpcy5pc1NhbXBsZSA9IHRydWU7XG4gICAgICB0aGlzLnNhbXBsZVZhbHVlID0gdGVzdFBsYW5DYXRlZ29yeS5zYW1wbGU7XG4gICAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGVzdFBsYW5DYXRlZ29yeS5wZXJjZW50YWdlKSB7XG4gICAgICB0aGlzLmlzU2FtcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2FtcGxlUGVyY2VudGFnZSA9IHRlc3RQbGFuQ2F0ZWdvcnkucGVyY2VudGFnZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAxO1xuICAgIH1cbiAgICB0aGlzLnRlbXBDaGVja1ZhbHVlID0gdGhpcy5zZWxlY3RlZFNhbXBsZTtcbiAgICB0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlID0gdGVzdFBsYW5DYXRlZ29yeS5mcmVxdWVuY3lfcGF0dGVyblxuICAgICAgPyBwYXJzZUludCh0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuLnNwbGl0KCd+JylbMl0pXG4gICAgICA6IDI7XG4gICAgdGhpcy5hdWRpdFRpbWUgPSBtb21lbnQoXG4gICAgICB0ZXN0UGxhbkNhdGVnb3J5Py5mcmVxdWVuY3lfdGltZSxcbiAgICAgICdISDptbTpzcydcbiAgICApLmZvcm1hdCgnSEg6bW0gYScpO1xuICB9XG5cblxuXG4gIC8vb24gc2FtcGxlIHRvZ2dsZSBvbi9vZmZcbiAgY2hlY2tJbnB1dFZhbHVlKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQga2V5ID0gZXZlbnQuY2hhckNvZGU7IC8vICAgICAgICAga2V5ID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxuICAgIHJldHVybiAoa2V5ID4gNDcgJiYga2V5IDwgNTgpIHx8IGtleSA9PSA0NTtcbiAgfVxuXG4gIHN3aXRjaEVuYWJsZShldmVudDogYm9vbGVhbikge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IHRoaXMudGVtcENoZWNrVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiAgc2VsZWN0IEFzc2Vzc21lbnQgbGlzdCBhbmQgc2V0IGlkIHRvIHBheWxvYWRcbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzQXNzZXNzbWVudCA9IGZhbHNlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBldmVudDtcbiAgfVxuICAvLyBUT0RPOiBQb3B1bGF0ZSBhc3Nlc3NtZW50IGRhdGEgZnJvbSBhbHJlYWR5IHNlbGVjdGVkIGRhdGFcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhc3Nlc3NtZW50RGV0YWlscyA6IHNlbGVjdGVkIGFzc2Vzc21lbnQgZGV0YWlscyBsaWtlIGl0J3Mgb2JqZWN0IGlkIGFuZCBjYXRlZ29yeV9pZFxuICAgKi9cbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKHJlcywgYXNzZXNzbWVudERldGFpbHMsIHR5cGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRBc3Nlc3NtZW50RGF0YShyZXM6IGFueSwgYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlID09PSAnYXNzZXNzbWVudCcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuX2lkID09IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XG4gICAgICAgICAgICBpZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgIHF1ZXN0aW9uczogcmVzWzBdLnF1ZXN0aW9uc0NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShhc3Nlc3NtZW50RGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudCh7IGFzc2Vzc21lbnREZXRhaWxzOiByZXNbMF0ucXVlc3Rpb25zIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUmVtb3ZlQ2hlY2twb2ludHModHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludC5lbWl0KHR5cGUpO1xuICB9XG5cbiAgcmVtb3ZlQ2hlY2twb2ludCgpIHtcbiAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTID0gZmFsc2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgQXNzZXNzbWVudCBkZXRhaWxzXG4gICAqL1xuICBwb3N0QXNzZXNzbWVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0gZXZlbnQuYXNzZXNzbWVudERldGFpbHM7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscy5lbGVtZW50cz8ubGVuZ3RoO1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50VXBkYXRlZC5lbWl0KHRoaXMuY2hlY2twb2ludENvdW50KTtcbiAgICB0aGlzLnNldElzVXBsb2FkZWQoZmFsc2UpO1xuICB9XG5cbiAgc2V0SXNVcGxvYWRlZChldmVudDogYW55KSB7XG4gICAgaWYgKCFldmVudCkgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XG4gIH1cblxuICBjaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSB0aGlzLmFsbFByb2dhbVNlbGVjdGVkLmZpbHRlcihcbiAgICAgIChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0/LmlkICE9PSBldmVudD8uaWRcbiAgICApO1xuICAgIHRoaXMucmVtb3ZlUHJvZ3JhbShldmVudCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBudW1iZXJzIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHVuaXF1ZSBudW1iZXJzLlxuICAgKiBAcGFyYW0ge2FueX0gYXJyYXkgLSBUaGUgYXJyYXkgeW91IHdhbnQgdG8gZ2V0IHRoZSB1bmlxdWUgdmFsdWVzIGZyb20uXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICBnZXRVbmlxdWVJZHMoYXJyYXk6IGFueSkge1xuICAgIGNvbnN0IHVuaXF1ZSA9IFsuLi5uZXcgU2V0KGFycmF5KV07XG4gICAgcmV0dXJuIHVuaXF1ZTtcbiAgfVxuXG4gIG9wZW5Bc3NpZ25lZUNoYW5nZUNvbmZpcm1hdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQU5ZX09ORSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICcnO1xuICAgICAgdGhpcy5hc3NpZ25lZVR5cGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGUgaXMgRURJVCwgZW1pdCB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSByYWRpbyBidXR0b25cbiAgICovXG4gIG9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICBldmVudCA9PT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJyAmJiB0aGlzLmhhc1Jldmlld2VyKSB7XG4gICAgICB0aGlzLm9uUmV2aWV3ZXJUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xuICAgIGlmICh0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIGV2ZW50ID0ge1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiLFxuICAgICAgICBzdGF0ZTogMSxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudD8uc2VhcmNoU3RyaW5nICYmIHRoaXMuZ3JjU2VhcmNoU3RyaW5nICE9PSBldmVudD8uc2VhcmNoU3RyaW5nKSB7XG4gICAgICB0aGlzLmdyY1NlYXJjaFN0cmluZyA9IGV2ZW50Py5zZWFyY2hTdHJpbmc7XG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoe1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuZ3JjU2VhcmNoU3RyaW5nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZ3JjTG9hZGVyID0gdHJ1ZTtcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICBldmVudFsnZ3JjVHlwZSddID0gdGhpcy5zZWxlY3RlZEdSQ1RhYjtcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmdyY0xpc3QgPSBkYXRhO1xuICAgICAgICB0aGlzLmdyY0xvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZiAoZXZlbnQ/Lm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9IGRhdGE/LmRhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMuaW5jbHVkZXMoaXRlbS5ncmNpZCkpO1xuICAgICAgICAgIHRoaXMuc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIGBnZXRPdGhlckdSQ1RhYkNvdW50YCByZXRyaWV2ZXMgdGhlIGNvdW50IG9mIGRpZmZlcmVudCB0eXBlcyBvZiBpdGVtcyAoYXNzZXRzLFxuICAgKiBwcm9jZXNzZXMsIHZlbmRvcnMsIGludmVudG9yeSkgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdGFicyB3aXRoIHRoZSBjb3VudC5cbiAgICogQHBhcmFtIHthbnl9IFtldmVudF0gLSBUaGUgXCJldmVudFwiIHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZVxuICAgKiBcImdldE90aGVyR1JDVGFiQ291bnRcIiBmdW5jdGlvbi4gSXQgaXMgb2YgdHlwZSBcImFueVwiLCB3aGljaCBtZWFucyBpdCBjYW4gYWNjZXB0IGFueSBkYXRhIHR5cGUuXG4gICAqL1xuICBnZXRPdGhlckdSQ1RhYkNvdW50KGV2ZW50PzogYW55KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgZXZlbnQgPSB7fTtcbiAgICB9XG5cbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICB0aGlzLmdyY1RhYkxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ1RhYnNDb3VudChldmVudCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xuICAgICAgICAgIEFTU0VUOiAnQXNzZXRzJyxcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcbiAgICAgICAgICBWRU5ET1I6ICdWZW5kb3JzJyxcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdyY1RhYkxvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBUQUJfTkFNRSA9IE9CSkVDVF9MQUJFTFt0YWI/LnRpdGxlPy50b1VwcGVyQ2FzZSgpXTtcbiAgICAgICAgaWYgKFRBQl9OQU1FKSB7XG4gICAgICAgICAgdGFiLnRpdGxlID0gVEFCX05BTUU7XG4gICAgICAgICAgdGFiLnZhbHVlID0gaW5kZXg7XG4gICAgICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICAgIHRhYi5rZXkgPSBUQUJfTkFNRT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHt0YWIua2V5fV90eXBlX2NvdW50YDtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHRhYi5jb3VudCA9IGRhdGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBbGxSQ0lkcyhyY0lkczogYW55KSB7XG4gICAgaWYgKCFyY0lkcyB8fCAhQXJyYXkuaXNBcnJheShyY0lkcykgfHwgcmNJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsSWRzOiBudW1iZXJbXSA9IHJjSWRzLmZsYXRNYXAoKHJjOiBhbnkpID0+IHtcbiAgICAgIGlmICghcmMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnRJZHMgPSAocmMuaXRlbV9wYXJlbnRfaWRzICYmIEFycmF5LmlzQXJyYXkocmMuaXRlbV9wYXJlbnRfaWRzKSlcbiAgICAgICAgPyByYy5pdGVtX3BhcmVudF9pZHMubWFwKE51bWJlcilcbiAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IGNoaWxkSWRzID0gKHJjLml0ZW1fY2hpbGRfaWRzICYmIEFycmF5LmlzQXJyYXkocmMuaXRlbV9jaGlsZF9pZHMpKVxuICAgICAgICA/IHJjLml0ZW1fY2hpbGRfaWRzLm1hcChOdW1iZXIpXG4gICAgICAgIDogW107XG4gICAgICBjb25zdCByY0lkID0gTnVtYmVyKHJjLnJjX2lkIHx8IHJjLnJjaWQgfHwgcmMuaXRlbV9pZCB8fCAwKTtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4ucGFyZW50SWRzLFxuICAgICAgICAuLi5jaGlsZElkcyxcbiAgICAgICAgcmNJZFxuICAgICAgXTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxuICAgICAgLmZpbHRlcigocmM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByY0lkVG9NYXRjaCA9IHJjPy5yY19pZCB8fCByYz8ucmNpZCB8fCByYz8uaXRlbV9pZDtcbiAgICAgICAgcmV0dXJuIGFsbElkcy5pbmNsdWRlcyhOdW1iZXIocmNJZFRvTWF0Y2gpKTtcbiAgICAgIH0pXG4gICAgICAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCB8fCBlbGUucmNpZCB8fCBlbGUuaXRlbV9pZClcbiAgICAgIC5qb2luKCcsJyk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKSB7XG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0R1JDRGF0YVdpdGhUeXBlcygpIHtcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XG4gICAgICBhc3NldHM6IFtdLFxuICAgICAgcHJvY2Vzc2VzOiBbXSxcbiAgICAgIHZlbmRvcnM6IFtdLFxuICAgICAgaW52ZW50b3J5OiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzLmZpbHRlcihcbiAgICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICAgKTtcbiAgICB0aGlzLmZpbHRlck90aGVyR1JDRGF0YShldmVudCwgZ3JjVHlwZXNbZXZlbnQ/LnR5cGVdKTtcbiAgICB0aGlzLm90aGVyR1JDQ2FyZFswXS5zZWxlY3RlZENvdW50XG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxuICAgICAgOiAwO1xuICB9XG5cbiAgZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxuICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICk7XG4gIH1cblxuICAvLyBOZXcgUHJvZ3JhbSBMaXN0XG4gIHByb2dyYW1zITogTGlzdEl0ZW1bXTsgLy8gQXNzaWduIG1vY2sgZGF0YVxuICBzZWxlY3RlZFByb2dyYW1zOiBhbnkgPSB7fTtcblxuXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbUl0ZW1UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGN1c3RvbUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuXG5cblxuICBvbkl0ZW1zU2VsZWN0ZWRDaGFuZ2UoaXRlbXM6IExpc3RJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXMgPSBpdGVtcztcbiAgICB0aGlzLmFsbFByb2dhbVNlbGVjdGVkID0gKFtdIGFzIGFueSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoaXRlbXMpKTtcbiAgfVxuXG4gIHNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zXG4gICAgdGhpcy5nZW5lcmF0ZUN1c3RvbVRhZ3MoKVxuXG4gIH1cblxuICBnZW5lcmF0ZUN1c3RvbVRhZ3MoKSB7XG4gICAgLy8gRW5zdXJlIGN1c3RvbVRhZ3MgZXhpc3RzXG4gICAgaWYgKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY3VzdG9tVGFncykge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IFtdO1xuICAgIH1cblxuICAgIC8vIFByZXBhcmUgZXhpc3RpbmcgdGFncyBmb3IgcXVpY2sgbG9va3VwXG4gICAgY29uc3QgZXhpc3RpbmdUYWdzU2V0ID0gbmV3IFNldChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3NcbiAgICAgICAgLm1hcCgodGFnSXRlbTogYW55KSA9PiB0YWdJdGVtLm5hbWU/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuXG4gICAgLy8gQ29sbGVjdCBuZXcgdGFnc1xuICAgIGNvbnN0IG5ld1RhZ3M6IGFueVtdID0gW107XG4gICAgY29uc3QgcHJvZ3JhbUdyb3VwcyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFByb2dyYW1zIHx8IHt9KTtcblxuICAgIHByb2dyYW1Hcm91cHMuZm9yRWFjaCgocHJvZ3JhbUdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9ncmFtR3JvdXApKSByZXR1cm47XG5cbiAgICAgIHByb2dyYW1Hcm91cC5mb3JFYWNoKChwcm9ncmFtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gcHJvZ3JhbT8uY3VzdG9tRmllbGRzIHx8IFtdO1xuICAgICAgICBjdXN0b21GaWVsZHMuZm9yRWFjaCgodGFnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBsb3dlclRhZyA9IHRhZz8udG9Mb3dlckNhc2U/LigpO1xuICAgICAgICAgIGlmIChsb3dlclRhZyAmJiAhZXhpc3RpbmdUYWdzU2V0Lmhhcyhsb3dlclRhZykpIHtcbiAgICAgICAgICAgIG5ld1RhZ3MucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IHRhZyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICBwcm9ncmFtSWQ6IHByb2dyYW0uaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGV4aXN0aW5nVGFnc1NldC5hZGQobG93ZXJUYWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIE1lcmdlIG5ldyBhbmQgZXhpc3RpbmcgdGFnc1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPSBbXG4gICAgICAuLi5uZXdUYWdzLFxuICAgICAgLi4udGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyxcbiAgICBdO1xuICB9XG5cblxuICBnZXQgY3VycmVudFVzZXJJbmZvKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpPy51c2VyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lbWJlcl9lbWFpbDogY3VycmVudFVzZXI/LmVtYWlsLFxuICAgICAgbWVtYmVyX2lkOiBjdXJyZW50VXNlci5pZCxcbiAgICAgIG1lbWJlcl9uYW1lOiBjdXJyZW50VXNlci5uYW1lLFxuICAgICAgb3JnYW5pc2F0aW9uX2lkOiBjdXJyZW50VXNlci5vcmdhbmlzYXRpb25faWQsXG4gICAgICB1aWQ6IGN1cnJlbnRVc2VyLnVpZCxcbiAgICAgIF9pZDogdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLl9pZCxcbiAgICB9XG4gIH1cblxuICByZW1vdmVQcm9ncmFtKHByb2dyYW06IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUHJvZ3JhbXMpO1xuICAgIGtleXMuZm9yRWFjaCgoa2V5OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uZmluZEluZGV4KFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5pZCA9PT0gcHJvZ3JhbT8uaWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc1trZXldLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwb3B1bGF0ZVJlc3BvbnNpYmlsaXR5RGV0YWlscygpIHtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgIGNvbnN0IHJlcyA9IHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzO1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5pc0R1cGxpY2F0ZSA/IFwiQ29weSBvZiBcIiArIHJlcz8udGl0bGUgOiByZXM/LnRpdGxlO1xuICAgIGNvbnN0IGN1cnJlbnRzVWVySW5mbyA9IHRoaXMuY3VycmVudFVzZXJJbmZvO1xuICAgIGNvbnN0IGFzc2lnbm9ySWQgPSB0aGlzLmlzRHVwbGljYXRlID8gY3VycmVudHNVZXJJbmZvLnVpZCA6IHJlcz8uYXNzaWdub3JJZDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5SWQgPSByZXM/LmlkO1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0gPSB7XG4gICAgICBhc3NpZ25vcnM6IHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgbGlzdDpcbiAgICAgICAgICB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbYXNzaWdub3JJZF0sICd1aWQnKVxuICAgICAgICAgICAgPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbm9yc0xpc3QsIFthc3NpZ25vcklkXSwgJ3VpZCcpXG4gICAgICAgICAgICA6IFtjdXJyZW50c1VlckluZm9dLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICAgIG5hbWU6IHRpdGxlLFxuICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVzPy5rZXksXG4gICAgICB9LFxuICAgICAgYXNzaWduZWVzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiByZXM/LmFzc2lnbmVlPy50eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGxpc3Q6IHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbmVlc0xpc3QsIHJlcz8uYXNzaWduZWU/LnVzZXJJZCwgJ3VpZCcpLFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlR3JvdXBzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiByZXM/LmFzc2lnbmVlPy50eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGxpc3Q6IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0LFxuICAgICAgICAgIHJlcz8uYXNzaWduZWU/LnVzZXJHcm91cElkLFxuICAgICAgICAgICd1aWQnLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIGFsbG93RWRpdER1ZURhdGU6IHJlcz8uYWxsb3dFZGl0RHVlRGF0ZSxcbiAgICAgIGZyZXF1ZW5jeTogcmVzPy5mcmVxdWVuY3ksXG4gICAgICBkZXNjcmlwdGlvbjogcmVzPy5ub3RlcyxcbiAgICAgIG9iamVjdGl2ZTogcmVzPy5vYmplY3RpdmUsXG4gICAgICByYzogKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmNJZCA9IHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8uaWQ7XG4gICAgICAgIC8vIEFmdGVyIG5vcm1hbGlzYXRpb24gUkNzIHNob3VsZCBhbHdheXMgaGF2ZSBpdGVtX2lkIHBvcHVsYXRlZFxuICAgICAgICBjb25zdCByY1Jlc3VsdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgICAgcmNJZCA/IFtyY0lkXSA6IFtdLFxuICAgICAgICAgICdpdGVtX2lkJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmNSZXN1bHQ7XG4gICAgICB9KSgpLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOlxuICAgICAgICByZXMucmVzcG9uc2liaWxpdHlDZW50ZXI/LnR5cGUgPT09ICdhbGwnID8gMSA6IDAsXG4gICAgICBjYXRlZ29yeTogcmVzPy5wcm9ncmFtX2NhdF9pZHM/Lmxlbmd0aFxuICAgICAgICA/IHJlcz8uY2F0ZWdvcnlfaWRzX2FycmF5LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+ICFyZXMucHJvZ3JhbV9jYXRfaWRzPy5pbmNsdWRlcyhlbGUpXG4gICAgICAgIClcbiAgICAgICAgOiByZXM/LmNhdGVnb3J5X2lkc19hcnJheSxcbiAgICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiByZXM/LmNhdGVnb3J5X2lkPy5zcGxpdCgnLCcpID8/IFtdLFxuICAgICAgY2F0ZWdvcnlfaWQ6IHJlcz8uY2F0ZWdvcnlfaWQgPz8gJycsXG5cbiAgICAgIHByb2dyYW06IHJlcz8ucHJvZ3JhbURldGFpbHM/LmNhdGVnb3J5X2lkXG4gICAgICAgID8gW3Jlcz8ucHJvZ3JhbURldGFpbHNdXG4gICAgICAgIDogW10sXG4gICAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246IHJlcz8uY2hlY2twb2ludF9kZXNjcmlwdGlvbixcbiAgICAgIGN1c3RvbVRhZ3M6IHJlcz8udGFncyxcbiAgICAgIGNoZWNrcG9pbnRzOiByZXM/LmNoZWNrcG9pbnRfZGV0YWlsc1xuICAgICAgICA/IEpTT04ucGFyc2UocmVzPy5jaGVja3BvaW50X2RldGFpbHMpXG4gICAgICAgIDogJycsXG4gICAgICByZXZpZXdlcnM6IHtcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxuICAgICAgICAgIHJlcz8ucmV2aWV3ZXI/LnR5cGUgPT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IHJlcz8ucmV2aWV3ZXI/LmZyZXF1ZW5jeT8uY29tcGxldGVCeSA/PyAyLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IHJlcz8ucmV2aWV3ZXI/LmZyZXF1ZW5jeT8uZW5kQWZ0ZXIgPz8gMixcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDogdGhpcy5zZXRMaXN0KHRoaXMucmV2aWV3ZXJzTGlzdCwgcmVzPy5yZXZpZXdlcj8udXNlcklkLCAndWlkJyksXG4gICAgICB9LFxuXG4gICAgICBncm91cFJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHJlcz8ucmV2aWV3ZXI/LnR5cGUgPT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IHJlcz8ucmV2aWV3ZXI/LmZyZXF1ZW5jeT8uY29tcGxldGVCeSA/PyAyLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IHJlcz8ucmV2aWV3ZXI/LmZyZXF1ZW5jeT8uZW5kQWZ0ZXIgPz8gMixcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDogdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QsXG4gICAgICAgICAgcmVzPy5yZXZpZXdlcj8udXNlckdyb3VwSWQsXG4gICAgICAgICAgJ3VpZCcsXG4gICAgICAgICksXG4gICAgICB9LFxuXG4gICAgICBvdmVyc2VlcnM6IHtcbiAgICAgICAgbGlzdDogcmVzPy5vdmVyc2VlclxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgICAgcmVzPy5vdmVyc2Vlcj8uc3VjY2Vzcz8udXNlcklkLFxuICAgICAgICAgICAgJ3VpZCdcbiAgICAgICAgICApXG4gICAgICAgICAgOiBbXSxcbiAgICAgICAgbm90aWZ5TGlzdDogcmVzPy5vdmVyc2Vlcj8uZmFpbD8udXNlcklkXG4gICAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgICByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWQsXG4gICAgICAgICAgICAndWlkJ1xuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgICAgfSxcbiAgICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XG4gICAgICAgIGZvcm1hdFJlcXVpcmVkOlxuICAgICAgICAgIHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YT8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICBmb3JtYXRGaWxlczogcmVzLmV2aWRlbmNlPy5mb3JtYXQ/LnR5cGUgPT09ICdmaWxlJyA/IHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YSA6IFtdLFxuICAgICAgICBmb3JtYXRMaW5rczogcmVzPy5ldmlkZW5jZT8uZm9ybWF0Py50eXBlID09PSAnbGluaycgPyByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LmRhdGEgOiBbXSxcbiAgICAgICAgZXZpZGVuY2VSZXF1aXJlZDogcmVzPy5ldmlkZW5jZT8ucmVxdWlyZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXNzdXJhbmNlTGlzdDogW10sXG4gICAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXG4gICAgICByaXNrQ2xhc3M6IHJlcz8ucmlza0NsYXNzLFxuICAgICAgc2VsZWN0ZWRHUkNPYmplY3RzOiByZXM/Lm1ldGE/LmxpbmtlZEVudGl0aWVzPy5ncmNPYmplY3RzID8/IFtdLFxuICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLnBvcHVsYXRlQ3VzdG9tRmllbGRzKHJlcykgPz8gW10sXG5cbiAgICB9O1xuICAgIHRoaXMuY3VzdG9tRmllbGRzID0gdGhpcy5jdXN0b21GaWVsZHM/LmZpbHRlcigoZWxlOiBhbnkpID0+ICFyZXM/LmN1c3RvbUZpZWxkPy5zb21lKChmaWVsZDogYW55KSA9PiBmaWVsZC5pZCA9PT0gZWxlLmlkKSk7XG4gICAgY29uc3QgR1JDX09CSkVDVFMgPSByZXM/Lm1ldGE/LmxpbmtlZEVudGl0aWVzPy5ncmNPYmplY3RzID8/IFtdO1xuICAgIGlmIChHUkNfT0JKRUNUUz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wb3B1bGF0ZUdSQ09iamVjdERldGFpbHMoR1JDX09CSkVDVFMpO1xuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5RGV0YWlscyhyZXMuZnJlcXVlbmN5KTtcbiAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbURldGFpbHMocmVzKTtcbiAgICB0aGlzLmdldEVkaXRNb3JlT3B0aW9ucyhyZXMpO1xuICAgIHRoaXMucG9wdWxhdGVmb3JtYXREZXRhaWxzKHJlcyk7XG4gIH1cblxuICAvL3BvcHVsYXRlIGN1c3RvbSBmaWVsZHNcbiAgcG9wdWxhdGVDdXN0b21GaWVsZHMocmVzOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY3VzdG9tRmllbGRzPy5sZW5ndGggfHwgIXJlcz8uY3VzdG9tRmllbGQ/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIHJlcz8uY3VzdG9tRmllbGQ/Lm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUZpZWxkID0gdGhpcy5jdXN0b21GaWVsZHM/LmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmlkID09PSBlbGUuaWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogY3VzdG9tRmllbGQ/Lm5hbWUsXG4gICAgICAgIGlkOiBlbGUuaWQsXG4gICAgICAgIHZhbHVlOiBlbGUudmFsdWUsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIC8vcG9wdWxhdGUgZm9ybWF0IERldGFpbHNcbiAgcG9wdWxhdGVmb3JtYXREZXRhaWxzKHJlczogYW55KSB7XG4gICAgY29uc3QgZm9ybWF0T2JqZWN0OiBhbnlbXSA9IFtdXG4gICAgY29uc3QgZm9ybWF0RmlsZXMgPSByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LmRhdGEgPz8gW107XG4gICAgaWYgKGZvcm1hdEZpbGVzPy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBmb3JtYXRGaWxlcy5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcbiAgICAgIGZvcm1hdE9iamVjdC5wdXNoKHtcbiAgICAgICAgZmlsZV91cmxfcGF0aDogZmlsZT8uZmlsZVBhdGggPz8gJycsXG4gICAgICAgIG5hbWU6IGZpbGU/Lm5hbWUgPz8gJycsXG4gICAgICAgIG9yZ19maWxlOiBmaWxlPy5uYW1lID8/ICcnLFxuICAgICAgICBmaWxlX25hbWU6IGZpbGU/Lm5hbWUgPz8gJycsXG4gICAgICAgIHR5cGU6IGZpbGU/LnR5cGUgPz8gJydcbiAgICAgIH0pXG4gICAgfSlcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcyA9IGZvcm1hdE9iamVjdDtcbiAgfVxuXG4gIC8vUG9wdWxhdGUgUHJvZ3JhbSBEZXRhaWxzXG4gIHBvcHVsYXRlUHJvZ3JhbURldGFpbHMocmVzOiBhbnkpIHtcbiAgICBjb25zdCBkYXRhID0gcmVzPy5tZXRhPy5saW5rZWRFbnRpdGllcz8ucHJvZ3JhbXMgPz8ge307XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IGRhdGE/LnRhZ3MgPz8gW107XG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zID0gdGhpcy5tYXBMaW5rZWRQcm9ncmFtcyhkYXRhKVxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUHJvZ3JhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25JdGVtc1NlbGVjdGVkQ2hhbmdlKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyk7XG4gICAgfVxuICB9XG5cbiAgcG9wdWxhdGVGcmVxdWVuY3lEZXRhaWxzKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgY29uc3QgZ2V0UGF0dGVybiA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jcmVhdGVGcmVxdWVuY3lQYXR0ZXJuKGZyZXF1ZW5jeSk7XG4gICAgY29uc3QgbGlmZWN5Y2xlRGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5nZXRMaWZlY3ljbGVQYXR0ZXJuKGZyZXF1ZW5jeSk7XG4gICAgZnJlcXVlbmN5LnBhdHRlcm4gPSBnZXRQYXR0ZXJuO1xuICAgIGZyZXF1ZW5jeS5saWZlY3ljbGVfZGV0YWlscyA9IGxpZmVjeWNsZURldGFpbHMucGF0dGVybjtcbiAgICBmcmVxdWVuY3kuc3RhcnRfb2ZfZGF5X3V0YyA9IGxpZmVjeWNsZURldGFpbHMuc3RhcnRGcm9tO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5RGV0YWlscz8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgICAuLi50aGlzLnJlc3BvbnNpYmlsaXR5RGV0YWlscz8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHksXG4gICAgICAgIC4uLmZyZXF1ZW5jeS5vbkNvbXBsZXRlXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZnJlcXVlbmN5KTtcbiAgICB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKGZyZXF1ZW5jeSk7XG4gIH1cblxuICBtYXBMaW5rZWRQcm9ncmFtcyhwcm9ncmFtczoge1xuICAgIGxpbmtlZDogUmVjb3JkPHN0cmluZywgbnVtYmVyW10+LFxuICAgIGRhdGE6IGFueVtdXG4gIH0pOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4ge1xuICAgIC8vIEJ1aWxkIGEgbG9va3VwIGZvciBmYXN0IGlkIOKGkiBvYmplY3QgbWFwcGluZ1xuICAgIGNvbnN0IHByb2dyYW1CeUlkID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcbiAgICBmb3IgKGNvbnN0IHByb2dyYW0gb2YgcHJvZ3JhbXMuZGF0YSkge1xuICAgICAgcHJvZ3JhbUJ5SWQuc2V0KHByb2dyYW0uaWQsIHByb2dyYW0pO1xuICAgIH1cblxuICAgIC8vIE1hcCBlYWNoIGxpbmtlZCBJRCBncm91cCB0byBmdWxsIHByb2dyYW0gb2JqZWN0c1xuICAgIGNvbnN0IG1hcHBlZDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG4gICAgZm9yIChjb25zdCBvcmlnaW5JZCBpbiBwcm9ncmFtcy5saW5rZWQpIHtcbiAgICAgIG1hcHBlZFtvcmlnaW5JZF0gPSBwcm9ncmFtcy5saW5rZWRbb3JpZ2luSWRdXG4gICAgICAgIC5tYXAoaWQgPT4gcHJvZ3JhbUJ5SWQuZ2V0KGlkKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTsgLy8gcmVtb3ZlIHVuZGVmaW5lZCBpZiBpZCBub3QgZm91bmRcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGVkO1xuICB9XG5cbiAgcG9wdWxhdGVHUkNPYmplY3REZXRhaWxzKEdSQ19PQkpFQ1RTOiBhbnkpIHtcbiAgICBpZiAoR1JDX09CSkVDVFM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNPYmplY3RCeUdSQ0lkKEdSQ19PQkpFQ1RTLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmdyY2lkKS5qb2luKCcsJykpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9IGRhdGFcbiAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwid29ya2Zsdy1jb21wbGlhbmNlXCIgKm5nSWY9XCIhc2hvd1NtaWxleVwiPlxuICA8IS0tIEJlaGFsZiAtLT5cbiAgPGRpdiAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWdub3JzJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1xuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmltX2NyZWF0aW5nXCIgYWx0PVwiaW1cIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWdub3JzJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5JIGFtIGNyZWF0aW5nIHRoaXMgcmVzcG9uc2liaWxpdHkgb24gYmVoYWxmIG9mIHNvbWVvbmUgZWxzZVxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlXCIgKG5nVmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlID0gJGV2ZW50O1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXVxuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWdub3JzJ1xuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25vcnMnLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyByZXNwb25zaWJpbGl0eT9cIiByZWFkb25seVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8uZW5hYmxlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbm9ycycsIGJfdXNlcilcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiYl91c2VyLm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgYl91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJiZWhhbGYucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLGJfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tiX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNiZWhhbGYgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdCB8IHNsaWNlIDogMjtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbm9ycycsIGJfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgYl91c2VyLm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8cCAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvbSdcIiBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcmVzcG9uc2liaWxpdHkuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFdoYXQgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmFtZXdvcmsnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVzcG9uc2liaWxpdHlOYW1lJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICAgICFmb2N1cy5yZXNwb25zaWJpbGl0eU5hbWVcbiAgICAgIFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy53aGF0XCIgYWx0PVwiaW1cIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpID09PSAnJyB8fFxuICAgICAgICAgIGZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAgICFmb2N1cy5yZXNwb25zaWJpbGl0eU5hbWVcbiAgICAgICAgXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgIFdoYXQ/IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJcbiAgICAgICAgICAgICAgaXNGcmFtZXdvcmtBdmFpbGFibGUgJiZcbiAgICAgICAgICAgICAgbW9kZSAhPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICAgICBcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJhbWV3b3JrJywgdHJ1ZSlcIiBjbGFzcz1cImJ1dHRvblwiPlxuICAgICAgICAgICAgU2VsZWN0IEZyb20gQSBmcmFtZXdvcmtcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5rZXlSZXNwb25zaWJpbGl0eVwiIGNsYXNzPVwiaW5kaWNhdG9yXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCInVGhpcyByZXNwb25zaWJpbGl0eSBpcyBtYXJrZWQgYXMga2V5IHJlc3BvbnNpYmlsaXR5LidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZWE3MDs8L2k+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSA9PSAnJyB8fCAhaXNFZGl0V2hhdFxuICAgICAgICAgIFwiIHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWVcIiBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5P1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ3aGF0Q2hhbmdlZCgkZXZlbnQpXCIgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcigncmVzcG9uc2liaWxpdHlOYW1lJywgdHJ1ZSlcIlxuICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIiAoY2xpY2tPdXRzaWRlKT1cInRlc3RGdW5jdGlvbigpXCIgI3doYXQgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpICE9ICcnICYmIGlzRWRpdFdoYXRcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHk/Lm5hbWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdFdoYXQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hhdCdcIiBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtcm93IGFsaWduLXJpZ2h0XCI+XG4gICAgICAgICAgPGFwcC1jcy1zd2l0Y2ggW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Py5rZXlSZXNwb25zaWJpbGl0eVwiIChuZ1ZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkua2V5UmVzcG9uc2liaWxpdHkgPSAkZXZlbnRcbiAgICAgICAgICAgIFwiPktleSBSZXNwb25zaWJpbGl0eVxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBXaG8gLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWduZWVzJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXG4gICAgICBcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuY2FzZV9hc3NpZ25lZXNcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVkaXQtZHVlLWRhdGVcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+V2hvPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd0VkaXREdWVEYXRlRmVhdHVyZUZsYWcgJiYgZmFsc2VcIiBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hbGxvd0VkaXREdWVEYXRlXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFsbG93RWRpdER1ZURhdGUgPSAkZXZlbnRcIj5BTExPVyBBU1NJR05FRSBUTyBFRElUIENPTVBMRVRFRCBXT1JLPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnSWYgaXTigJlzIGVuYWJsZWQsIHRoZSBhc3NpZ25lZSB3aWxsIGhhdmUgdGhlIG9wdGlvbiB0byBtb2RpZnkgYSBwcmV2aW91c2x5IGNvbXBsZXRlZCBkdWUgZGF0ZS4nXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCB2eC1tdC0wXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgKCFmZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKSlcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gaXMgcmVzcG9uc2libGUgZm9yIGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5P1wiIHJlYWRvbmx5IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImVfdXNlci5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IGVfdXNlci5tZW1iZXJfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5iZ1wiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdhc3NpZ25lZXMnLCByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXSlcbiAgICAgICAgICAgICAgICBcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIj4mPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwYXNzaWduZWVzJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLGVfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJylcIiBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cGFzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgZV91c2VyLm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cGFzc2lnbmVlcycsIGdyb3VwKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuXG4gICAgICAgIDxwICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aG8nXCIgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoaXNcbiAgICAgICAgICByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBBc3NpZ25lZFwiPlxuXG4gICAgICAgICAgPGFwcC1jcy1yYWRpbyAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiIChjaGVja2VkRXZlbnQpPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQU5ZX09ORSdcbiAgICAgICAgICAgIFwiIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXCIgW25hbWVdPVwiJ3doYXQnXCI+QU5ZIFNFTEVDVEVEIFBFUlNPTlxuICAgICAgICAgICAgQ0FOIENPTVBMRVRFIFRISVNcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIG9ubHkgb25lIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgY3JlYXRlZC4nXG4gICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cbiAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cblxuICAgICAgICAgIDxhcHAtY3MtcmFkaW8gKm5nSWY9XCJtb2RlICE9PSAnRURJVCdcIiAoY2hlY2tlZEV2ZW50KT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQUxMJ1wiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09ICdBTEwnXCIgW25hbWVdPVwiJ3doYXQnXCI+QUxMIFNFTEVDVEVEIFBFUlNPTlMgTkVFRFxuICAgICAgICAgICAgVE8gQ09NUExFVEUgVEhJUzxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1xuICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIiAqbmdJZj1cIlxuICAgICAgICAgICAgICBtb2RlID09ICdFRElUJyAmJlxuICAgICAgICAgICAgICAoIWZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKSlcbiAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2ggKG5nVmFsdWVDaGFuZ2UpPVwib3BlbkFzc2lnbmVlQ2hhbmdlQ29uZmlybWF0aW9uKCRldmVudClcIiBbbmdWYWx1ZV09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09ICdBTllfT05FJ1xuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgQU5ZIFNFTEVDVEVEIFBFUlNPTiBDQU4gQ09NUExFVEUgVEhJU1xuICAgICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZXMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgZV91c2VyLm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gV2hlbj8gLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgIXJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5IHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1xuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLndoZW5cIiBhbHQ9XCJpbVwiICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5IHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAhPSAnJyAmJlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICc1fjB+MH4wJ1xuICAgICAgICBcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+V2hlbj8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgPT0gJycgfHxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ID09ICc1fjB+MH4wJ1xuICAgICAgICAgIFwiIGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIiBbcGxhY2Vob2xkZXJdPVwiZnJlcXVlbmN5UGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgcmVhZG9ubHkgLz5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIFNldCBBIGZyZXF1ZW5jeVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJycgJiZcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9PSAnNX4wfjB+MCdcbiAgICAgICAgICBcIiBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3doZW4nXCIgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgZnJlcXVlbmN5IG9mIG9jY3VycmVuY2UgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE5vdGVzIC0tPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnbm90ZXMnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbm90ZXMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgIWZvY3VzLmRlc2NyaXB0aW9uXG4gICAgICBcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMubm90ZXNcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMuZGVzY3JpcHRpb25cbiAgICAgICAgXCIgLz5cblxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgICAgIWZvY3VzLmRlc2NyaXB0aW9uXG4gICAgICAgIFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk5vdGVzPC9sYWJlbD5cbiAgICAgICAgPHZjb21wbHktZWRpdG9yIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uXCIgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIGlkOiAnbm90ZXMnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eSdcbiAgICAgICAgICB9XCI+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE9iamVjdGl2ZSAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/Lk9CSkVDVElWRVwiIFthdHRyLmlkXT1cIidPQkpFQ1RJVkUnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb2JqZWN0aXZlJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ29iamVjdGl2ZScgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5vYmplY3RpdmUpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgIWZvY3VzLm9iamVjdGl2ZVxuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLm9iamVjdGl2ZXNcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpID09PSAnJyB8fFxuICAgICAgICAgIGZvY3VzLm9iamVjdGl2ZVxuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiAqbmdJZj1cIlxuICAgICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5vYmplY3RpdmUpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5PYmplY3RpdmU8L2xhYmVsPlxuICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlXCIgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgaWQ6ICdvYmplY3RpdmUnLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSBhbiBvYmplY3RpdmUgZm9yIHRoZSByZXNwb25zaWJpbGl0eS4nXG4gICAgICAgICAgfVwiPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5SQ1wiIFthdHRyLmlkXT1cIidSQydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcbiAgICAgIFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXJcIiBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA9PSAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCIgLz5cblxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJlc3BvbnNpYmlsaXR5IENlbnRlciA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSByZXNwb25zaWJpbGl0eSBjZW50ZXIgb3IgdGhlIHJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpXCIgcmVhZG9ubHk+IC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgIFtjbGFzcy5yZWFkT25seV09XCJvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsIDEpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cInJjPy5pdGVtX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgcmM/Lml0ZW1fbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmNQb3BvdmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjKVwiICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiPiYjeGU5MGQ7PC9pPnt7cmM/Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJiBvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI3JjUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgcmMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yYyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICBpc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJlxuICAgICAgICAgICAgKG1vZGUgIT0gJ0VESVQnIHx8IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA8PSAxKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbz48ZGl2IFthcHBUb29sdGlwXT1cIidDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXInXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+Q1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmPC9kaXY+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9hcHAtY3MtcmFkaW8+IC0tPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMSAmJlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDFcbiAgICAgICAgXCIgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxXCIgW25hbWVdPVwiJ2ZmX3Jlc3BvbnNpYmlsaXR5X3JjX2xpbmsnXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SY1R5cGVDaGFuZ2UoMSlcIj5ESVNQTEFZIFRIRSBTQU1FIFJFU1BPTlNJQklMSVRZIElOIEFMTCBSRVNQT05TSUJJTElUWSBDRU5URVJTPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCB0aGUgc2FtZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGxpbmtlZCB0byBlYWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlci4nXG4gICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPjwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICBtb2RlID09ICdFRElUJyAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgIFwiIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMFwiIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDApXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmMtcmFkaW8tdGV4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXJzJ1xuICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgQ1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlci4nXG4gICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cbiAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFByb2dyYW0gLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5QUk9HUkFNXCIgW2F0dHIuaWRdPVwiJ1BST0dSQU0nXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncHJvZ3JhbSdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbSdcbiAgICAgIFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJykgJiZcbiAgICAgICAgICBhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID09IDBcbiAgICAgICAgXCIgLz5cblxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCIgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nKSB8fFxuICAgICAgICAgIGFsbFByb2dhbVNlbGVjdGVkPy5sZW5ndGggPiAwXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5Qcm9ncmFtPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiYWxsUHJvZ2FtU2VsZWN0ZWQ/Lmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbnB1dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUHJvZ3JhbSBvciBQcm9ncmFtIENhdGVnb3JpZXMgdGhhdCB0aGlzIHJlc3BvbnNpYmlsaXR5IHJlbGF0ZXMgdG8uXCI+PC9kaXY+XG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncHJvZ3JhbScsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBwcm9ncmFtKHMpXCIgcmVhZG9ubHk+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxuICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cInJlbW92ZSgncHJvZ3JhbScsIGFsbFByb2dhbVNlbGVjdGVkWzBdKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFsbFByb2dhbVNlbGVjdGVkWzBdPy5uYW1lID8/ICctLSdcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBhbGxQcm9nYW1TZWxlY3RlZFswXT8ubmFtZVxuICAgICAgICAgICAgICAgID8/IFwiLS1cIiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAre3sgYWxsUHJvZ2FtU2VsZWN0ZWQ/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBwcm9ncmFtIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAqbmdJZj1cImZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIiAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJyxwcm9ncmFtKVwiPiYjeGU5MGQ7PC9pPiB7e3Byb2dyYW0/Lm5hbWU/PyctLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLSAtIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDJcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPiAtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+KyB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJiAhaGlkZGVuTGlzdC5pbmNsdWRlcygnUFJPR1JBTScpXG4gICAgICAgICAgICBcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgcHJvZ3JhbSBvZiBhbGxQcm9nYW1TZWxlY3RlZCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICFoaWRkZW5MaXN0Py5pbmNsdWRlcygnUFJPR1JBTScpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhcHJvZ3JhbT8uaXNWaWV3T25seVByb2dyYW1cbiAgICAgICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncHJvZ3JhbScsIHByb2dyYW0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2dyYW0/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFnPy5uYW1lPy50cmltKClcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+e3tcbiAgICAgICAgICAgICAgICB0YWc/Lm5hbWVcbiAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwidGFnLnZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eyB0YWc/Lm5hbWUgfX1cIiAvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRm9ybWF0ICYgRXZpZGVuY2UgLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFXCJcbiAgICBbYXR0ci5pZF09XCInRk9STUFURV9FVklERU5DRSdcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZm9ybWF0ZV9ldmlkZW5jZSdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmb3JtYXRlX2V2aWRlbmNlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZyAqbmdJZj1cIlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPT0gZmFsc2UgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGggPT0gMFxuICAgICAgICBcIiBbc3JjXT1cIkFTU0VUUy5mb3JtYXRfZXZpZGVuY2VcIiBhbHQ9XCJpbVwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0RmlsZXMubGVuZ3RoIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3M/Lmxlbmd0aFxuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGFwcC1mb3JtYXQtYW5kLWV2aWRlbmNlICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdmb3JtYXRlX2V2aWRlbmNlJywgJGV2ZW50KVwiIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIlxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2VcIiBbb3JnYW5pemF0aW9uX2lkXT1cIm9yZ2FuaXphdGlvbklkXCJcbiAgICAgICAgW29yZ0RldGFpbHNdPVwib3JnRGV0YWlsc1wiPlxuICAgICAgPC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBc3Nlc3NtZW50IC0tPlxuICA8ZGl2ICpuZ0lmPVwibW9yZU9wdGlvbnM/LkFTU0VTU01FTlRcIiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgW2F0dHIuaWRdPVwiJ0FTU0VTU01FTlQnXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2lzQXNzZXNzbWVudCdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdpc0Fzc2Vzc21lbnQnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCI+XG4gICAgICA8aW1nICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCIgW3NyY109XCJBU1NFVFMuYXNzZXNzbWVudHNcIiBhbHQ9XCJpbVwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QVNTRVNTTUVOVFM8L2xhYmVsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCIgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpOyBpc0Fzc2Vzc21lbnQgPSB0cnVlXG4gICAgICAgICAgICBcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBhc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiIHJlYWRvbmx5IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3Nlc3NtZW50JywgY2F0ZWdvcnkpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlsc1xuICAgICAgICAgICAgICAgICAgPy5hc3Nlc3NtZW50X25hbWVcbiAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlsc1xuICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tbC0xIHZ4LXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zIH19XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMVxuICAgICAgICAgICAgICA/IFwiUXVlc3Rpb25zXCJcbiAgICAgICAgICAgICAgOiBcIlF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1wiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcbiAgICAgICAgICAgIFwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENoZWNrcG9pbnRzIC0tPlxuICA8IS0tICpuZ0lmPVwibW9yZU9wdGlvbnMuY2hlY2twb2ludHNcIiAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXCJcbiAgICBbYXR0ci5pZF09XCInQ0hFQ0tQT0lOVFMnXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuY2hlY2twb2ludHNcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1xuICAgICAgICBcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgPCEtLSB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50c3xqc29ufX1cbiAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb259fSAtLT5cblxuICAgICAgICAgIENoZWNrcG9pbnRzXG4gICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsdHJ1ZSlcIj4rIEFkZCBDaGVja3BvaW50czwvYnV0dG9uPiAtLT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8aW5wdXQgW2Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCIgcGxhY2Vob2xkZXI9XCJBZGQgY2hlY2twb2ludHMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgcmVhZG9ubHkgLz5cbiAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGhcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjaGVja3BvaW50Py5sYWJlbFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IGNoZWNrcG9pbnQ/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImNoZWNrcG9pbnQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIGNoZWNrcG9pbnRzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5zbGljZSgwLDEpXCI+e3tjaGVja3BvaW50Py5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAxXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImNoZWNrcG9pbnQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhbGVydC1pY29uXCI+JiN4ZTkzMDs8L2k+XG4gICAgICAgIDxzcGFuPllvdSBjYW4gbm93IHVzZSB0aGUgbmV3IDxzdHJvbmc+Q2hlY2twb2ludHMgPC9zdHJvbmc+b3JcbiAgICAgICAgICA8c3Ryb25nPkFzc2Vzc21lbnRzPC9zdHJvbmc+IGZlYXR1cmUgaW5zdGVhZCBvZiB0aGUgb2xkIGNoZWNrcG9pbnRzXG4gICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUgYW5hbHl0aWNhbCBxdWVzdGlvbnMuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlbW92ZS1idG5cIiAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnY2hlY2twb2ludCcpXCI+XG4gICAgICAgICAgICBSZW1vdmUgQ2hlY2twb2ludHNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB0byBjb250aW51ZS48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE5ldyAgQ2hlY2twb2ludHMgLS0+XG4gIDwhLS0gKm5nSWY9XCJtb3JlT3B0aW9ucy5jaGVja3BvaW50c1wiIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXCJcbiAgICBbYXR0ci5pZF09XCInQ0hFQ0tQT0lOVFMtTkVXJ1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cy1uZXcnXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuY2hlY2twb2ludHNcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgPCEtLSB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50c3xqc29ufX1cbiAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb259fSAtLT5cblxuICAgICAgICAgIENoZWNrcG9pbnRzXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtdmVyc2lvblwiPiBWMi4wPC9zcGFuPiAtLT5cbiAgICAgICAgICA8IS0tIDxidXR0b24gIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3Jyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIiAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA9PT0gMFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBjaGVja3BvaW50cyBmb3IgdGhpcyByZXNwb25zaWJpbGl0eVwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCduZXctY2hlY2twb2ludHMnKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIj57eyBjaGVja3BvaW50Q291bnQgfX1cbiAgICAgICAgICAgICAge3sgY2hlY2twb2ludENvdW50ID4gMSA/IFwiUXVlc3Rpb25zXCIgOiBcIlF1ZXN0aW9uXCIgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJjaGVja3BvaW50Q291bnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnbmV3LWNoZWNrcG9pbnRzJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGVja3BvaW50Q291bnR9fSB7e2NoZWNrcG9pbnRDb3VudCA+IDEgPyAnUXVlc3Rpb25zJzogJ1F1ZXN0aW9uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMtbmV3J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzLW5ldycsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJpc2sgQ2xhc3NpZmljYXRpb24gLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5SSVNLX0NMQVNTSUZJQ0FUSU9OXCJcbiAgICBbYXR0ci5pZF09XCInUklTS19DTEFTU0lGSUNBVElPTidcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhbGN1bGF0b3InXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhbGN1bGF0b3InICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmlza0NsYXNzXCI+XG4gICAgICA8c3ZnICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yaXNrQ2xhc3NcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgIFJpc2sgQ2xhc3NpZmljYXRpb25cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyaXNrQ2FsY3VsYXRvcicsIHRydWUpXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAgICAgICsgUmlzayBDYWxjdWxhdG9yXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsYXNzaWZpY2F0aW9uXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibG93XCIgKm5nRm9yPVwibGV0IHJpc2sgb2Ygcmlza0NsYXNzaWZpY2F0aW9uXCIgW25nQ2xhc3NdPVwiW3Jpc2suY2xhc3NdXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImNsYXNzaWZpY2F0aW9uXCIgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJpc2s/LnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IHJpc2s/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXZpZXdlciAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJFVklFV0VSXCIgW2F0dHIuaWRdPVwiJ1JFVklFV0VSJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXG4gICAgXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnJldmlld2VyXCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1xuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJldmlld2VyPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJldmlld2VyXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cInJldmlld2VyLm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGg+MVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgwLDIpXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJyxyZXZpZXdlcilcIj4mI3hlOTBkOzwvaT4ge3tyZXZpZXdlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdyZXZpZXdlcicsIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdKVxuICAgICAgICAgICAgICAgIFwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcbiAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICZcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwUmV2aWV3ZXInLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwIFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBSZXZpZXdlcicscmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcidcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtY3MtcmFkaW8gW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIiBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZSgnc2VxdWVudGlhbCcpXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgIFwiPlxuICAgICAgICAgIFNFUVVFTlRJQUw8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgb25lIGF0IGEgdGltZSBpbiB0aGUgc2VxdWVuY2UgZGVmaW5lZCBieSB5b3UuJ1xuICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1jcy1yYWRpbyBbY2hlY2tlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIiBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZSgnYW55UmV2aWV3ZXInKVwiPlxuICAgICAgICAgIEFOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IHRvIGFsbCByZXZpZXdlcnMgYXQgdGhlIHNhbWUgdGltZS4gSWYgYW55b25lIG9mIHRoZSByZXZpZXdlciByZXZpZXdzIHRoZSByZXNwb25zaWJpbGl0eSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzIHJldmlld2VkLidcbiAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLCByZXZpZXdlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjdXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwUmV2aWV3ZXInLCBncm91cClcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXAuZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE92ZXJzZWVyIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uT1ZFUlNFRVJcIiBbYXR0ci5pZF09XCInT1ZFUlNFRVInXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcbiAgICBcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgIVsnb3ZlcnNlZXJOb3RpZnknLCAnb3ZlcnNlZXJOb3RpZnknXS5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcikgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMub3ZlcnNpZ2h0XCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDApIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xuICAgICAgICBcIiAvPlxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiICpuZ0lmPVwiXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAhKFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcbiAgICAgICAgICApXG4gICAgICAgIFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIlxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBoYXZlIG92ZXJzaWdodCBvZiB0aGUgcmVzcG9uc2liaWxpdHk/XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvdmVyc2VlcilcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IG92ZXJzZWVyLm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcicsb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ292ZXJzZWVyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlclVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcidcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyTm90aWZ5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGJlIG5vdGlmaWVkIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldC4uLlwiIHJlYWRvbmx5IFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXRlZD8nXG4gICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/LnNsaWNlKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0Jywgb3ZlcnNlZXIpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwib3ZlcnNlZXIubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBvdmVyc2Vlci5tZW1iZXJfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyTm90aWZ5TGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwibm90aWZ5VXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiPiY8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwibm90aWZ5VXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiICA+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeUdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyTm90aWZ5J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyTm90aWZ5JywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyVXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXJzIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvdmVyc2VlcnMpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVycz8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwJywgb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeVVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0Jywgb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnlHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcsIGdyb3VwKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFzc3VyYW5jZSAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LkFTU1VSQU5DRVwiIFthdHRyLmlkXT1cIidBU1NVUkFOQ0UnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZScgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc3VyYW5jZSdcbiAgICAgICAgXCIgLz5cblxuICAgICAgPHN2ZyAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJ1xuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc3VyYW5jZTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc3VyYW5jZScsIHRydWUpXCJcbiAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHRlc3QgcGxhbiBjYXRlZ29yaWVzIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gYWRkIHRoaXMgcmVzcG9uc2liaWxpdHkgdG8uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3N1cmFuY2Ugb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc3VyYW5jZScsIGFzc3VyYW5jZSlcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IGFzc3VyYW5jZS5jYXRlZ29yeV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzdXJhbmNlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZSdcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3N1cmFuY2UnLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI2Fzc3VyYW5jZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzdXJhbmNlIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc3VyYW5jZScsIGFzc3VyYW5jZSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzdXJhbmNlLmNhdGVnb3J5X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXF1aXJlcyBBdWRpdCAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIiBbYXR0ci5pZF09XCInUkVRVUlSRVNfQVVESVQnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVxdWlyZXNfYXVkaXQnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmF1ZGl0XCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCIgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRVFVSVJFUyBBVURJVD88L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiSWYgeWVzLCBzZWxlY3QgYW4gQXVkaXQgQ2F0ZWdvcnkuXCIgcmVhZG9ubHlcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXF1aXJlc19hdWRpdCcsIHRydWUpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JlcXVpcmVzX2F1ZGl0Jywgb3ZlcnNlZXIpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3RbMF0/LmNhdGVnb3J5X25hbWVcbiAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3RbMF0/LmNhdGVnb3J5X25hbWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVxdWlyZXNfYXVkaXQnLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGM7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPCEtLSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGhcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIj5cbiAgICAgICAgICAgIFNBTVBMRSBTSVpFXG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaCBbKG5nVmFsdWUpXT1cImlzU2FtcGxlXCIgKG5nVmFsdWVDaGFuZ2UpPVwic3dpdGNoRW5hYmxlKCRldmVudClcIj48L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2FtcGxlLXBhcnRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzU2FtcGxlXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvIHZhbHVlPVwiMFwiIGNsYXNzPVwic2FtcGxlLXJhZGlvXCIgKGNsaWNrKT1cInNlbGVjdGVkU2FtcGxlRGF0YSgwKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+Q09VTlQ8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBwbGFjZWhvbGRlcj1cIi0tXCIgKGtleXByZXNzKT1cImNoZWNrSW5wdXRWYWx1ZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzYW1wbGVWYWx1ZVwiIC8+XG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvclwiPk9SPC9kaXY+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvIHZhbHVlPVwiMVwiIGNsYXNzPVwic2FtcGxlLXJhZGlvXCIgKGNsaWNrKT1cInNlbGVjdGVkU2FtcGxlRGF0YSgxKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAxXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+UEVSQ0VOVEFHRTwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChrZXlwcmVzcyk9XCJjaGVja0lucHV0VmFsdWUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwic2FtcGxlUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCItLVwiIC8+XG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIj5TRVQgQSBSRU1JTkRFUiBJRiBUSEUgQVVESVQgUExBTiBJUyBOT1QgQ1JFQVRFRC48L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1pbmRlci1wYXJ0XCI+XG4gICAgICAgICAgICBTZW5kIHJlbWluZGVyIGV2ZXJ5XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwiMlwiIFsobmdNb2RlbCldPVwic2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWVcIiAvPlxuICAgICAgICAgICAgRGF5IGJ5XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRpbWVcIiBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIiBbKG5nTW9kZWwpXT1cImF1ZGl0VGltZVwiIFtuZ3hUaW1lcGlja2VyXT1cImRhaWx5VGltZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJhdWRpdFRpbWUudG9VcHBlckNhc2UoKVwiIHR5cGU9XCJ0ZXh0XCIgW21pbl09XCJjdXJyZW50VGltZVwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTU1OzwvaT5cbiAgICAgICAgICAgICAgPG5neC1tYXRlcmlhbC10aW1lcGlja2VyICNkYWlseVRpbWUgW2RlZmF1bHRUaW1lXT1cImF1ZGl0VGltZVwiPlxuICAgICAgICAgICAgICA8L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTGluayBvZiBHUkMgb2JqZWN0cyAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uR1JDX09CSkVDVFMgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIiBbYXR0ci5pZF09XCInR1JDX09CSkVDVFMnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDX09CSkVDVFMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmF1ZGl0XCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQ19PQkpFQ1RTJ1xuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgR1JDIE9CSkVDVChTKTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5XCIgcmVhZG9ubHlcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIHRydWUpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRHUkMgb2YgR1JDX1RZUEVfQVJSQVk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8ubGVuZ3RoXCIgY2xhc3M9XCJzZWxlY3RlZCB2eC1tYi0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JjIG9mIGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdPy5zbGljZSgwLCAxKVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdHUkNfT0JKRUNUUycsIGdyYywgMClcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkR1JDIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJncmM/Lm5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgZ3JjPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJHUkMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdPy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAre3sgZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdHUkMnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR1JDVGFiID0gZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ11bMF0/LnR5cGU7XG4gICAgICAgICAgICAgICAgICBnZXRPdGhlckdSQ09iamVjdHMoKTtcbiAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ0dSQ19PQkpFQ1RTJywgdHJ1ZSlcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3ZlckdSQyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYyBvZiBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXSB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnR1JDX09CSkVDVFMnLCBncmMsIGogKyAxKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JjLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ3VzdG9tIEZpZWxkcyAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LkNVU1RPTV9GSUVMRFMgXCJcbiAgICBbYXR0ci5pZF09XCInQ1VTVE9NX0ZJRUxEUydcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnQ1VTVE9NX0ZJRUxEUydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdDVVNUT01fRklFTERTJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5hdWRpdFwiIGFsdD1cIlwiICpuZ0lmPVwiXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdDVVNUT01fRklFTERTJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnICpuZ0lmPVwiXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdDVVNUT01fRklFTERTJ1xuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkN1c3RvbSBGaWVsZHM8L2xhYmVsPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tRmllbGRzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZjLWNmLWNvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0yIHZ4LXBiLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZi1uYW1lIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnQ1VTVE9NX0ZJRUxEUycsIGZpZWxkKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiZmllbGQubmFtZSA/PyAnLS0nXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBmaWVsZC5uYW1lXG4gICAgICAgICAgICAgICAgICA/PyBcIi0tXCIgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LWdyYXktNzBcIj46Jm5ic3A7IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZi12YWx1ZSB2eC1mcy0xMyB2eC1mdy01MDAgdngtcC0wIHZ4LW0tMCB2eC1tbC0yIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQudmFsdWVcIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiKyBBZGQgQ3VzdG9tIEZpZWxkc1wiIHJlYWRvbmx5XG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignQ1VTVE9NX0ZJRUxEUycsIHRydWUpXCIgLz4gLS0+XG4gICAgICAgICAgPGFwcC1jcy1zZWxlY3QgW2RhdGFMaXN0XT0nY3VzdG9tRmllbGRzJyBbaXNTdGF0aWNEYXRhXT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJysgQWRkIEN1c3RvbSBGaWVsZHMnXCJcbiAgICAgICAgICAgIHZhbHVlS2V5PVwiaWRcIiBbc2VsZWN0ZWREYXRhXT1cIicrIEFkZCBDdXN0b20gRmllbGRzJ1wiIGRpc3BsYXlQcm9wZXJ0eT1cIm5hbWVcIiBbaXNBcnJvd0ljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkRGF0YSk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdDVVNUT01fRklFTERTJywgJGV2ZW50KVwiPjwvYXBwLWNzLXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGFwcC11c2Vycy1yYWRpby1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXCIgW3VzZXJzTGlzdF09XCJhc3NpZ25vcnNMaXN0XCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0XCIgW2l0ZW1FbWFpbEtleV09XCInbWVtYmVyX2VtYWlsJ1wiIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIlxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbm9ycycsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCIgW2xvYWRlZF09XCJhc3NpZ25vcnNMaXN0TG9hZGVkXCI+XG48L2FwcC11c2Vycy1yYWRpby1saXN0PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCI+XG4gIDxhcHAtZ3JvdXAtdXNlcnMtbGlzdCAqbmdJZj1cIlxuICAgICAgaXNFbnRydXN0IHx8IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIFt1c2Vyc0xpc3RdPVwiYXNzaWduZWVzTGlzdFwiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiIFtncm91cHNMaXN0XT1cImdyb3Vwc0xpc3RcIlxuICAgIFthc3NpZ25lZUdyb3Vwc0xpc3RdPVwiZ3JvdXBBc3NpZ25lZUxpc3RcIiBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFwiXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcIiBbdXNlcklkS2V5XT1cIidteV9tZW1iZXJfaWQnXCIgW2dyb3VwSWRLZXldPVwiJ2dyb3VwX2lkJ1wiXG4gICAgW2xvYWRlcl09XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCIgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWduZWVzJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiIFtncm91cHNFbmFibGVkXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICA8L2FwcC1ncm91cC11c2Vycy1saXN0PlxuICA8YXBwLXVzZXJzLXJhZGlvLWxpc3QgKm5nSWY9XCJcbiAgICAgICFpc0VudHJ1c3QgJiYgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgXCIgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCIgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCIgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0XCJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIiBbaXRlbU5hbWVLZXldPVwiJ2VtcGxveWVlX25hbWUnXCIgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInQXNzaWduZWUnXCJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCIgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCJhc3NpZ25lZXNMaXN0TG9hZGVkXCI+XG4gIDwvYXBwLXVzZXJzLXJhZGlvLWxpc3Q+XG48L25nLWNvbnRhaW5lcj5cblxuPGFwcC1jaGVja3BvaW50cyAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXCJcbiAgW2NoZWNrcG9pbnRJbnN0cnVjdGlvbl09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRJbnN0cnVjdGlvblwiIFtjaGVja3BvaW50RGF0YV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzXCJcbiAgKHNhdmVDaGVja1BvaW50KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NoZWNrcG9pbnRzJywgJGV2ZW50KVwiIChjbG9zZUNoZWNrUG9pbnQpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+PC9hcHAtY2hlY2twb2ludHM+XG48YXBwLWZyZXF1ZW5jeS1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIiBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiIFtvbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eV09XCJyZXNwb25zaWJpbGl0eURldGFpbHM/Lm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5XCJcbiAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cImZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIiAoY2xvc2VGcmVxdWVuY3kpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+XG48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG48YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCIgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxuICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XCIgW3JhZGlvU2VsZWN0aW9uXT1cIlxuICAgIG1vZGUgPT0gJ0VESVQnICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMCA/IHRydWUgOiBmYWxzZVxuICBcIiBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJjXCIgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCIgKGNsb3NlUmNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiPlxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxuXG48YXBwLWNhdGVnb3J5LW11bHRpLXNlbGVjdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCIgW2NhdGVnb3J5TGlzdF09XCJjYXRlZ29yaWVzXCJcbiAgW2FsbENhdGVnb3JpZXNdPVwiYWxsQ2F0ZWdvcmllc1wiIFtjYXRlZ29yeUlkS2V5XT1cIidjYXRlZ29yeV9pZCdcIiBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeVwiXG4gIChzYXZlU2VsZWN0ZWRDYXRlZ29yeSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsICRldmVudClcIiAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj5cbjwvYXBwLWNhdGVnb3J5LW11bHRpLXNlbGVjdD5cblxuPCEtLSBQcm9ncmFtIExpc3QgUG9wdXAgLS0+XG48YXBwLWxpc3QtY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1wiIChjbG9zZSk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj5cbiAgPGFwcC1wcm9ncmFtLWxpc3QgYm9keSAoaXRlbXNTZWxlY3RlZENoYW5nZSk9XCJvbkl0ZW1zU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkUHJvZ3JhbXNcIlxuICAgIFt1cmxdPVwicHJvZ3JhbUxpc3RVcmxcIj48L2FwcC1wcm9ncmFtLWxpc3Q+XG4gIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC13LTEwMFwiIGZvb3Rlcj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdC1zaWRlIHZ4LWZzLTEyIHZ4LWQtZmxleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbFByb2dhbVNlbGVjdGVkLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtY291bnQtYm94IHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIj5cbiAgICAgICAgICB7eyBhbGxQcm9nYW1TZWxlY3RlZC5sZW5ndGggfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtdGV4dFwiPlxuICAgICAgICAgIFByb2dyYW1cbiAgICAgICAgICB7eyBhbGxQcm9nYW1TZWxlY3RlZC5sZW5ndGggPiAxID8gXCJDYXRlZ29yaWVzXCIgOiBcIkNhdGVnb3J5XCIgfX1cbiAgICAgICAgICBTZWxlY3RlZDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodC1zaWRlIHZ4LWQtZmxleFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbEJ0blwiIChjbGljayk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJuZXh0QnRuXCIgKGNsaWNrKT1cImFjdGl2ZURlc2VsZWN0b3IoKTsgc2VsZWN0Q2F0ZWdvcnkoKVwiPlxuICAgICAgICBOZXh0IDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFlOzwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYXBwLWxpc3QtY29udGFpbmVyPlxuXG48YXBwLW93bmVyLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJyAmJiAhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgYSBSZXZpZXdlcidcIlxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIiBbdXNlcnNMaXN0XT1cImFsbFVzZXJzTGlzdFwiIFtzaG93V29ya2Zsb3ddPVwidHJ1ZVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdFwiIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiIFtpdGVtRW1haWxLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCIgKHNhdmVTZWxlY3RlZExpc3QpPVwiXG4gICAgc2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpO1xuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcbiAgXCIgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiIFttb2RlXT1cIm1vZGVcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidSZXZpZXdlcidcIiBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/LnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgIDogJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ1xuICBcIiAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIj5cbjwvYXBwLW93bmVyLWxpc3Q+XG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCIgW3NlbGVjdGVkUmV2aWV3ZXJdPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJyZXZpZXdlck1lbWJlcklkc0xpc3RcIiBbZ3JvdXBFbmFibGVkXT1cInRydWVcIiBbZ3JvdXBMaXN0XT1cImdyb3VwUmV2aWV3ZXJMaXN0XCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RcIiBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFwiXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCIgKHNhdmUpPVwiXG4gICAgc2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpO1xuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcbiAgXCIgW21vZGVdPVwibW9kZVwiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIiBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/LnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgIDogJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ1xuICBcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjxhcHAtb3duZXItbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInICYmICFmZWF0dXJlRmxhZ19ncm91cHNcIiBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIiBbdXNlcnNMaXN0XT1cImFsbFVzZXJzTGlzdFwiIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdFwiXG4gIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXInLCAkZXZlbnQpXCIgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIFtpdGVtRW1haWxLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiPlxuPC9hcHAtb3duZXItbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJyAmJiBmZWF0dXJlRmxhZ19ncm91cHNcIiBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbZ3JvdXBMaXN0XT1cImdyb3VwT3ZlcnNlZXJMaXN0XCIgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0XCJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIiBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxuICBbbG9hZGluZ109XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCIgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXInLCAkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPGFwcC1vd25lci1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCIgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XCIgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCIgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIiAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCI+PC9hcHAtb3duZXItbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyAmJiBmZWF0dXJlRmxhZ19ncm91cHNcIiBbdXNlcmxpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtncm91cExpc3RdPVwiZ3JvdXBPdmVyc2Vlckxpc3RcIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3RcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxuICBbbG9hZGluZ109XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCIgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXJOb3RpZnknLCAkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPGFwcC1vd25lci1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3N1cmFuY2UnXCIgW3Npbmd1bGFyVGV4dF09XCInVGVzdCBDYXRlZ29yeSBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVGVzdCBDYXRlZ29yaWVzIHNlbGVjdGVkJ1wiIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU2VhcmNoIFRlc3QgQ2F0ZWdvcnkuLi4nXCJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgVGVzdCBDYXRlZ29yaWVzJ1wiIFt1c2Vyc0xpc3RdPVwiYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3RcIlxuICBbbm9EYXRhVGV4dF09XCInTm8gVGVzdCBDYXRlZ29yaWVzIEZvdW5kJ1wiIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2VMaXN0XCJcbiAgW3VzZXJJZEtleV09XCInY2F0ZWdvcnlfaWQnXCIgW2l0ZW1FbWFpbEtleV09XCInY2F0ZWdvcnlfbmFtZSdcIiBbaXRlbU5hbWVLZXldPVwiJ2NhdGVnb3J5X25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzdXJhbmNlJywgJGV2ZW50KVwiIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBDYXRlZ29yeSdcIj5cbjwvYXBwLW93bmVyLWxpc3Q+XG5cbjxhcHAtYXVkaXQtY2F0ZWdvcnktbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCIgKGNsb3NlTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbYXVkaXRDYXRlZ29yeV09XCJhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdFwiIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JlcXVpcmVzX2F1ZGl0JywgJGV2ZW50KVwiXG4gIFtzZWxlY3RlZERhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXVwiPjwvYXBwLWF1ZGl0LWNhdGVnb3J5LWxpc3Q+XG5cbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cIihsb2FkZXIgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHx8IGVudHJ1c3RMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuPGFwcC1mcmFtZXdvcmstbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJhbWV3b3JrJ1wiIChhc3NpZ25Db250cm9sKT1cImFzc2lnbkZyb21GcmFtZXdvcmsoJGV2ZW50KVwiXG4gIFtwcmV2aW91c1NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkRnJhbWV3b3JrVmFsdWVzXCIgKGNsb3NlRnJhbWV3b3JrKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIChlbnRydXN0RnJhbWV3b3JrKT1cImVudHJ1c3RGcmFtZXdvcmsoJGV2ZW50KVwiPjwvYXBwLWZyYW1ld29yay1saXN0PlxuXG48IS0tIHJpc2stY2FsY3VsYXRvciBoZXJlIC0tPlxuPGFwcC1yaXNrLWNsYXNzaWZpY2F0aW9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIiBbY3VycmVudFJpc2tWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzXCJcbiAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhbGN1bGF0ZWRyaXNrJywgJGV2ZW50KVwiIChjbG9zZUxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+XG48L2FwcC1yaXNrLWNsYXNzaWZpY2F0aW9uPlxuXG48YXBwLXJldmlldy1mcmVxdWVuY3kgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiIFtyZXZpZXdDb21wbGV0ZURheXNdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzXG4gIFwiIFtyZXZpZXdOT3RDb21wbGV0ZWREYXlzXT1cIlxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXNcbiAgXCIgKHNhdmVSZXZpZXdGcmVxdWVuY3kpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3RnJlcXVlbmN5JywgJGV2ZW50KVwiIChjbG9zZVJldmlld0ZyZXF1ZW5jeSk9XCJcbiAgICBhY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCBmYWxzZSk7XG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gW107XG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXVxuICBcIiAoYmFja1RvVXNlckxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpOyBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCI+XG48L2FwcC1yZXZpZXctZnJlcXVlbmN5PlxuXG48YXBwLWFzc2Vzc21lbnQtbGlzdCAqbmdJZj1cImlzQXNzZXNzbWVudFwiIFtwcm9ncmFtX2lkc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXT8uX2lkXCIgKGNhbmNlbEFzc2Vzc21lbnQpPVwiXG4gICAgaXNBc3Nlc3NtZW50ID0gZmFsc2U7IGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxuICBcIiBbaXNFZGl0XT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZCA/IHRydWUgOiBmYWxzZVwiXG4gIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50XCIgKG9uQXNzZXNzbWVudFNlbGVjdCk9XCJcbiAgICBvbkFzc2Vzc21lbnRTZWxlY3QoJGV2ZW50KTsgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgZmFsc2UpXG4gIFwiPjwvYXBwLWFzc2Vzc21lbnQtbGlzdD5cblxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZSAqbmdJZj1cInNob3dTbWlsZXlcIiBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCIgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuXG48ZGl2IGNsYXNzPVwiaW1wb3J0XCIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzLW5ldydcIj5cbiAgPGFwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIgI2VkaXRvciBbb3BlblBvcnRhbF09XCInUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxuICAgIChwb3N0QXNzZXNzbWVudCk9XCJwb3N0QXNzZXNzbWVudCgkZXZlbnQpXCIgKHNldElzVXBsb2FkZWQpPVwic2V0SXNVcGxvYWRlZCgkZXZlbnQpXCJcbiAgICBbY2hlY2twb2ludEpTT05dPVwicmVzcG9uc2liaWxpdHlGb3JtLm5ld19jaGVja3BvaW50c1wiPlxuICA8L2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXI+XG48L2Rpdj5cblxuPGFwcC1ncmMtb2JqZWN0LWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1wiIFtncmNPYmplY3RdPVwiZ3JjTGlzdFwiXG4gIFtzZWxlY3RlZEdSQ109XCJyZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzIHwgcmVmRGlzY29ubmVjdFwiIFtsb2FkZXJdPVwiZ3JjTG9hZGVyXCIgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmRcIlxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIiBbY2FyZExvYWRlcl09XCJncmNUYWJMb2FkZXJcIiAoZ2V0T3RoZXJHUkNPYmplY3RzKT1cImdldE90aGVyR1JDT2JqZWN0cygkZXZlbnQpXCJcbiAgKHNhdmVPdGhlckdSQyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdHUkNfT0JKRUNUUycsICRldmVudClcIlxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIGZhbHNlKVwiPjwvYXBwLWdyYy1vYmplY3QtbGlzdD4iXX0=
|
|
4168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0saURBQWlELENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVM5RCxNQUFNLE9BQU8sMkJBQTJCO0lBZ0R0QyxJQUF5QixVQUFVLENBQUMsZUFBd0I7UUFDMUQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFn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QUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFDcEM7Z0JBQ0EsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FB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cWdFaUY7OzRGRHg5RHBFLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSx5QkFBeUI7aWNBTzFCLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQXdDbUIsVUFBVTtzQkFBbEMsS0FBSzt1QkFBQyxZQUFZO2dCQUtWLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLDJCQUEyQjtzQkFBcEMsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFLd0Isa0JBQWtCO3NCQUEvQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFXZCxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBMlJZLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFHUixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkF3c0k2QyxrQkFBa0I7c0JBQXBFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvZ3JhbXNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcHJvZ3JhbXMuc2VydmljZSc7XG5pbXBvcnQge1xuICBHUkNfVFlQRV9BUlJBWSxcbiAgT1RIRVJfR1JDX0NBUkQsXG59IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvZ3JjT2JqZWN0LmNvbnN0YW50JztcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xuaW1wb3J0IHsgREVGQVVMVF8yNEhSLCBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uVXNlclNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5T2JqZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mcmVxdWVuY3kuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXNwb25zaWJpbHR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0L2ludGVyZmFjZXMvbGlzdC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9kYXRhLXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0dSQU1fTElTVF9BUEkgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBNT05USF9OQU1FUyB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5jb25zdGFudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1jb21wbGlhbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q29tcGxpYW5jZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qIERlZmluaW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XG4gIEBJbnB1dCgpIHJlc3BvbnNpYmlsaXR5SWQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGZyYW1ld29ya0RldGFpbHM6IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KCkgaXNFbnRydXN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBASW5wdXQoKSBhc3Nlc3NtZW50RGV0YWlsczogYW55O1xuICBASW5wdXQoKSBpc0R1cGxpY2F0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGFsbEdyb3VwQXNzaWduZWU6IGJvb2xlYW4gPSB0cnVlO1xuICBhc3NpZ25vcklkOiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIG92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlUmFkaW9Bc3NpZ25lZTogYW55W10gPSBbXTtcbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XG4gIHJlY2VudFJlc3BvbnNpYmlsaXR5VXJsOiBhbnkgPSB7XG4gICAgYnlSZXNwb25zaWJpbGl0aWVzOiB7IHR5cGU6IFsncmVjZW50X3Jlc3BvbnNpYmlsaXRpZXMnXSwgc3ViVHlwZTogWydDQyddIH0sXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXG4gICAgZmlsdGVyT2JqZWN0OiB7XG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXG4gICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICBlbnRydXN0ZWRUbzogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgIH0sXG4gICAgdGltZVBlcmlvZERldGFpbHM6IHsgdHlwZTogJycsIHNlbGVjdGVkUGVyaW9kOiAnJywgc2VsZWN0ZWRZZWFyOiAnJyB9LFxuICAgIHN0YXR1czogJycsXG4gIH07XG4gIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgZ3JjTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG90aGVyR1JDQ2FyZDogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShPVEhFUl9HUkNfQ0FSRCkpO1xuICBzZWxlY3RlZEdSQ1RhYjogbnVtYmVyID0gMDtcbiAgZ3JjVGFiTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY1NlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XG4gIEdSQ19UWVBFX0FSUkFZID0gR1JDX1RZUEVfQVJSQVk7XG4gIGdyY0RhdGFXaXRoVHlwZXM6IGFueSA9IHtcbiAgICBhc3NldHM6IFtdLFxuICAgIHByb2Nlc3NlczogW10sXG4gICAgdmVuZG9yczogW10sXG4gICAgaW52ZW50b3J5OiBbXSxcbiAgfTtcbiAgc2VsZWN0ZWRDYXRlZ29yeTogYW55W10gPSBbXTtcbiAgcHJvZ3JhbUxpc3RVcmwgPSBQUk9HUkFNX0xJU1RfQVBJO1xuXG4gIEBJbnB1dCgnY2xvc2VPbkVzYycpIHNldCBjbG9zZU9uRXNjKGVzY2FwZUNvbmRpdGlvbjogYm9vbGVhbikge1xuICAgIGlmIChlc2NhcGVDb25kaXRpb24pIHtcbiAgICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XG5cbiAgdXJsID1cbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVzZXRGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjaGVja3BvaW50Q291bnRVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgb3BlbmVkRnJvbSE6IGFueTsgLy93aGVuIG9wZW5lZCBmcm9tIHJpc2sgdHJlYXRtZW50IGl0IHdpbGwgYmUgJ1JJU0tfVFJFQVRNRU5UJ1xuICBASW5wdXQoKSBzZWxlY3RlZFJDOiBudW1iZXIgPSAwOyAvLyA0LTUgZGlnaXQgaWQgb2Ygc2VsZWN0ZWQgcmMgYnkgZGVmYXVsdCB3aGVuIG9wZW5lZCBmcm9tIHJpc2sgdHJlYXRtZW50XG4gIC8vIEBJbnB1dCgpIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcbiAgZmVhdHVyZUZsYWdfZ3JvdXBzOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcbiAgc2VsZWN0ZWRSZXZpZXdlcjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgnc2VsZWN0ZWRQcm9ncmFtJykgc2V0IHNldFNlbGVjdGVkUHJvZ3JhbShwcm9ncmFtOiBhbnkpIHtcbiAgICBpZiAocHJvZ3JhbSAmJiBPYmplY3Qua2V5cyhwcm9ncmFtKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtID0gW107XG4gICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2gocHJvZ3JhbSk7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtLnB1c2gocHJvZ3JhbSk7XG4gICAgfVxuICB9XG5cbiAgLyogQ3JlYXRpbmcgYW4gZXZlbnQgZW1pdHRlci4gKi9cbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdDaGVja3BvaW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlzQXNzZXNzbWVudERpc2FibGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYXNzaWduZWVUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBpdCB3aWxsIGVtaXQgd2hlbiBhc3NpZ25lZSB0eXBlIGNoYW5nZVxuICBAT3V0cHV0KCkgb25SZXZpZXdlclR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIGl0IHdpbGwgZW1pdCB3aGVuIHJldmlld2VyIHR5cGUgY2hhbmdlXG5cbiAgZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eScsXG4gIH07XG4gIHByb2dyYW1QZW9wbGVMaXN0OiBhbnkgPSB7XG4gICAgYXNzaWduZWVzTGlzdDogW10sXG4gICAgcmV2aWV3ZXJzTGlzdDogW10sXG4gICAgb3ZlcnNlZXJzTGlzdDogW10sXG4gIH07XG4gIGxvYWRlciA9IGZhbHNlO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgZWRpdERldGFpbHMhOiBhbnk7XG4gIHNtaWxleU1lc3NhZ2UgPSBgRG9uZSFgO1xuICBhY3Rpb25CdXR0b25zID0gW1xuICAgIHtcbiAgICAgIGJ1dHRvblRleHQ6ICdFbnRydXN0IE1vcmUgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXG4gICAgICBpZDogJ2FkZE1vcmUnLFxuICAgIH0sXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlldycgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJJZCA9IDA7XG4gIG9yZ2FuaXphdGlvbklkID0gMDtcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGFzc2lnbm9yc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgYXNzaWduZWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIHNlbGVjdGVkRnJhbWV3b3JrVmFsdWVzITogYW55O1xuICBoYXNSZXZpZXdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIHVzZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWdub3JzTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVzTGlzdDogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJzTGlzdDogYW55W10gPSBbXTtcbiAgZGlzYWJsZUFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlUmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIGRpc2FibGVPdmVyc2VlcklkczogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJNZW1iZXJJZHNMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cE92ZXJzZWVyTGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBSZXZpZXdlckxpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwQXNzaWduZWVMaXN0OiBhbnlbXSA9IFtdO1xuICBvdmVyc2VlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBhbGxVc2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGJlaGFsZk9mVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZVVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICByZXZpZXdlclVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBvdmVyc2VlclVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0OiBhbnlbXSA9IFtdO1xuICBhbGxDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xuICBhc3N1cmFuY2VDYXRlZ29yaWVzTGlzdDogYW55W10gPSBbXTtcbiAgYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3Q6IGFueVtdID0gW107XG4gIGdyb3Vwc0xpc3Q6IGFueVtdID0gW107XG4gIE9yZ0dyb3VwOiBhbnlbXSA9IFtdO1xuICBhZG1pbnNMaXN0OiBhbnlbXSA9IFtdO1xuICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBjYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG4gIG5vblJlbW92YWJsZVVzZXJzTGlzdDogYW55W10gPSBbXTtcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOiBOdW1iZXIgPSAxO1xuXG4gIHJlc3BvbnNpYmlsaXR5Rm9ybTogYW55ID0ge1xuICAgIGFzc2lnbm9yczoge1xuICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGZhbHNlLFxuICAgIH0sXG4gICAgYXNzaWduZWVHcm91cHM6IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiAnQU5ZT05FJyxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgYXNzaWduZWVzOiB7XG4gICAgICB3aG9DYW5Db21wbGV0ZTogJ0FOWV9PTkUnLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBhbGxvd0VkaXREdWVEYXRlOiBmYWxzZSxcbiAgICBmcmVxdWVuY3k6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBvYmplY3RpdmU6ICcnLFxuICAgIHJjOiBbXSxcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6IDEsXG4gICAgY2F0ZWdvcnk6IFtdLFxuICAgIHByb2dyYW06IFtdLFxuICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiBbXSxcbiAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246ICcnLFxuICAgIGN1c3RvbVRhZ3M6IFtdLFxuICAgIGNoZWNrcG9pbnRzOiBbXSxcbiAgICByZXZpZXdlcnM6IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBncm91cFJldmlld2Vyczoge1xuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcbiAgICAgIH0sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIG92ZXJzZWVyczoge1xuICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIG92ZXJzZWVyc0dyb3Vwczoge1xuICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XG4gICAgICBmb3JtYXRSZXF1aXJlZDogZmFsc2UsXG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICBmb3JtYXRMaW5rczogW10sXG4gICAgICBldmlkZW5jZVJlcXVpcmVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGFzc3VyYW5jZUxpc3Q6IFtdLFxuICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICByaXNrQ2xhc3M6ICdsb3cnLFxuICAgIHJpc2tNYXRyaXg6ICcwLDAsMCwwLDAsMCcsXG4gICAgYXVkaXRfY2F0ZWdvcnlfZGV0YWlsczoge1xuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXG4gICAgICBzYW1wbGU6IDUsXG4gICAgICBwZXJjZW50YWdlOiAzMCxcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXG4gICAgICBmcmVxdWVuY3lfdGltZTogREVGQVVMVF8yNEhSLFxuICAgIH0sXG4gICAgYXNzZXNzbWVudDoge1xuICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgfSxcbiAgICBuZXdfY2hlY2twb2ludHM6IHt9LFxuICAgIGxpbmtlZFByb2dyYW06IFtdLFxuICAgIHNlbGVjdGVkR1JDT2JqZWN0czogW10sXG4gICAgY3VzdG9tRmllbGRzOiBbXSxcbiAgfTtcbiAgbW9yZU9wdGlvbnM6IGFueSA9IHtcbiAgICBPQkpFQ1RJVkU6IGZhbHNlLFxuICAgIFJDOiBmYWxzZSxcbiAgICBDQVRFR09SWTogZmFsc2UsXG4gICAgUFJPR1JBTTogZmFsc2UsXG4gICAgRk9STUFURV9FVklERU5DRTogZmFsc2UsXG4gICAgQ0hFQ0tQT0lOVFM6IGZhbHNlLFxuICAgIEFTU0VTU01FTlQ6IGZhbHNlLFxuICAgIFJJU0tfQ0xBU1NJRklDQVRJT046IGZhbHNlLFxuICAgIFJFVklFV0VSOiBmYWxzZSxcbiAgICBPVkVSU0VFUjogZmFsc2UsXG4gICAgQVNTVVJBTkNFOiBmYWxzZSxcbiAgICBBUFBTOiBmYWxzZSxcbiAgICBSRVFVSVJFU19BVURJVDogZmFsc2UsXG4gICAgQ0hFQ0tQT0lOVFNfTkVXOiBmYWxzZSxcbiAgICBHUkNfT0JKRUNUUzogZmFsc2UsXG4gICAgQ1VTVE9NX0ZJRUxEUzogZmFsc2UsXG4gIH07XG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbXG4gICAgJ2Fzc3VyYW5jZScsXG4gICAgJ2ZyYW1ld29yaycsXG4gICAgJ2Fzc2lnbm9ycycsXG4gICAgJ2Fzc2lnbmVlcycsXG4gICAgJ2NhdGVnb3J5JyxcbiAgICAncHJvZ3JhbScsXG4gICAgJ3JjJyxcbiAgICAnY2hlY2twb2ludHMnLFxuICAgICdmcmVxdWVuY3knLFxuICAgICdyZXZpZXdlcicsXG4gICAgJ3Jldmlld2VyRnJlcXVlbmN5JyxcbiAgICAnb3ZlcnNlZXInLFxuICAgICdvdmVyc2Vlck5vdGlmeScsXG4gICAgJ3Jpc2tDYWxjdWxhdG9yJyxcbiAgICAnaXNBc3Nlc3NtZW50JyxcbiAgICAncmVxdWlyZXNfYXVkaXQnLFxuICAgICdjaGVja3BvaW50cy1uZXcnLFxuICAgICdHUkNfT0JKRUNUUycsXG4gICAgJ0NVU1RPTV9GSUVMRFMnLFxuICBdO1xuXG4gIGZvY3VzID0ge1xuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IGZhbHNlLFxuICAgIG9iamVjdGl2ZTogZmFsc2UsXG4gIH07XG5cbiAgY2F0ZWdvcmllczogYW55ID0ge1xuICAgIHJlZ3VsYXRpb25zOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBzdGFuZGFyZHM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICAgIGludGVybmFsQ29udHJvbHM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICAgIG90aGVyczoge1xuICAgICAgbGlzdDogW10sXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxuICAgIH0sXG4gIH07XG5cbiAgYWxsUHJvZ3JhbXM6IGFueVtdID0gW107XG5cbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xuICAgIHsgbmFtZTogJ0xvdycsIHZhbHVlOiAnbG93JywgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTG93LU1lZGl1bScsIHZhbHVlOiAnbG93X21lZGl1bScsIGNsYXNzOiAnbG93LW1lZCcgfSxcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAnbWVkaXVtX2hpZ2gnLCBjbGFzczogJ21lZC1oaWdoJyB9LFxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogJ2hpZ2gnLCBjbGFzczogJ2hpZ2gnIH0sXG4gIF07XG5cbiAgYXNzaWdub3JNb2RlID0gJ2NoZWNrYm94JztcbiAgcmNNb2RlID0gJ2NoZWNrYm94JztcbiAgaW52YWxpZFR5cGUgPSAnJztcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkITogYW55O1xuICBhc3NpZ25lZVJhZGlvU2VsZWN0ID0gZmFsc2U7XG4gIHByb2dyYW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvLyBmcmVxdWVuY3kgdmFyaWFibGUgZGVjbGFyYXRpb25cbiAgZnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgIG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM6IHt9LFxuICB9O1xuXG4gIGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0IHwgbnVsbCA9IG51bGw7XG4gIGZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ0hvdyBvZnRlbiBkb2VzIHRoZSByZXNwb25zaWJpbGl0eSBvY2N1cj8nO1xuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGlzRWRpdFdoYXQ6IEJvb2xlYW4gPSB0cnVlO1xuICBpc0ZyYW1ld29ya0F2YWlsYWJsZSA9IDE7XG4gIGlzTm90aWZpY2F0aW9uUGVuZGluZyA9IDA7XG5cbiAgYXNzdXJhbmNlRmxhZyE6IGFueTtcbiAgcmlza0NsYXNzaWZpY2F0aW9uRmxhZyE6IGFueTtcbiAgaGlkZGVuTGlzdDogYW55W10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uRGV0YWlscyE6IGFueTtcbiAgaXNSaXNrRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNEdXBsaWNhdGVFbnRydXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGF1ZGl0VGltZTogc3RyaW5nID0gREVGQVVMVF9USU1FO1xuICBzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZTogbnVtYmVyID0gMjtcbiAgc2FtcGxlVmFsdWU6IGFueTtcbiAgc2FtcGxlUGVyY2VudGFnZTogYW55O1xuICBzZWxlY3RlZFNhbXBsZSE6IG51bWJlcjtcbiAgaXNTYW1wbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGVtcENoZWNrVmFsdWU6IG51bWJlciA9IC0xO1xuICBpc0Fzc2Vzc21lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWFuYWdlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBjaGVja3BvaW50Q291bnQ6IG51bWJlciA9IDA7XG4gIHJvbGVCYXNlZFBlcm1pc3Npb25zITogYW55O1xuICBpc0dyb3VwQXNzaWduZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xuICBvcmlnaW5hbEFzc2lnbmVlITogYW55O1xuICB1c2VyTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBhc3NpZ25vcnNMaXN0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHJhd1Jlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBhbGxvd0VkaXREdWVEYXRlRmVhdHVyZUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsUHJvZ2FtU2VsZWN0ZWQ6IGFueVtdID0gW107XG4gIG9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIGN1c3RvbUZpZWxkc1NlbGVjdGVkOiBzdHJpbmcgPSAnKyBBZGQgQ3VzdG9tIEZpZWxkcyc7XG5cblxuICBAVmlld0NoaWxkKCd3aGF0Jykgd2hhdElucHV0ITogRWxlbWVudFJlZjtcbiAgdW5TdWJzY3JpYmVQcm9ncmFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eURldGFpbHM6IGFueTtcbiAgQElucHV0KCkgY3VzdG9tRmllbGRzOiBhbnlbXSA9IFtcbiAgXVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbjogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9ncmFtU2VydmljZTogUHJvZ3JhbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlOiBPcmdhbml6YXRpb25Vc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlLFxuXG4gICkge1xuICAgIHRoaXMuZ2V0T3JnVXNlckluZm8oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgdGhpcy5nZXRJbml0aWFsRGF0YSgpO1xuICAgIHRoaXMucG9wdWxhdGVSQ0xpc3QoKTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG5cbiAgfVxuXG4gIGdldE9yZ1VzZXJJbmZvKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldE9yZ1VzZXJJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY29tcGxpYW5jZVN1Ym1vZHVsZSA9XG4gICAgICAgICAgcmVzPy5yb2xlQWN0aW9uc1tcbiAgICAgICAgICAgIHJlcz8ucm9sZUFjdGlvbnM/LmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1vZHVsZU5hbWUgPT09ICdjb21wbGlhbmNlJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIF0/LnN1Yk1vZHVsZTtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPVxuICAgICAgICAgIGNvbXBsaWFuY2VTdWJtb2R1bGVbXG4gICAgICAgICAgICBjb21wbGlhbmNlU3VibW9kdWxlPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zdWJNb2R1bGVOYW1lID09PSAnUHJvZ3JhbXMnXG4gICAgICAgICAgICApXG4gICAgICAgICAgXT8ucGVybWlzc2lvbnM7XG4gICAgICAgIHRoaXMubWFuYWdlUGVybWlzc2lvbiA9IHBlcm1pc3Npb25zW1xuICAgICAgICAgIHBlcm1pc3Npb25zPy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm5hbWUgPT09ICdtYW5hZ2UgcHJvZ3JhbXMnKVxuICAgICAgICBdPy5lbmFibGVcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5tYW5hZ2VQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NBVEVHT1JZJyk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ1BST0dSQU0nKTtcbiAgICAgICAgICB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcG9wdWxhdGVSQ0xpc3QoKSB7XG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJiB0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZlYXR1cmVGbGFncygpIHtcbiAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X2dyb3VwcydcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9zaW1wbGlmaWNhdGlvbidcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1xuICAgICk7XG4gICAgdGhpcy5hbGxvd0VkaXREdWVEYXRlRmVhdHVyZUZsYWcgPVxuICAgICAgdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2VkaXRfZHVlX2RhdGUnKTtcbiAgfVxuXG4gIGdldEluaXRpYWxEYXRhKCkge1xuICAgIHRoaXMuaXNEdXBsaWNhdGUgPSB0aGlzLnJlc3BvbnNpYmlsaXR5RGV0YWlscz8uZHVwbGljYXRlID8/IGZhbHNlO1xuICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdBU1NFU1NNRU5UJyk7XG4gICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0FTU1VSQU5DRScpO1xuICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICB0aGlzLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKTtcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgdGhpcy5jaGVja0N1c3RvbUZpZWxkcygpO1xuXG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLm1vbnRoQXJyYXkubWFwKChtb250aCkgPT5cbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxuICAgICk7XG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xuICAgICAgdGhpcy5nZXRSQ0RldGFpbHNpblJpc2tUcmVhdG1lbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXIudWlkO1xuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XG4gICAgfVxuICAgIHRoaXMuZ2V0T3JnRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uRGV0YWlsKCk7XG4gICAgdGhpcy5zZXRSZXNwb25zaWJpbGl0eU5hbWUoKTtcbiAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gIH1cblxuICBjaGVja0N1c3RvbUZpZWxkcygpIHtcbiAgICBpZiAoIXRoaXMuY3VzdG9tRmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5oaWRkZW5MaXN0LmluY2x1ZGVzKCdDVVNUT01fRklFTERTJykpIHtcbiAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NVU1RPTV9GSUVMRFMnKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcblxuICB9XG5cbiAgZ2V0UkNEZXRhaWxzaW5SaXNrVHJlYXRtZW50KCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxuICAgICAgW3RoaXMuc2VsZWN0ZWRSQ10sXG4gICAgICAnaXRlbV9pZCdcbiAgICApO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICB9XG5cbiAgZ2V0T3JnRGV0YWlscygpIHtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWVcbiAgICB0aGlzLmVudHJ1c3RMb2FkZXIgPSB0cnVlXG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSaXNrRW5hYmxlID0gcmVzPy5lbmFibGVfcmlza2NsYXNzID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBpZiAoIXJlcz8uZW5hYmxlX3Jpc2tjbGFzcykge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdSSVNLX0NMQVNTSUZJQ0FUSU9OJyk7XG4gICAgICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW50cnVzdExvYWRlciA9IGZhbHNlXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2VcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJzY3JpcHRpb25EZXRhaWwoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRTdWJzY3JpcHRpb25EZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uRGV0YWlscyA9IHJlcztcbiAgICAgICAgdGhpcy5oaWRlT3B0aW9uRnJvbU1vcmVPcHRpb25zKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBoaWRlT3B0aW9uRnJvbU1vcmVPcHRpb25zKCkge1xuICAgIGNvbnN0IHZpc2libGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0/LmFzc2Vzc21lbnRfZmxhZykge1xuICAgICAgdmlzaWJsZU9wdGlvbnMucHVzaCgnQVNTRVNTTUVOVCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0/LmFzc3VyYW5jZV9mbGFnKSB7XG4gICAgICB2aXNpYmxlT3B0aW9ucy5wdXNoKCdBU1NVUkFOQ0UnKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGRlbkxpc3QgPSB0aGlzLmhpZGRlbkxpc3Q/LmZpbHRlcihcbiAgICAgIChlbGUpID0+ICF2aXNpYmxlT3B0aW9ucy5pbmNsdWRlcyhlbGUpXG4gICAgKTtcbiAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XG4gICAgaWYgKHRoaXMuc2lkZVNlbGVjdG9yRWxlbWVudHM/LmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMtbmV3JzpcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbm9ycyc6XG4gICAgICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NVU1RPTV9GSUVMRFMnOlxuICAgICAgICB0aGlzLnNldEN1c3RvbUZpZWxkcyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldEN1c3RvbUZpZWxkcyhldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXN0b21GaWVsZHNTZWxlY3RlZCA9ICcrIEFkZCBDdXN0b20gRmllbGRzJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21GaWVsZHMucHVzaChldmVudCk7XG4gICAgdGhpcy5jdXN0b21GaWVsZHMgPSB0aGlzLmN1c3RvbUZpZWxkcy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuaWQgIT09IGV2ZW50LmlkKTtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XG5cbiAgfVxuXG4gIHNldFJlc3BvbnNpYmlsaXR5TmFtZSgpIHtcbiAgICBpZiAodGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlID09PSAnY29tcGxpYW5jZV9hdWRpdCcpIHtcbiAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICB2YWx1ZTogJ0F1ZGl0OiAnICsgdGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF9uYW1lLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGFzc2Vzc21lbnRfaWQ6IHRoaXMuYXNzZXNzbWVudERldGFpbHMuYWlkLFxuICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5hc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeVswXT8uX2lkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXRBc3Nlc3NtZW50RGF0YShbdGhpcy5hc3Nlc3NtZW50RGV0YWlsc10sIHBheWxvYWQsICdhc3Nlc3NtZW50Jyk7XG5cbiAgICAgIHRoaXMud2hhdENoYW5nZWQoYXNzZXNzbWVudERhdGEpO1xuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFNfTkVXJyk7XG4gICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgd2hhdENoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZTtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IHRydWU7XG4gICAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3doYXQnKSB7XG4gICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xuICAgIHRoaXMubW9yZU9wdGlvbnNbZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xuICB9XG5cbiAgb25SY1R5cGVDaGFuZ2Uoc2VsZWN0ZWRUeXBlOiBOdW1iZXIpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9IHNlbGVjdGVkVHlwZSA/PyAxO1xuICB9XG5cbiAgZ2V0UkNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy5jb21wbGlhbmNlQ29tbW9uU2VydmljZT8uZ2V0UmNMaXN0SW5mbyhwYXJhbXMpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vIE5vcm1hbGlzZSBSQyBsaXN0IHN0cnVjdHVyZSBzbyBVSSBjb21wb25lbnRzIGNhbiByZWx5IG9uIGl0ZW1faWQgLyBpdGVtX25hbWVcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gQXJyYXkuaXNBcnJheShyZXMpXG4gICAgICAgICAgPyByZXMubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIERldGVybWluZSBpdGVtX25hbWUgLSBwcmlvcml0aXplIGV4aXN0aW5nIGl0ZW1fbmFtZSwgdGhlbiByY19uYW1lXG4gICAgICAgICAgICBsZXQgaXRlbU5hbWUgPSBpdGVtPy5pdGVtX25hbWU7XG5cbiAgICAgICAgICAgIGlmICghaXRlbU5hbWUgfHwgaXRlbU5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0/LnJjX25hbWUpICYmIGl0ZW0ucmNfbmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBlbXB0eSBzdHJpbmdzIGFuZCBqb2luIGFycmF5IGVsZW1lbnRzIHdpdGggJyAvICcgc2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRSY05hbWUgPSBpdGVtLnJjX25hbWUuZmlsdGVyKChuYW1lOiBhbnkpID0+IG5hbWUgJiYgbmFtZS50cmltKCkgIT09ICcnKTtcbiAgICAgICAgICAgICAgICBpdGVtTmFtZSA9IGZpbHRlcmVkUmNOYW1lLmpvaW4oJyAvICcpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnJjX25hbWUgJiYgdHlwZW9mIGl0ZW0ucmNfbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgcmNfbmFtZSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgICBpdGVtTmFtZSA9IGl0ZW0ucmNfbmFtZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0ZW0/Lml0ZW1fbmFtZSkgJiYgaXRlbS5pdGVtX25hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrOiBpZiBpdGVtX25hbWUgaXMgYW4gYXJyYXksIGZpbHRlciBhbmQgam9pbiBpdFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbU5hbWUgPSBpdGVtLml0ZW1fbmFtZS5maWx0ZXIoKG5hbWU6IGFueSkgPT4gbmFtZSAmJiBuYW1lLnRyaW0oKSAhPT0gJycpO1xuICAgICAgICAgICAgICAgIGl0ZW1OYW1lID0gZmlsdGVyZWRJdGVtTmFtZS5qb2luKCcgLyAnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDbGVhbiB1cCB0aGUgbmFtZSAtIHJlbW92ZSBhbnkgZXh0cmEgc3BhY2VzLCB0cmltLCBhbmQgZW5zdXJlIGl0J3MgYSBzdHJpbmdcbiAgICAgICAgICAgIGlmIChpdGVtTmFtZSkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1OYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGl0ZW1OYW1lID0gaXRlbU5hbWUudHJpbSgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nIGlmIGl0J3Mgbm90IGFscmVhZHlcbiAgICAgICAgICAgICAgICBpdGVtTmFtZSA9IFN0cmluZyhpdGVtTmFtZSkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGlzZWQgPSB7XG4gICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgIC8vIGl0ZW1faWQgaXMgd2hhdCB0aGUgUkMgc2VsZWN0b3IgJiBmbG9hdGluZyBiYXIgZXhwZWN0XG4gICAgICAgICAgICAgIGl0ZW1faWQ6XG4gICAgICAgICAgICAgICAgaXRlbT8uaXRlbV9pZCA/PyBpdGVtPy5yY19pZCA/PyBpdGVtPy5yY2lkID8/IG51bGwsXG4gICAgICAgICAgICAgIC8vIGl0ZW1fbmFtZSBpcyB3aGF0IGZsb2F0aW5nIGJhciBkaXNwbGF5cyAtIGVuc3VyZSBpdCdzIHByb3Blcmx5IHNldFxuICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW1OYW1lIHx8IGl0ZW0/Lml0ZW1fbmFtZSB8fCAoQXJyYXkuaXNBcnJheShpdGVtPy5yY19uYW1lKSA/IGl0ZW0ucmNfbmFtZS5qb2luKCcgLyAnKSA6IGl0ZW0/LnJjX25hbWUpIHx8ICcnLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGlzZWQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBFeHRyYWN0IElEcyB1c2luZyB0aGUgbm9ybWFsaXNlZCBrZXlcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMsICdpdGVtX2lkJyk7XG5cbiAgICAgICAgY29uc3QgUkMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgaWRzPy5pbmNsdWRlcyhlbGVtZW50Lml0ZW1faWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChSQz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSBSQztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxuICAgICAgICAgICAgW3RoaXMuc2VsZWN0ZWRSQ10sXG4gICAgICAgICAgICAncmNpZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYnV0dG9uVGV4dDogJ0dvIHRvIHJpc2sgdHJlYXRtZW50JyxcbiAgICAgICAgICAgICAgY2xhc3M6ICdibHVlLWJ0bicsXG4gICAgICAgICAgICAgIGlkOiAndmlldycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgLy8gUHJldmlvdXNseSB0aGVyZSB3YXMgb25seSBSQyB3YXMgZW1pdHRpbmcgd2hpY2ggbWFkZSB0aGUgY2hlY2tlZCBvcHRpb25zIHRvIGRlIGNoZWNrIG5vdyBjaGVja2luZyB0aGUgY29uZGl0aW9uIGFuZCBzZW5kaW5nIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uc1trZXldKSB7XG4gICAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnM/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnVXNlckluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXM/Lm5vdGlmaWNhdGlvbl9wZW5kaW5nX2ZsYWc7XG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xuICAgICAgICAgICAgPyAnVmlldyBSZXNwb25zaWJpbGl0aWVzIGluIFF1ZXVlJ1xuICAgICAgICAgICAgOiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJztcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNGcmFtZXdvcmtBdmFpbGFibGUgPSByZXM/LmVuYWJsZV9yZXNwb25zaWJpbGl0eV9mcmFtZXdvcms7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXMpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy5hbGxDYXRlZ29yaWVzID0gY2xvbmVEZWVwKHJlcyk7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLm90aGVycy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5yZWd1bGF0aW9ucy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5zdGFuZGFyZHMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuaW50ZXJuYWxDb250cm9scy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgdGhpcy51blN1YnNjcmliZVByb2dyYW0ubmV4dCgpO1xuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLmNvbXBsZXRlKCk7XG4gICAgaWYgKHByb2dyYW1faWQgJiYgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcbiAgICAgIHRoaXMuZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldFJDTGlzdChwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRBc3NpZ25lZXNMaXN0KCk7XG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm9ncmFtRGV0YWlscyhwcm9ncmFtSWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRQcm9ncmFtKHByb2dyYW1JZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZXM/LmFzc2Vzc21lbnQgJiZcbiAgICAgICAgcmVzPy5hc3Nlc3NtZW50Py5sZW5ndGggJiZcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjYXRlZ29yeUFzc2Vzc21lbnQgPSByZXM/LmFzc2Vzc21lbnQuZmlsdGVyKFxuICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWQgPT09XG4gICAgICAgICAgICBhc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2F0ZWdvcnlBc3Nlc3NtZW50Py5sZW5ndGggJiZcbiAgICAgICAgICBjYXRlZ29yeUFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnRJZHM/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpc0V4aXN0ID0gY2F0ZWdvcnlBc3Nlc3NtZW50WzBdPy5hc3Nlc3NtZW50SWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWlzRXhpc3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSB7XG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKHByb2dyYW1faWQ6IHN0cmluZykge1xuICAgIHRoaXMuZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZCk7XG4gICAgdGhpcy5nZXRSQ0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkKTtcbiAgfVxuXG4gIGdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldEFzc2lnbm9yc0xpc3QocGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5iZWhhbGZPZlVzZXJzTGlzdCA9IHJlcztcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmZldGNoQXNzaWduZWUocHJvZ3JhbV9pZCk7XG4gIH1cblxuICBmZXRjaEFzc2lnbmVlKHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0ID0gcmVzLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRQZW9wbGVMaXN0QWdhaW5zdFBJRChwcm9ncmFtX2lkOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3JnYW5pemF0aW9uVXNlckxpc3QocmVzKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCxcbiAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHNcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5teV9tZW1iZXJfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbUFzc2lnbmVlR3JvdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJzIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnMpLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBjb25zdCByZXZpZXdlcnMgPSB0aGlzLnJldmlld2Vyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHJldmlld2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnM7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHJldmlld2VycztcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVWSUVXRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtUmV2aWV3ZXJHcm91cCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbERlZmF1bHRDQ0lkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3Qgb3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmNjX2VtYWlsLmluY2x1ZGVzKGVsZW1lbnQubXlfbWVtYmVyX2lkKSk7XG4gICAgICAgICAgY29uc3Qgbm90aWZ5TGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUlkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQobm90aWZ5TGlzdElkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICBhbGxEZWZhdWx0Q0NGYWlsdXJlSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSB0aGlzLm92ZXJzZWVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9vdmVyc2VlcnMuZmFpbHVyZV9jY19lbWFpbC5pbmNsdWRlcyhlbGVtZW50Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIC8vIGlmIChvdmVyc2VlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBvdmVyc2VlcnM7XG4gICAgICAgICAgLy8gICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgLy8gaWYgKG5vdGlmeU92ZXJzZWVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IG5vdGlmeU92ZXJzZWVycztcbiAgICAgICAgICAvLyAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIGlmIChvdmVyc2VlcnNDQz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IG92ZXJzZWVyc0NDO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gb3ZlcnNlZXJzQ0NGYWlsdXJlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1PdmVyc2Vlckdyb3VwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHNldE9yZ2FuaXphdGlvblVzZXJMaXN0KHJlczogYW55KSB7XG4gICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gcmVzLmFzc2lnbmVlLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gcmVzLm92ZXJzZWVyLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gcmVzLnJldmlld2VyLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdCA9IHtcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWduZWVzTGlzdCldLFxuICAgICAgcmV2aWV3ZXJzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5yZXZpZXdlcnNMaXN0KV0sXG4gICAgICBvdmVyc2VlcnNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLm92ZXJzZWVyc0xpc3QpXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0T3JnYW5pemF0aW9uR3JvdXBzKHBhcmFtcylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlUHJvZ3JhbSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8/IFtdO1xuICAgICAgICAgIGlmICghcHJvZ3JhbV9pZCkge1xuICAgICAgICAgICAgdGhpcy5PcmdHcm91cCA9IGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XG4gICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcbiAgICAgICAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZ3JvdXBzO1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXA/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoICYmXG4gICAgICAgICAgICBwcm9ncmFtX2lkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJlxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBkYXRhLmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBlbGVtZW50Lmdyb3VwX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IG1lbWJlcklkczogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMuZm9yRWFjaCgoZWFjaEdyb3VwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWFjaEdyb3VwPy5tZW1iZXJfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4ubmV3IFNldChtZW1iZXJJZHMuY29uY2F0KGVhY2hHcm91cD8ubWVtYmVyX2lkcykpLFxuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXG4gICAgICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gWy4uLm5ldyBTZXQoaWRzKSwgLi4ubmV3IFNldChtZW1iZXJJZHMpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFzc2lnbm9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldEVkaXRSZXNwb25zaWJpbGl0eURldGFpbHMoaWQ6IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5RGV0YWlscygpO1xuICB9XG5cbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcbiAgICBpZHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdFxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChlbGUpID0+IGVsZSk7XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1Bc3NpZ25lZUdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBhc3NpZ25lZUdyb3VwcyA9IHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3Q/LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZUdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgZWxlbWVudD8uZ3JvdXBfaWRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZUdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1PdmVyc2Vlckdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzXG4gICAgICAgID8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHNcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0dyb3VwSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0dyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGFsbERlZmF1bHRDQ0dyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm90aWZ5TGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQobm90aWZ5TGlzdElkcyksXG4gICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gb3ZlcnNlZXJzQ0NHcm91cDtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPVxuICAgICAgICAgICAgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IG92ZXJzZWVyc0NDR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgIG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gW107XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlUHJvZ3JhbVJldmlld2VyR3JvdXAoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aFxuICAgICkge1xuICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFsbElkcyA9IFtcbiAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzXG4gICAgICAgICksXG4gICAgICBdO1xuICAgICAgY29uc3QgcmV2aWV3ZXJzR3JvdXAgPSB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgcmV2aWV3ZXJzR3JvdXA/Lmxlbmd0aCB8fFxuICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IHJldmlld2Vyc0dyb3VwO1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlT3ZlcnNlZXJEYXRhKHJlczogYW55KSB7XG4gICAgbGV0IG92ZXJzZWVyVXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IG92ZXJzZWVyVXNlck5vdGlmeUxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IG92ZXJzZWVyRW1wbG95ZWVzTGlzdCA9IHJlcz8uY2NfbWVtYmVyX2VtYWlsXG4gICAgICA/IE9iamVjdC5rZXlzKHJlcz8uY2NfbWVtYmVyX2VtYWlsKS5tYXAoTnVtYmVyKVxuICAgICAgOiBbXTtcbiAgICBvdmVyc2VlclVzZXJMaXN0ID1cbiAgICAgIG92ZXJzZWVyRW1wbG95ZWVzTGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uY2NFbWFpbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gb3ZlcnNlZXJFbXBsb3llZXNMaXN0LmZpbHRlcigoZW1wbG95ZWVJZHM6IG51bWJlcikgPT5cbiAgICAgICAgICByZXM/LmV4aXN0aW5nVXNlcklkcz8uY2NFbWFpbE1lbWJlcklkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4ub3ZlcnNlZXJFbXBsb3llZXNMaXN0XTtcbiAgICBsZXQgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3QgPSByZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICA/IE9iamVjdC5rZXlzKHJlcz8uZmFpbHVyZV9jY19tZW1iZXJfZW1haWwpLm1hcChOdW1iZXIpXG4gICAgICA6IFtdO1xuICAgIG92ZXJzZWVyVXNlck5vdGlmeUxpc3QgPVxuICAgICAgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBvdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmZhaWx1cmVDQ0VtYWlsTWVtYmVySWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcbiAgICAgICAgKVxuICAgICAgICA6IFsuLi5vdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdF07XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnb3ZlcnNlZXJzJ10gPSB7XG4gICAgICBsaXN0OiByZXM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIG92ZXJzZWVyVXNlckxpc3QsICdlbXBsb3llZV9pZCcpXG4gICAgICAgIDogW10sXG4gICAgICBub3RpZnlMaXN0OiByZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0LFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnb3ZlcnNlZXJzR3JvdXBzJ10gPSB7XG4gICAgICBsaXN0OiByZXM/LnVzZXJHcm91cElkcz8uY2NFbWFpbEdyb3VwSWRzXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcyxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICAgIG5vdGlmeUxpc3Q6IHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmZhaWx1cmVDQ0VtYWlsR3JvdXBJZHMsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHBvcHVsYXRlUmV2aWV3ZXJEYXRhKHJlczogYW55KSB7XG4gICAgY29uc3QgcmV2aWV3ZXJEZXRhaWxzID0gT2JqZWN0LmtleXMocmVzPy5yZXZpZXdlcl9hcnIpO1xuICAgIHRoaXMuaGFzUmV2aWV3ZXIgPSByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDA7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlckRldGFpbHMgPSByZXM/LnVzZXJHcm91cElkcz8ucmV2aWV3ZXJHcm91cElkcz8ubGVuZ3RoXG4gICAgICA/IE9iamVjdC5hc3NpZ24ocmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHMpXG4gICAgICA6IFtdO1xuICAgIGxldCByZXZpZXdlcl91c2VyczogYW55W10gPSBbXTtcbiAgICByZXZpZXdlcl91c2VycyA9XG4gICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnMuZmlsdGVyKChtZW1iZXJJZDogYW55KSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5yZXZpZXdlcklkcz8uaW5jbHVkZXMobWVtYmVySWQ/Lm1lbWJlcl9pZClcbiAgICAgICAgKVxuICAgICAgICA6IHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2VycztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsncmV2aWV3ZXJzJ10gPSB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICB9LFxuICAgICAgYWNjZXB0ZWREYXRhOiByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXZpZXdlcl91c2VycyA6IFtdLFxuICAgICAgbGlzdDpcbiAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnNldFJldmlld2VyUGF5bG9hZChcbiAgICAgICAgICAgIHJldmlld2VyX3VzZXJzLFxuICAgICAgICAgICAgJ29iamVjdCcsXG4gICAgICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlXG4gICAgICAgICAgKVxuICAgICAgICAgIDogW10sXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnZ3JvdXBSZXZpZXdlcnMnXSA9IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzpcbiAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZSA9PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOlxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2FmdGVyX2RheXMgOiAyLFxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzIDogMixcbiAgICAgIH0sXG4gICAgICBsaXN0OlxuICAgICAgICBncm91cFJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuT3JnR3JvdXAsIGdyb3VwUmV2aWV3ZXJEZXRhaWxzLCAnZ3JvdXBfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHBvcHVsYXRlQXNzaWduZWVEYXRhKHJlczogYW55KSB7XG4gICAgbGV0IEFzc2lnbmVlQW55VXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IEFzc2lnbmVlQWxsVXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IGFzc2lnbmVlQW55T25lTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZCAmJiB0aGlzLmlzRW50cnVzdFxuICAgICAgICA/IHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkXG4gICAgICAgIDogW107XG4gICAgQXNzaWduZWVBbnlVc2VyTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IGFzc2lnbmVlQW55T25lTGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQW55b25lSWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcbiAgICAgICAgKVxuICAgICAgICA6IFsuLi5hc3NpZ25lZUFueU9uZUxpc3RdO1xuXG4gICAgQXNzaWduZWVBbGxVc2VyTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVlX21lbWJlcl9pZCAmJiAhdGhpcy5pc0VudHJ1c3QgPyByZXM/LmFzc2lnbmVlX21lbWJlcl9pZCA6IFtdO1xuICAgIGNvbnN0IGFzc2lnbmVkVG9Vc2VyRGV0YWlscyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgIFtOdW1iZXIocmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQpXSxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGlmIChhc3NpZ25lZFRvVXNlckRldGFpbHM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgbWVtYmVyX2lkID0gYXNzaWduZWRUb1VzZXJEZXRhaWxzWzBdPy5teV9tZW1iZXJfaWQ7XG4gICAgICBpZiAocmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQWxsSWRzPy5pbmNsdWRlcyhtZW1iZXJfaWQpKSB7XG4gICAgICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPSByZXM/LmFzc2lnbmVlX21lbWJlcl9pZDtcbiAgICAgICAgcmVzLnVzZXJHcm91cElkc1snYXNzaWduZWVBbGxHcm91cElkcyddID0gW107XG4gICAgICB9IGVsc2UgaWYgKHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2Fzc2lnbmVlcyddID0ge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcy5pc0dyb3VwQXNzaWduVG8gPyAnQU5ZX09ORScgOiAnQUxMJyxcbiAgICAgIGxpc3Q6XG4gICAgICAgIHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkPy5sZW5ndGggPT0gMFxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgW051bWJlcihBc3NpZ25lZUFsbFVzZXJMaXN0KV0sXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKVxuICAgICAgICAgIDogdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgQXNzaWduZWVBbnlVc2VyTGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZUdyb3VwcyddID0ge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcz8uaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXG4gICAgICBsaXN0OlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID09IDBcbiAgICAgICAgICA/IHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5PcmdHcm91cCxcbiAgICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHMsXG4gICAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW11cbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApLFxuICAgIH07XG4gICAgdGhpcy5hbGxHcm91cEFzc2lnbmVlID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgIXRoaXMuaXNFbnRydXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZnVuY3Rpb24gaXMgZm9yIGdldHRpbmcgdGhlIHVzZXJzIGRhdGEgYmFzZWQgb24gbWVtYmVyX2lkIG9mIHVzZXJzIG9mIHNlbGVjdGVkIFVzZXIgR3JvdXBcbiAgICogQHBhcmFtIHVzZXJsaXN0IGNvbnRhaW5zIHVzZXJzIGRhdGFcbiAgICogQHBhcmFtIHNlbGVjdGVkZ3JvdXBzIGNvbnRhaW5zIHNlbGVjdGVkIFVzZXIgR3JvdXAgZGF0YVxuICAgKiBAcmV0dXJucyB1c2VyIGRhdGEgb2YgU2VsZWN0ZWQgdXNlciBncm91cC5cbiAgICovXG4gIGdldEdyb3Vwc1VzZXJFbXBsb3llZXNJZCh1c2VyTGlzdDogYW55LCBzZWxlY3RlZEdyb3VwczogYW55KSB7XG4gICAgbGV0IGdyb3VwTWVtYmVySWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBVc2VyRW1wbG95ZWU6IGFueSA9IFtdO1xuICAgIHNlbGVjdGVkR3JvdXBzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE1lbWJlcklkcyA9IFsuLi5uZXcgU2V0KFsuLi5ncm91cE1lbWJlcklkcywgLi4uZ3JvdXA/Lm1lbWJlcl9pZHNdKV07XG4gICAgfSk7XG4gICAgdXNlckxpc3Q/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICBpZiAoZ3JvdXBNZW1iZXJJZHM/LmluY2x1ZGVzKGVsZT8ubXlfbWVtYmVyX2lkKSkge1xuICAgICAgICBncm91cFVzZXJFbXBsb3llZS5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwVXNlckVtcGxveWVlO1xuICB9XG5cbiAgc2V0UmV2aWV3ZXJQYXlsb2FkKFxuICAgIGlkczogYW55W10sXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGFjY2VwdGVkRGF0YT86IEFycmF5PGFueT4sXG4gICAgcmV2aWV3ZXJUeXBlPzogc3RyaW5nXG4gICkge1xuICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgaWRPYmpBcnJheSA9IHRoaXMucmV0dXJuSWRzKGlkcywgJ3VpZCcpO1xuICAgICAgcmV0dXJuIHRoaXMuc2V0TGlzdCh0aGlzLmFsbFVzZXJzTGlzdCwgaWRPYmpBcnJheSwgJ3VpZCcpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpc3QnKSB7XG4gICAgICBjb25zdCBwYXlMb2FkOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGlkc0xpc3QgPSB0aGlzLnJldHVybklkcyhpZHMsICd1aWQnKTtcbiAgICAgIGlkc0xpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICBpZiAoKGFjY2VwdGVkRGF0YSA/PyBbXSk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpbmRleCA9XG4gICAgICAgICAgICBhY2NlcHRlZERhdGE/LmZpbmRJbmRleCgoZWxlKSA9PiBlbGUubWVtYmVyX2lkID09PSBlbGVtZW50KSA/PyAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBheUxvYWQucHVzaCh7IG1lbWJlcl9pZDogZWxlbWVudCB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBheUxvYWQ7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XG4gICAgY29uc3QgZWRpdExvYWRlciA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xuICAgICAgICA/IHRoaXMucmNMaXN0TG9hZGVkICYmXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCAmJlxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkICYmIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCAmJiBlZGl0TG9hZGVyKSB7XG4gICAgICBpZiAodGhpcy5mcmFtZXdvcmtEZXRhaWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYXNzaWduRnJvbUZyYW1ld29yayh0aGlzLmZyYW1ld29ya0RldGFpbHNbMF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5nZXRFZGl0UmVzcG9uc2liaWxpdHlEZXRhaWxzKHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbSkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0ucHVzaCh0aGlzLnNlbGVjdGVkUHJvZ3JhbSk7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMucHVzaChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtLmNhdGVnb3J5X2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQ/LnRvU3RyaW5nKCk7XG4gICAgICAgICAgaWYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXG4gICAgICAgICAgICAgICAgPyAnQU5ZX09ORSdcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5kZWZhdWx0X3Jldmlld2Vyc190eXBlID09ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID0gdGhpc1xuICAgICAgICAgICAgICAuc2VsZWN0ZWRQcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZ1xuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkUHJvZ3JhbS5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3MuZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSBKU09OLnBhcnNlKHRhZyk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUFJPR1JBTSA9IHRydWU7XG4gICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgJiZcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnRk9STUFURV9FVklERU5DRScpO1xuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSh0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uX2lkKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3dob20nKSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdCxcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aG8nKSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc0VudHJ1c3QgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zLmVtcGxveWVlX2lkXSxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVHcm91cEFzc2lnbmVlRGF0YShzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdpdGVtX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID4gMCk7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyddWydjYXRlZ29yeV9pZCddID0gMDtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB0YWcgPVxuICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJycgJiZcbiAgICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJ251bGwnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT0gJ1tdJ1xuICAgICAgICAgICAgICA/IEpTT04ucGFyc2UoZWxlbWVudC5jdXN0b21fdGFncylcbiAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBpZiAodGFnPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcm9ncmFtJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbSA9IHNlbGVjdGVkSXRlbXM/LmxpbmtlZFByb2dyYW07XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxuICAgICAgICAgICEoXG4gICAgICAgICAgICAodGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCcpIHx8XG4gICAgICAgICAgICAhdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICApICYmXG4gICAgICAgICAgIXRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgPyBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZF0pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzKVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodGFnKSA6IHRhZztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudCk/Lmxlbmd0aFxuICAgICAgICAgICAgICA/IHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbS5faWQpXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgID8gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9ICcnO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zLnByb2dyYW1cbiAgICAgICAgICAgID8gW3NlbGVjdGVkSXRlbXMucHJvZ3JhbV1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZF0pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzKVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodGFnKSA6IHRhZztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5kZWZhdWx0X2Fzc2lnbmVlX3R5cGUgPT0gJ0FOWU9ORSdcbiAgICAgICAgICAgICAgICA/ICdBTllfT05FJ1xuICAgICAgICAgICAgICAgIDogJ0FMTCc7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uX2lkICYmXG4gICAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShzZWxlY3RlZEl0ZW1zLnByb2dyYW0uX2lkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5zYXZlR3JvdXBSZXZpZXdlckRhdGEoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnJldmlld2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5zYXZlT3ZlcnNlZXJEYXRhKHNlbGVjdGVkSXRlbXMsICdvdmVyc2Vlckxpc3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeSc6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJOb3RpZnlMaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ2NhdGVnb3J5X2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdCxcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWRdLFxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cyA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb24gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnRJbnN0cnVjdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYWxjdWxhdGVkcmlzayc6XG4gICAgICAgIGNvbnN0IHJpc2tDbGFzcyA9IFsnbG93JywgJ2xvd19tZWRpdW0nLCAnbWVkaXVtX2hpZ2gnLCAnaGlnaCddO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3MgPSByaXNrQ2xhc3Nbc2VsZWN0ZWRJdGVtcz8ucmlza0NsYXNzXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza01hdHJpeCA9IHNlbGVjdGVkSXRlbXM/LnJpc2tNYXRyaXg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZm9ybWF0ZV9ldmlkZW5jZSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5pc0Zvcm1hdGVVcGxvYWRlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0RmlsZXMgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZpbGVzLm1hcCgoZmlsZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZmlsZVBhdGg6IGZpbGVzLmZpbGVwYXRoLFxuICAgICAgICAgICAgICBuYW1lOiBmaWxlcy5maWxlX25hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IGZpbGVzLnR5cGUsXG4gICAgICAgICAgICAgIGZpZDogZmlsZXM/LmZpZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pID8/IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ubGlua3MgPz8gW107XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmlzRXZpZGVuY2VSZXF1aXJlZCA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdGcmVxdWVuY3knOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5ID0ge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogc2VsZWN0ZWRJdGVtcy5jb21wbGV0ZURheXMsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogc2VsZWN0ZWRJdGVtcy5ub3RDb21wbGV0ZWQsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBwcm9ncmFtIGlzIHNlbGVjdGVkIGFuZCB0aGUgdXNlciBoYXMgZnVsbCBwZXJtaXNzaW9uLCByZWZyZXNoIHRoZSBsaXN0cyB3aGlsZSB0aGUgcHJvZ3JhbVxuICAgKiBpcyBzZWxlY3RlZC4gT3RoZXJ3aXNlLCByZWZyZXNoIGFsbCBsaXN0cy5cbiAgICogPC9jb2RlPlxuICAgKi9cbiAgY2FsbFJlZnJlc2hMaXN0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICApIHtcbiAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUodHlwZTogYW55LCBldmVudD86IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuZmluZEluZGV4KFxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYy5zcGxpY2UocmNJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJywgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYiB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdC5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwYXNzaWduZWVzJzpcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3Quc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0LnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwUmV2aWV3ZXInOlxuICAgICAgICBjb25zdCBncm91cFJldmlld2VySW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0LnNwbGljZShcbiAgICAgICAgICBncm91cFJldmlld2VySW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlckdyb3VwJzpcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cEluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0LnNwbGljZShcbiAgICAgICAgICBvdmVyc2Vlckdyb3VwSW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5TGlzdCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJOb3RpZnlJbmRleCxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXBOb3RpZnlJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LnNwbGljZShcbiAgICAgICAgICBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZpbmRJbmRleChcbiAgICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgICBjb25zdCB0YWcgPSBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKTtcbiAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4Q1QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5zcGxpY2UoaW5kZXhDVCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWcgPSBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpO1xuICAgICAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Byb2dyYW0nOlxuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdFByb2dyYW1PblJlbW92ZShldmVudCk7XG4gICAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gW107XG4gICAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcblxuICAgICAgICAvLyB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVxdWlyZXNfYXVkaXQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgICAgIHNhbXBsZTogMCxcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJyxcbiAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcbiAgICAgICAgY29uc3QgYXNzdXJhbmNlSW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2VMaXN0LmZpbmRJbmRleChcbiAgICAgICAgICAoYXNzdXJhbmNlOiBhbnkpID0+IGFzc3VyYW5jZS5jYXRlZ29yeV9pZCA9PSBhc3N1cmFuY2UuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdC5zcGxpY2UoYXNzdXJhbmNlSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cy5zcGxpY2UoZXZlbnQsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2Vzc21lbnQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiAnJyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5uZXdfY2hlY2twb2ludHMgPSB7fTtcbiAgICAgICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSAwO1xuICAgICAgICB0aGlzLmNoZWNrcG9pbnRDb3VudFVwZGF0ZWQuZW1pdCh0aGlzLmNoZWNrcG9pbnRDb3VudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLnJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ1VTVE9NX0ZJRUxEUyc6XG4gICAgICAgIHRoaXMucmVtb3ZlQ3VzdG9tRmllbGRzKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQ3VzdG9tRmllbGRzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbUZpZWxkcy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21GaWVsZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5jdXN0b21GaWVsZHMucHVzaChldmVudCk7XG4gIH1cblxuICBzYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgbGV0IHVzZXJPYmo6IGFueTtcbiAgICB1c2VyT2JqID0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8gc2VsZWN0ZWRJdGVtcyA6IHNlbGVjdGVkSXRlbXM/LnVzZXJzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgdXNlck9iaixcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5PcmdHcm91cCxcbiAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyxcbiAgICAgICdncm91cF9pZCdcbiAgICApO1xuICB9XG5cbiAgc2F2ZUdyb3VwUmV2aWV3ZXJEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIGxldCB1c2VyT2JqOiBhbnkgPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICB1c2VyT2JqLnB1c2goZWxlLmVtcGxveWVlX2lkKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMucmV2aWV3ZXJzTGlzdCxcbiAgICAgIHVzZXJPYmosXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2VycyA9IHtcbiAgICAgIGxpc3Q6IHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3c7XG4gIH1cblxuICBzYXZlT3ZlcnNlZXJEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdvdmVyc2Vlckxpc3QnOlxuICAgICAgICBsZXQgb3ZlcnNlZXJzZWxlY3RlZGxpc3QgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgIG92ZXJzZWVyc2VsZWN0ZWRsaXN0LFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzWydsaXN0J10gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5TGlzdCc6XG4gICAgICAgIGxldCBvdmVyc2VlcnNlbGVjdGVkTm90aWZ5bGlzdCA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMudXNlcnMsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgb3ZlcnNlZXJzZWxlY3RlZE5vdGlmeWxpc3QsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHNbJ25vdGlmeUxpc3QnXSA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzPy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGVudHJ1c3RGcmFtZXdvcmsoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgbmFtZTogZXZlbnQucmVwb3J0X25hbWUsXG4gICAgICBrZXlSZXNwb25zaWJpbGl0eTogZXZlbnQua2V5X2NvbXBsaWFuY2UgPyB0cnVlIDogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBuZXdTdGFydERhdGUgPVxuICAgICAgZXZlbnQuc3RhcnRfZGF0ZSB8fCBldmVudC5zdGFydF9kYXRlICE9IG51bGwgfHwgZXZlbnQuc3RhcnRfZGF0ZSAhPT0gJydcbiAgICAgICAgPyBuZXcgRGF0ZShldmVudC5zdGFydF9kYXRlICogMTAwMClcbiAgICAgICAgOiBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHB2dFRlbXBsYXRlID1cbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZSAmJiBldmVudC5mcmVxdWVuY3lfdGVtcGxhdGUgIT09ICcnXG4gICAgICAgID8gZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlXG4gICAgICAgIDogZXZlbnQuZnJlcXVlbmN5O1xuICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q6IGFueSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgIHB2dFRlbXBsYXRlLFxuICAgICAgbmV3U3RhcnREYXRlLmdldERhdGUoKSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgbmV3U3RhcnREYXRlLmdldEZ1bGxZZWFyKClcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybjtcbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgIGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzID0gZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlXG4gICAgICA/IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgOiAyO1xuICAgIGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgIDogMjtcbiAgICBldmVudC5saWZlY3ljbGVfZGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcbiAgICBldmVudC5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudCk7XG4gICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgIGV2ZW50LmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9XG4gICAgICBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0X29mX2RheV91dGMgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcbiAgICAgIC5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpXG4gICAgICAudG9GaXhlZCgpXG4gICAgICAudG9TdHJpbmcoKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vbl9jb21wbGV0aW9uX29mID0gW107XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZG9tX3V0YyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID1cbiAgICAgIGV2ZW50LnJlbWFya3MudHJpbSgpICE9ICcnID8gZXZlbnQucmVtYXJrcyA6ICcnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPVxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09IG51bGwgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICdudWxsJyAmJlxuICAgICAgICBldmVudC5jdXN0b21fdGFncyAhPT0gJydcbiAgICAgICAgPyBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKVxuICAgICAgICA6IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXG4gICAgICA/IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXG4gICAgICA6ICcnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5hbGxDYXRlZ29yaWVzLFxuICAgICAgW2V2ZW50LmNhdGVnb3J5X2lkXSxcbiAgICAgICdjYXRlZ29yeV9pZCdcbiAgICApOyAvL1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzID0gMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPSAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXG4gICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT09IGV2ZW50LmVudGl0eV9pZFxuICAgIClcbiAgICAgID8gW1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT09IGV2ZW50LmVudGl0eV9pZFxuICAgICAgICApLFxuICAgICAgXVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3MgPSB0aGlzLmlzUmlza0VuYWJsZSA/ICdsb3cnIDogJ2xvd19tZWRpdW0nO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByaXZhdGVfbGlicmFyeV9pZCA9IGV2ZW50LnJlcG9ydF9pZDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2xhc3NpZmljYXRpb24gPSB0aGlzLmlzUmlza0VuYWJsZSA/IDEgOiAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9XG4gICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJhbWV3b3JrU3RhcnREYXRlKGV2ZW50KTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZSA9IHtcbiAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGV2ZW50LnJlcG9ydF91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIGZvcm1hdEZpbGVzOiBldmVudC5yZXBvcnRfZm9ybWF0LFxuICAgICAgZm9ybWF0TGlua3M6XG4gICAgICAgICFldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgfHwgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rID09ICcnXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW2V2ZW50LnJlcG9ydF9mb3JtYXRfbGlua10sXG4gICAgICBmb3JtYXRSZXF1aXJlZDpcbiAgICAgICAgZXZlbnQucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgIChldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgJiYgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rICE9ICcnKVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzID0ge1xuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXG4gICAgICBzYW1wbGU6IDUsXG4gICAgICBwZXJjZW50YWdlOiAzMCxcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXG4gICAgICBmcmVxdWVuY3lfdGltZTogREVGQVVMVF8yNEhSLFxuICAgIH07XG5cbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcbiAgICBpZiAoXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJycgJiZcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzICE9PSAnNX4wfjB+MCdcbiAgICApIHtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9ICcnO1xuICAgIH1cblxuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgIGV2ZW50LnBsYWNlaG9sZGVyID0gdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XG4gICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xuICAgIH1cbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0FURUdPUlknKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0FURUdPUlkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZT8uZXZpZGVuY2VSZXF1aXJlZCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmZvcm1hdEFuZEV2aWRlbmNlPy5mb3JtYXRSZXF1aXJlZFxuICAgICkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChldmVudC5lbnRpdHlfaWQgPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgIC8vICBldmVudC5wbGFjZWhvbGRlclxuICB9XG5cbiAgYXNzaWduRnJvbUZyYW1ld29yayhmcmVxT2JqOiBhbnkpIHtcbiAgICBpZiAoZnJlcU9iai5kYXRhKSB7XG4gICAgICAvLyB0aGlzLnJlc2V0KCk7XG4gICAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q6IGFueSA9XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgICAgICBmcmVxT2JqLmRhdGEuZnJlcXVlbmN5LFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgbmV3U3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgbmV3U3RhcnREYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgKTtcblxuICAgICAgbGV0IGV2ZW50OiBhbnkgPSB7fTtcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybjtcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgICAgZXZlbnQucmVtaW5kZXJfYmVmb3JlX2RheXMgPSAyO1xuICAgICAgZXZlbnQuZmFpbGVkX2FmdGVyX2RheXMgPSAyO1xuICAgICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XG4gICAgICBldmVudC5zdGFydF9vZl9kYXlfdXRjID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICBldmVudC5vbl9jb21wbGV0aW9uX29mID0gW107XG4gICAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XG4gICAgICBldmVudC5wbGFjZWhvbGRlciA9IHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXI7XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XG5cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBmcmVxT2JqLmRhdGEubmFtZSA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGZyZXFPYmouZGF0YS5vYmplY3RpdmVzID8/ICcnO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybiA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0X29mX2RheV91dGM7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzO1xuICAgICAgdGhpcy5zZWxlY3RlZEZyYW1ld29ya1ZhbHVlcyA9IGZyZXFPYmouc2VsZWN0ZWRGcmFtZXdvcmtEYXRhID8/IHVuZGVmaW5lZDtcbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5kZXNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9IGZyZXFPYmo/LmRhdGE/LmRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKGZyZXFPYmo/LmRhdGE/Lm9iamVjdGl2ZXMpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gZnJlcU9iai5kYXRhLm9iamVjdGl2ZXMgPz8gJyc7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT0JKRUNUSVZFID0gdHJ1ZTtcbiAgICAgICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XG4gICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbnNba2V5XSkge1xuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdCB1c2VybGlzdCBmb3IgbGlzdGluZyB1c2Vyc1xuICAgKiBAcmV0dXJucyBhc3NpZ24gdXNlcidzIG15X21lbWJlcl9pZCAgdG8gbWVtYmVyX2lkIGRhdGFcbiAgICovXG4gIGFzc2lnblVzZXJNZW1iZXJJZChsaXN0OiBhbnkpIHtcbiAgICBjb25zdCB1c2VyT2JqID0gWy4uLmxpc3RdO1xuICAgIHVzZXJPYmo/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyPy5teV9tZW1iZXJfaWQ7XG4gICAgfSk7XG4gICAgbGlzdCA9IFsuLi51c2VyT2JqXTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhbGxVc2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlR3JvdXBJZHM6IGFueSA9IFtdO1xuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBSZXZpZXdlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwT3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xuXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy5hbGxVc2Vyc0xpc3QpO1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcblxuICAgIGNvbnN0IGFzc2lnbm9ycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XG5cbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFxuICAgICk7XG4gICAgY29uc3QgcmV2aWV3ZXJzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0KTtcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBPdmVyc2Vlckxpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBOb3RpZnlPdmVyc2VlcnMgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcbiAgICAgIDogW107XG4gICAgYXNzaWdub3JzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3Q/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godGhpcy5tZW1iZXJJZCk7XG4gICAgfVxuICAgIGFsbFVzZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFsbFVzZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25lZUdyb3VwTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG5cbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgcmV2aWV3ZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwUmV2aWV3ZXJzTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBPdmVyc2Vlckxpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwTm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBvdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyldO1xuICAgIGFsbFVzZXJzSWRzID0gWy4uLm5ldyBTZXQoYWxsVXNlcnNJZHMpXTtcbiAgICBhc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlSWRzKV07XG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWdub3JJZCldO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlSWRzKV07XG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcklkcyldO1xuXG4gICAgYXNzaWduZWVHcm91cElkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlR3JvdXBJZHMpXTtcbiAgICBncm91cFJldmlld2VySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBSZXZpZXdlcklkcyldO1xuICAgIGdyb3VwT3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChncm91cE92ZXJzZWVySWRzKV07XG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT4gIW92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzO1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IGFsbFVzZXJzO1xuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzO1xuXG4gICAgdGhpcy5kaXNhYmxlTGlzdChcbiAgICAgIGFsbFVzZXJzLFxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXG4gICAgICBhc3NpZ25lZUlkcyxcbiAgICAgIHJldmlld2Vyc0lkcyxcbiAgICAgIG92ZXJzZWVySWRzXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAhKFxuICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLnJldmlld2VyTWVtYmVySWRzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAhKFxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGVMaXN0KFxuICAgIGFsbFVzZXJzOiBhbnksXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSxcbiAgICBhc3NpZ25lZUlkczogYW55LFxuICAgIHJldmlld2Vyc0lkczogYW55LFxuICAgIG92ZXJzZWVySWRzOiBhbnlcbiAgKSB7XG4gICAgbGV0IGRpc2FibGVBc3NpZ25lZUxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZUFzc2lnbmVlSWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ215X21lbWJlcl9pZCdcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZU92ZXJzZWVyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgICAgbGV0IGRpc2FibGVPdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgZGlzYWJsZU92ZXJzZWVyc0xpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCkge1xuICAgIGxldCBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYXNzaWduZWVJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBSZXZpZXdlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwT3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xuICAgIGNvbnN0IGJlaGFsZlVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYmVoYWxmT2ZVc2Vyc0xpc3QpO1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QpO1xuICAgIGNvbnN0IGFzc2lnbmVlcyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0KTtcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBPdmVyc2Vlckxpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBOb3RpZnlPdmVyc2VlcnMgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcbiAgICAgIDogW107XG4gICAgYXNzaWdub3JzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgYXNzaWduZWVzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIGFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMuYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT0gMCkge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgIH1cblxuICAgIGFzc2lnbmVlR3JvdXBMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBhc3NpZ25lZUdyb3VwSWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgcmV2aWV3ZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwUmV2aWV3ZXJzTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cE92ZXJzZWVyTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBOb3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcbiAgICBhc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlSWRzKV07XG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xuICAgIGFzc2lnbmVlR3JvdXBJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUdyb3VwSWRzKV07XG4gICAgZ3JvdXBSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwUmV2aWV3ZXJJZHMpXTtcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWdub3JJZCldO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlSWRzKV07XG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcklkcyldO1xuXG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT4gIW92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3Q7XG4gICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ucmV2aWV3ZXJzTGlzdDtcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0O1xuXG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1Hcm91cExpc3QoXG4gICAgICAgICAgICBhbGxHcm91cHMsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzXG4gICAgICAgICAgKVxuICAgICAgICAgIDogYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PlxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdC5yZXZpZXdlcnNMaXN0XG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cFJldmlld2VyTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnJldmlld2VyX2dyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxuICAgICAgICAgICAgYWxsR3JvdXBzLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnJldmlld2VyX2dyb3VwX2lkc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Lm92ZXJzZWVyc0xpc3RcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0ID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcbiAgICAgICAgICAgIGFsbEdyb3VwcyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBhc3NpZ25lZUdyb3VwSWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlUHJvZ3JhbUxpc3QoXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyxcbiAgICAgIGFzc2lnbmVlSWRzLFxuICAgICAgcmV2aWV3ZXJzSWRzLFxuICAgICAgb3ZlcnNlZXJJZHNcbiAgICApO1xuICB9XG5cbiAgcHJvZ3JhbUdyb3VwTGlzdChhbGxHcm91cHM6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICAvLyBhcmdzWzBdXG4gICAgbGV0IGFzc2lnbmVlUHJvZ3JhbTogYW55ID0gW107XG4gICAgbGV0IGdyb3VwSWRzID0gYXJnc1swXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0gJiYgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkcykge1xuICAgICAgYXNzaWduZWVQcm9ncmFtID0gYWxsR3JvdXBzLmZpbHRlcigoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgZ3JvdXBJZHMuaW5jbHVkZXMoZ3JvdXAuZ3JvdXBfaWQpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXNzaWduZWVQcm9ncmFtO1xuICB9XG5cbiAgZGlzYWJsZVByb2dyYW1MaXN0KFxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnksXG4gICAgYXNzaWduZWVJZHM6IGFueSxcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcbiAgICBvdmVyc2VlcklkczogYW55XG4gICkge1xuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8uYXNzaWduZWVzTGlzdC5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZUFzc2lnbmVlSWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ215X21lbWJlcl9pZCdcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3QuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0LmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZm9ybSBpcyB2YWxpZCwgdGhlbiBpZiB0aGUgbW9kZSBpcyBFRElULCB0aGVuIHNldCB0aGUgb3JnYW5pemF0aW9uSWQgYW5kIG1lbWJlcklkIHRvIHRoZVxuICAgKiBhdXRoU2VydmljZSB2YWx1ZXMsIGFuZCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm0gYXNcbiAgICogYSBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIElmIHRoZSBtb2RlIGlzIG5vdCBFRElULCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm1cbiAgICogYXMgYSBwYXJhbWV0ZXIuXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIHN1Ym1pdFJlc3BvbnNpYmlsaXR5KCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCk7XG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJyAmJiAhdGhpcy5pc0R1cGxpY2F0ZSkge1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcbiAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XG4gICAgICB0aGlzLmVudHJ1c3RSZXNwb25zaWJpbGl0eSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSk7XG4gICAgICAvLyBlZGl0IGNvbmRpdGlvbnNcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcmVzcG9uc2liaWxpdHkgbmFtZSBpcyBlbXB0eSwgb3IgdGhlIGZyZXF1ZW5jeSBpcyBlbXB0eSwgb3IgdGhlIGFzc2lnbmVlcyBsaXN0IGlzIGVtcHR5LFxuICAgKiB0aGVuIHJldHVybiBmYWxzZS4gT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS5cbiAgICovXG4gIHZhbGlkYXRlUmVzcG9uc2liaWxpdHkoKSB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGUgJiZcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hvbSc7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLnRyaW0oKSA9PSAnJ1xuICAgICkge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGF0JztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QgfHxcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAoIXRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgKCghdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0IHx8XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hvJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09ICcnIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICcnIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICc1fjB+MH4wJ1xuICAgICkge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGVuJztcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLnRyaW0oKSA9PSAnJyB8fFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCcgfHxcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICgoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgfHxcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZW50cnVzdFJlc3BvbnNpYmlsaXR5KGVudHJ1c3RGb3JtOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZW50cnVzdExvYWRlciA9IHRydWU7XG4gICAgbGV0IHN0YXJ0RGF0ZSA9IG1vbWVudChwYXJzZUludChlbnRydXN0Rm9ybS5zdGFydERhdGUpICogMTAwMCkuZm9ybWF0KFxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXG4gICAgKTtcbiAgICBzdGFydERhdGUgPSBtb21lbnQoc3RhcnREYXRlLnNwbGl0KCcgJylbMF0gKyAnIDAwOjAwOjAwJykuZm9ybWF0KFxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXG4gICAgKTtcbiAgICBjb25zdCByY0RldGFpbHMgPVxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgIGlmIChyYykge1xuICAgICAgICAgICAgY29uc3QgcmNEZXRhaWxzQXJyID0ge1xuICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByYy5wYXJlbnRfcmNfaWRzLFxuICAgICAgICAgICAgICByY19pZDogcmMucmNpZCxcbiAgICAgICAgICAgICAgY2hpbGRfcmNfaWRzOiByYz8uaXRlbV9jaGlsZF9pZHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHJjRGV0YWlsc0FycjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIDogW107XG4gICAgY29uc3QgcmNEZXRhaWxzSWRBcnIgPVxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgIGlmIChyYykge1xuICAgICAgICAgICAgcmV0dXJuIHJjLnJjaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICA6IFtdO1xuXG4gICAgY29uc3QgbW9yZU9wdGlvbnMgPSB0aGlzLm1vcmVPcHRpb25zO1xuXG4gICAgY29uc3QgY2hlY2tDb250aW51b3VzRmFpbGVkVmFsdWUgPSAoZGV0YWlsczogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmcmVxdWVuY3lUeXBlID0gcGFyc2VJbnQoZGV0YWlscy5zcGxpdCgnficpWzBdKTtcbiAgICAgIGlmIChmcmVxdWVuY3lUeXBlID09PSAxIHx8IGZyZXF1ZW5jeVR5cGUgPT09IDIgfHwgZnJlcXVlbmN5VHlwZSA9PT0gMykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGxpbmtlZFByb2dyYW1JZHM6IGFueVtdID0gW107XG4gICAgbGV0IGxpbmtlZENhdGVnb3J5SWRzOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWQgIT09IGVsZT8uY2F0ZWdvcnlfaWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBwcm9ncmFtID0ge1xuICAgICAgICAgIHByb2dyYW1JZDogZWxlPy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICBwcm9ncmFtT2JqZWN0SWQ6IGVsZT8uX2lkLFxuICAgICAgICAgIHN1YlByb2dyYW1JZHM6IGVsZT8uY2hpbGRfaWQ/LmZpbHRlcigoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5pbmNsdWRlcyhlbCk7XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIGxpbmtlZFByb2dyYW1JZHM/LnB1c2gocHJvZ3JhbSk7XG4gICAgICAgIGxpbmtlZENhdGVnb3J5SWRzPy5wdXNoKGVsZT8uY2F0ZWdvcnlfaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdDogYW55ID0gW107XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeSkge1xuICAgICAgY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNhdGVnb3J5Py5maWx0ZXIoXG4gICAgICAgIChlbDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVsICE9PSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWQgJiZcbiAgICAgICAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2hpbGRfaWQ/LmluY2x1ZGVzKGVsKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gICAgdGhpcy5jb21iaW5lVXNlckFuZFVzZXJHcm91cE1lbWJlcnMoXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQUxMJyAmJlxuICAgICAgdGhpcy5yYXdSZXNwb25zaWJpbGl0eT8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGhcbiAgICApO1xuXG4gICAgY29uc3QgcmVtYXJrcyA9XG4gICAgICBlbnRydXN0Rm9ybS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xuICAgICAgICA/IGVudHJ1c3RGb3JtLmRlc2NyaXB0aW9uXG4gICAgICAgIDogJyc7XG4gICAgY29uc3Qgb2JqZWN0aXZlID1cbiAgICAgIGVudHJ1c3RGb3JtLm9iamVjdGl2ZS5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xuICAgICAgICA/IGVudHJ1c3RGb3JtLm9iamVjdGl2ZVxuICAgICAgICA6ICcnO1xuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBhcHBfYXNzb2NpYXRpb246IFtdLFxuICAgICAgYXNzaWduZWVfbWVtYmVyX2lkOiB0aGlzLnJldHVybklkcyhcbiAgICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0LFxuICAgICAgICAndWlkJ1xuICAgICAgKS50b1N0cmluZygpLFxuICAgICAgcHJvZ3JhbV9jYXRfaWRzOiBtb3JlT3B0aW9ucz8uUFJPR1JBTVxuICAgICAgICA/IGVudHJ1c3RGb3JtPy5wcm9ncmFtPy5sZW5ndGhcbiAgICAgICAgICA/IFtlbnRydXN0Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWRdXG4gICAgICAgICAgOiBbXVxuICAgICAgICA6IFtdLFxuICAgICAgbGlua2VkX3Byb2dyYW1faWRzOiBsaW5rZWRQcm9ncmFtSWRzLFxuICAgICAgbGlua2VkX2NhdGVnb3J5X2lkczogdGhpcy5nZXRVbmlxdWVJZHMoW1xuICAgICAgICAuLi5jYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQsXG4gICAgICAgIC4uLmxpbmtlZENhdGVnb3J5SWRzLFxuICAgICAgXSksXG4gICAgICAvLyBjYXRlZ29yeV9pZDogKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtX3NlbGVjdGVkX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnlfaWQgOiAnJyxcbiAgICAgIGNhdGVnb3J5X2lkOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbV9zZWxlY3RlZF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuZ2V0VW5pcXVlSWRzKFtcbiAgICAgICAgICAgIC4uLnRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeSxcbiAgICAgICAgICAgIC4uLmxpbmtlZENhdGVnb3J5SWRzLFxuICAgICAgICAgICAgLi4uW2VudHJ1c3RGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZF0sXG4gICAgICAgICAgXSk/LnJldmVyc2UoKS50b1N0cmluZygpXG4gICAgICAgICAgOiAnJyxcbiAgICAgIGNjX21lbWJlcl9lbWFpbDogbW9yZU9wdGlvbnM/Lk9WRVJTRUVSXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHModGhpcy5vdmVyc2VlclVzZXJMaXN0LCAndWlkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9kZXNjcmlwdGlvbjogbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXG4gICAgICAgID8gZW50cnVzdEZvcm0uY2hlY2twb2ludEluc3RydWN0aW9uXG4gICAgICAgIDogJycsXG4gICAgICBjaGVja3BvaW50X2RldGFpbHM6IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU1xuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzKVxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9mbGFnOiAwLFxuICAgICAgY29sbGFib3JhdG9yX21hcmtfZG9uZTogMCxcbiAgICAgIGNvbW1lbnQ6ICcnLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogY2hlY2tDb250aW51b3VzRmFpbGVkVmFsdWUoZW50cnVzdEZvcm0uZnJlcXVlbmN5KVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXNcbiAgICAgICAgOiAwLFxuICAgICAgY29zdF9vZl9jb21wbGlhbmNlOiAnJyxcbiAgICAgIGNyZWF0ZWRfYnk6IGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPCAxID8gMCA6IHRoaXMubWVtYmVySWQsXG4gICAgICBjcmVhdGlvbl93aW5kb3c6IDAsXG4gICAgICBjdXN0b21fdGFnczogZW50cnVzdEZvcm0uY3VzdG9tRmllbGRzLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogZWxlLmlkLFxuICAgICAgICAgIHZhbHVlOiBlbGUudmFsdWUsXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgZW50aXR5X3RyZWU6IG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICA/IHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PSAxXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogcmNEZXRhaWxzXG4gICAgICAgIDogW10sXG4gICAgICBlbnRydXN0X2Zyb21fcmlzazogdGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGVudHJ1c3RGb3JtLmZhaWxlZF9hZnRlcl9kYXlzLFxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiBlbnRydXN0Rm9ybS5mYWlsZWRfdGltZV91dGMsXG4gICAgICBmYWlsdXJlX2NjX21lbWJlcl9lbWFpbDogbW9yZU9wdGlvbnM/Lk9WRVJTRUVSXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHModGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0LCAndWlkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGVudHJ1c3RGb3JtLmZyZXF1ZW5jeSxcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBlbnRydXN0Rm9ybS50aW1lSW4yNEhyID8/IERFRkFVTFRfMjRIUixcbiAgICAgIGdyY19vYmplY3RfaWQ6IDAsXG4gICAgICBncmNfcmVsYXRpb25zaGlwOiAnJyxcbiAgICAgIGlmX3Rlc3RwbGFuX2ZhaWxlZDogMCxcbiAgICAgIGltcGFjdDogJycsXG4gICAgICBpc0dyb3VwQXNzaWduVG86XG4gICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQU5ZX09ORScgPyAxIDogMCxcbiAgICAgIGlzX2tleV9jb21wbGlhbmNlOiBlbnRydXN0Rm9ybS5yZXNwb25zaWJpbGl0eS5rZXlSZXNwb25zaWJpbGl0eSA/IDEgOiAwLFxuICAgICAgYWxsb3dFZGl0RHVlRGF0ZTogZW50cnVzdEZvcm0/LmFsbG93RWRpdER1ZURhdGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICBsaWJyYXJ5X3JlcG9ydF9pZDogMCxcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBlbnRydXN0Rm9ybS5saWZlY3ljbGVEZXRhaWxzID8/ICcwMDAwLTAwLTAwfn4wJyxcbiAgICAgIGxpbmtfZm9yX2RldGFpbHM6IG1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFXG4gICAgICAgID8gZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3NcbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmthZ2VzOiB7IGNvbXBsaWFuY2U6IFtdIH0sXG4gICAgICBtZW1iZXJfaWQ6XG4gICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAndWlkJyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAndWlkJylbMF1cbiAgICAgICAgICA6IHRoaXMubWVtYmVySWQsXG4gICAgICBvYmplY3RpdmU6IG1vcmVPcHRpb25zPy5PQkpFQ1RJVkUgPyBvYmplY3RpdmUgOiAnJyxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IGVudHJ1c3RGb3JtLnJlcG9ydElkID8gW2VudHJ1c3RGb3JtLnJlcG9ydElkXSA6IFtdLFxuICAgICAgb25fY29tcGxldGlvbl9vZl90eXBlOiAxLFxuICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLm9yZ2FuaXphdGlvbklkLFxuICAgICAgb3ZlcnJpZGVfd2Vla2x5OiAwLFxuICAgICAgcGFyZW50X2lkOiAwLFxuICAgICAgcGVuYWx0eTogJycsXG4gICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXG4gICAgICByZW1hcmtzOiByZW1hcmtzLFxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGVudHJ1c3RGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzLFxuICAgICAgcmVwb3J0X2Zvcm1hdDogbW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0VcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlc1xuICAgICAgICA6IFtdLFxuICAgICAgaXNGb3JtYXRVcGxvYWQ6XG4gICAgICAgIG1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFICYmXG4gICAgICAgICAgZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0UmVxdWlyZWRcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDAsXG4gICAgICByZXBvcnRfZm9ybWF0X2xpbms6ICcnLFxuICAgICAgcmVwb3J0X25hbWU6IGVudHJ1c3RGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUsXG4gICAgICByZXBvcnRfdXBsb2FkX2ZsYWc6IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWRcbiAgICAgICAgPyAxXG4gICAgICAgIDogMCxcbiAgICAgIHJldmlld19hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucz8uUkVWSUVXRVJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9PT0gJydcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE51bWJlcihlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cylcbiAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucz8uUkVWSUVXRVJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPT09ICcnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBOdW1iZXIoZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzKVxuICAgICAgICA6IDAsXG4gICAgICByZXZpZXdlcl9hcnI6IG1vcmVPcHRpb25zPy5SRVZJRVdFUlxuICAgICAgICA/IHtcbiAgICAgICAgICBsZXZlbDE6IHtcbiAgICAgICAgICAgIHJldmlld2VyczogdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXG4gICAgICAgICAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCxcbiAgICAgICAgICAgICAgJ2xpc3QnLFxuICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuYWNjZXB0ZWREYXRhLFxuICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XG4gICAgICAgICAgICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA6ICdBTllPTkUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZTogZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgICAgICAgICA/ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICA6ICdBTllPTkUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICAgOiB7fSxcbiAgICAgIHVzZXJHcm91cElkczoge1xuICAgICAgICBhc3NpZ25lZUFsbEdyb3VwSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCwgJ3VnaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgYXNzaWduZWVBbnlvbmVHcm91cElkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsICd1Z2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGNjRW1haWxHcm91cElkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgICAndWdpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgICBmYWlsdXJlQ0NFbWFpbEdyb3VwSWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdCxcbiAgICAgICAgICAgICd1Z2lkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICAgIHJldmlld2VyR3JvdXBJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICAgICAndWdpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgfSxcbiAgICAgIGV4aXN0aW5nVXNlcklkczoge1xuICAgICAgICBhc3NpZ25lZUFsbElkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVzPy5saXN0LCAndWlkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGFzc2lnbmVlQW55b25lSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZXM/Lmxpc3QsICd1aWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgY2NFbWFpbE1lbWJlcklkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8ub3ZlcnNlZXJzPy5saXN0LCAndWlkJykgPz8gW10sXG4gICAgICAgIGZhaWx1cmVDQ0VtYWlsTWVtYmVySWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QsICd1aWQnKSA/P1xuICAgICAgICAgIFtdLFxuICAgICAgICByZXZpZXdlcklkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICAgICAndWlkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICB9LFxuICAgICAgcmV2aWV3ZXJfY2hlY2twb2ludHM6IFt7IGNoZWNrcG9pbnRzOiBbXSwgaW5zdHJ1Y3Rpb246ICcnIH1dLFxuICAgICAgcmV2aWV3ZXJfaWQ6IDAsXG4gICAgICByaXNrX2NsYXNzOiB0aGlzLmlzUmlza0VuYWJsZSA/IGVudHJ1c3RGb3JtLnJpc2tDbGFzcyA6ICdsb3dfbWVkaXVtJyxcbiAgICAgIHJpc2tfaWRzOiAnJyxcbiAgICAgIHJpc2tfbWF0cml4X2RhdGE6IG1vcmVPcHRpb25zPy5SSVNLX0NMQVNTSUZJQ0FUSU9OXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmlza01hdHJpeFxuICAgICAgICA6ICcwLDAsMCwwLDAsMCcsXG4gICAgICBzYW1wbGVfc2l6ZTogMCxcbiAgICAgIHN0YXJ0X2RhdGVfdXRjOiBzdGFydERhdGUsXG4gICAgICBzdGF0dXRvcnlfZGF5OiAwLFxuICAgICAgdGVzdF9yZXF1aXJlZF9mbGFnOiBtb3JlT3B0aW9ucz8uQVNTVVJBTkNFXG4gICAgICAgID8gZW50cnVzdEZvcm0uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMFxuICAgICAgICA6IDAsXG4gICAgICB0ZXN0cGxhbl9jYXRlZ29yeV9pZDogbW9yZU9wdGlvbnM/LkFTU1VSQU5DRVxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3QsICdjYXRlZ29yeV9pZCcpXG4gICAgICAgIDogW10sXG4gICAgICB0ZXN0cGxhbl9jYXRlZ29yeV9tYW5hZ2VyOiAnJyxcbiAgICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6XG4gICAgICAgIG1vcmVPcHRpb25zPy5SRVFVSVJFU19BVURJVCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMuY2F0ZWdvcnlfaWQsXG4gICAgICAgICAgICBzYW1wbGU6IHRoaXMuc2VsZWN0ZWRTYW1wbGUgPT09IDAgPyB0aGlzLnNhbXBsZVZhbHVlIDogMCxcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IHRoaXMuc2VsZWN0ZWRTYW1wbGUgPT09IDEgPyB0aGlzLnNhbXBsZVBlcmNlbnRhZ2UgOiAwLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm46IGAxfjB+JHt0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlfX4xYCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiBtb21lbnQodGhpcy5hdWRpdFRpbWUsICdISDptbSBhJykuZm9ybWF0KFxuICAgICAgICAgICAgICAnSEg6bW06c3MnXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgICAgICAgc2FtcGxlOiAwLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiBgYCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgYXNzZXNzbWVudDoge1xuICAgICAgICBjYXRlZ29yeV9pZDogbW9yZU9wdGlvbnM/LkFTU0VTU01FTlRcbiAgICAgICAgICA/IGVudHJ1c3RGb3JtPy5hc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICAgIDogJycsXG4gICAgICAgIGFzc2Vzc21lbnRfaWQ6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UICYmIHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFpZFxuICAgICAgICAgIDogZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQsXG4gICAgICB9LFxuICAgICAgYXNzZXNzbWVudF9jaGVja3BvaW50OiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXG4gICAgICAgID8gT2JqZWN0LmtleXMoZW50cnVzdEZvcm0/Lm5ld19jaGVja3BvaW50cyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHNcbiAgICAgICAgICA6IHt9XG4gICAgICAgIDoge30sXG4gICAgICBxdWVzdGlvbm5haXJlX3R5cGU6IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcbiAgICAgICAgPyBPYmplY3Qua2V5cyhlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzKT8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gJ2Fzc2Vzc21lbnRfY2hlY2twb2ludCdcbiAgICAgICAgICA6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UICYmIGVudHJ1c3RGb3JtPy5hc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICAgICAgPyAnYXNzZXNzbWVudCdcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzKSAhPSAnJyAmJlxuICAgICAgICAgICAgICBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNcbiAgICAgICAgICAgICAgPyAnY2hlY2twb2ludCdcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICA6ICcnLFxuXG4gICAgICBsaW5rZWRfR1JDX2lkczogbW9yZU9wdGlvbnM/LkdSQ19PQkpFQ1RTXG4gICAgICAgID8gZW50cnVzdEZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzLm1hcCgoZ3JjOiBhbnkpID0+IGdyYy5ncmNpZClcbiAgICAgICAgOiBbXSxcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5mcmVxdWVuY3lPYmplY3QsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNcbiAgICB9O1xuXG5cblxuICAgIGlmICh0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkKSB7XG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUnXSA9XG4gICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiYgbW9yZU9wdGlvbnM/LlJDXG4gICAgICAgICAgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZVxuICAgICAgICAgIDogMDtcbiAgICAgIHBheWxvYWRbJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyQXJyJ10gPVxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICAgID8gcmNEZXRhaWxzSWRBcnJcbiAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5UGF5bG9hZCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmJ1aWxkUmVzcG9uc2liaWxpdHlQYXlsb2FkKHBheWxvYWQpO1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQgPSBwYXlsb2FkO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScgfHwgdGhpcy5pc0R1cGxpY2F0ZSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2Uuc3VibWl0RW50cnVzdChyZXNwb25zaWJpbGl0eVBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG5cbiAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgJiYgcmVzLm1lc3NhZ2UudG9Mb3dlckNhc2UoKSA9PT0gJ2J1bGsgZW50cnVzdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBZb3UgaGF2ZSBlbnRydXN0ZWQgJHtyZXMuY2FsY3VsYXRlX25vX29mX3Jlc3BvbnNpYmlpdGllc30gcmVzcG9uc2liaWxpdGllcy4gVGhlc2Ugd291bGQgYmUgcmVmbGVjdGVkIHdpdGhpbiB5b3VyIGFjY291bnQgaW4gc29tZXRpbWUuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nICYmIHBheWxvYWQuY3JlYXRlZF9ieSA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPVxuICAgICAgICAgICAgICAnVGhpcyByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmNyZWF0ZWRfYnkgPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uc1sxXS5idXR0b25UZXh0ID0gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBZb3UganVzdCBjcmVhdGVkIGEgcmVzcG9uc2liaWxpdHkgb24gYmVoYWxmICR7ZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QuZmluZChcbiAgICAgICAgICAgICAgICAobWVtYmVyOiBhbnkpID0+IG1lbWJlci5tZW1iZXJfaWQgPT09IHBheWxvYWQubWVtYmVyX2lkXG4gICAgICAgICAgICAgICkubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICB9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvL3RoaXMucmVzZXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXb3JrZmxvd0NvbXBsaWFuY2VdIGVudHJ1c3RSZXNwb25zaWJpbGl0eSAtIEVycm9yIHJlc3BvbnNlOicsIHtcbiAgICAgICAgICAgIGVycm9yOiBlcnIsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycj8ubWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yU3RhdHVzOiBlcnI/LnN0YXR1cyxcbiAgICAgICAgICAgIGVycm9yQm9keTogZXJyPy5lcnJvcixcbiAgICAgICAgICAgIHBheWxvYWQ6IHJlc3BvbnNpYmlsaXR5UGF5bG9hZFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5jb21wbGlhbmNlQ29tbW9uU2VydmljZS5leHRyYWN0RXJyb3JNZXNzYWdlKGVycj8ubWVzc2FnZSkgfHwgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPyc7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICdlcnJvcidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzcG9uc2liaWxpdHlQYXlsb2FkKSB7XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5UGF5bG9hZFsnaWQnXSA9IHRoaXMucmVzcG9uc2liaWxpdHlJZFxuICAgICAgfVxuICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFRoZSByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBtb2RpZmllZC5gO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZUVudHJ1c3QocmVzcG9uc2liaWxpdHlQYXlsb2FkLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQsIHRydWUpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSA9IHJlcztcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVudHJ1c3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzRHVwbGljYXRlRW50cnVzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxuICAgICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1bmlxdWVJZFVzZXJHcm91cHMoXG4gICAgdG90YWxVc2VyTGlzdDogYW55LFxuICAgIHNlbGVjdGVkR3JvdXA6IGFueSxcbiAgICBzZWxlY3RlZFVzZXJzOiBhbnlcbiAgKSB7XG4gICAgbGV0IGdyb3VwVXNlckxpc3QgPSB0aGlzLmdldEdyb3Vwc1VzZXJFbXBsb3llZXNJZChcbiAgICAgIHRvdGFsVXNlckxpc3QsXG4gICAgICBzZWxlY3RlZEdyb3VwXG4gICAgKTtcbiAgICBsZXQgaWRzID0gbmV3IFNldChzZWxlY3RlZFVzZXJzLm1hcCgodXNlcjogYW55KSA9PiB1c2VyPy5teV9tZW1iZXJfaWQpKTtcbiAgICBsZXQgdXNlckxpc3QgPSBbXG4gICAgICAuLi5zZWxlY3RlZFVzZXJzLFxuICAgICAgLi4uZ3JvdXBVc2VyTGlzdC5maWx0ZXIoXG4gICAgICAgIChncm91cFVzZXI6IGFueSkgPT4gIWlkcy5oYXMoZ3JvdXBVc2VyPy5teV9tZW1iZXJfaWQpXG4gICAgICApLFxuICAgIF07XG4gICAgcmV0dXJuIHVzZXJMaXN0O1xuICB9XG5cbiAgY29tYmluZVVzZXJBbmRVc2VyR3JvdXBNZW1iZXJzKGlzR3JvdXA/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCA9IGlzR3JvdXBcbiAgICAgICAgPyBbeyBlbXBsb3llZV9pZDogdGhpcy5yYXdSZXNwb25zaWJpbGl0eT8uYXNzaWduZWVfbWVtYmVyX2lkIH1dXG4gICAgICAgIDogdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXG4gICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RcbiAgICAgICAgKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XG4gICAgICApO1xuICAgICAgdGhpcy5vdmVyc2VlclVzZXJMaXN0ID0gdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XG4gICAgICApO1xuICAgICAgdGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0ID0gdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2lnbmVlVXNlckxpc3QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0O1xuICAgICAgdGhpcy5yZXZpZXdlclVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdDtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q7XG4gICAgICB0aGlzLm92ZXJzZWVyVXNlck5vdGlmeUxpc3QgPVxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCByZXNldHMgdGhlIGZvcm0uXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtID0ge1xuICAgICAgYXNzaWdub3JzOiB7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXNzaWduZWVHcm91cHM6IHtcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTEwnLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBhc3NpZ25lZXM6IHtcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTEwnLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBhbGxvd0VkaXREdWVEYXRlOiBmYWxzZSxcbiAgICAgIGZyZXF1ZW5jeTogJycsXG4gICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICBvYmplY3RpdmU6ICcnLFxuICAgICAgcmM6IFtdLFxuICAgICAgY2F0ZWdvcnk6IFtdLFxuICAgICAgY2hlY2twb2ludEluc3RydWN0aW9uOiAnJyxcbiAgICAgIGN1c3RvbVRhZ3M6IFtdLFxuICAgICAgY2hlY2twb2ludHM6IFtdLFxuICAgICAgcmV2aWV3ZXJzOiB7XG4gICAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOiAyLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIGdyb3VwUmV2aWV3ZXJzOiB7XG4gICAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOiAyLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIG92ZXJzZWVyczoge1xuICAgICAgICBub3RpZnlMaXN0OiBbXSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgb3ZlcnNlZXJzR3JvdXBzOiB7XG4gICAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xuICAgICAgICBmb3JtYXRSZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGZvcm1hdEZpbGVzOiBbXSxcbiAgICAgICAgZm9ybWF0TGlua3M6IFtdLFxuICAgICAgICBldmlkZW5jZVJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICAgIHJpc2tDbGFzczogJ2xvdycsXG4gICAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxuICAgICAgcHJvZ3JhbTogW10sXG4gICAgICBwcm9ncmFtX3NlbGVjdGVkX2lkczogW10sXG4gICAgfTtcbiAgICB0aGlzLm1vcmVPcHRpb25zID0ge1xuICAgICAgT0JKRUNUSVZFOiBmYWxzZSxcbiAgICAgIFJDOiBmYWxzZSxcbiAgICAgIENBVEVHT1JZOiBmYWxzZSxcbiAgICAgIEZPUk1BVEVfRVZJREVOQ0U6IGZhbHNlLFxuICAgICAgQ0hFQ0tQT0lOVFM6IGZhbHNlLFxuICAgICAgUklTS19DTEFTU0lGSUNBVElPTjogZmFsc2UsXG4gICAgICBSRVZJRVdFUjogZmFsc2UsXG4gICAgICBPVkVSU0VFUjogZmFsc2UsXG4gICAgICBBU1NVUkFOQ0U6IGZhbHNlLFxuICAgICAgQVBQUzogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ0hvdyBvZnRlbiBkb2VzIHRoZSByZXNwb25zaWJpbGl0eSBvY2N1cj8nO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICB3aW5kb3c6IDAsXG4gICAgICBmYWlsZWQ6IDAsXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiB7fSxcbiAgICB9O1xuICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcbiAgICB0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlID0gMjtcbiAgICB0aGlzLmF1ZGl0VGltZSA9IERFRkFVTFRfVElNRTtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgICB0aGlzLmlzRW50cnVzdCA9IHRydWU7XG4gICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscyA9IG51bGw7XG4gICAgdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSA9IG51bGw7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHMgPSB7XG4gICAgfTtcbiAgICB0aGlzLnJlc2V0Rm9ybS5lbWl0KHRydWUpO1xuICB9XG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xuICAgICAgdGhpcy5jbG9zZVNtaWxleSgnZHMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnYWRkTW9yZSc6XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdmlld1Jlc3BvbnNpYmlsaXRpZXMoKTogdm9pZCB7XG4gICAgbGV0IHVybDogc3RyaW5nO1xuICAgIGNvbnN0IGlkID0gdGhpcy5yZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Py5pZDtcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJy9jb21wbGlhbmNlL3Jlc3BvbnNpYmlsaXRpZXMvJztcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB1cmxTdWJzdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHVybFN1YnN0cmluZztcbiAgICB9XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRoaXMubW9kZSAhPT0gJ0VESVQnKTtcblxuICAgIHRoaXMuY2xvc2VTbWlsZXkoJ2RzJyk7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgLy8gdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQodGhpcy5yZXNwb25zaWJpbGl0eURhdGEpO1xuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSwgY29uZmlybTogZmFsc2UgfSk7XG4gIH1cblxuICBnZXRPbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmcmVxdWVuY3lEYXRhID0gZXZlbnQ/LnBhdHRlcm4/LnNwbGl0KCd+Jyk7XG4gICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURhdGFbMF0pID09IDYpIHtcbiAgICAgIHJldHVybiBldmVudD8ub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBmb3IgZWRpdCByZXNwb25zaWJpbGl0eVxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgeyBzZWxlY3RlZERheSwgc2VsZWN0ZWRNb250aCB9ID0gdGhpcy5nZXRTZWxlY3RlZEF0dHJpYnV0ZXMoZXZlbnQpO1xuICAgIGxldCBkYXRhOiBhbnkgPSB7XG4gICAgICBwYXR0ZXJuOiBldmVudD8ucGF0dGVybixcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnN0YXJ0QmVmb3JlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5lbmRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogZXZlbnQ/LmZhaWxlZF90aW1lX3V0YyxcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscyxcbiAgICAgIHN0YXJ0RnJvbTogTnVtYmVyKGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjKSxcbiAgICAgIHRpbWVJbjI0SHI6IGV2ZW50Py50aW1lLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQ/LmF1dG9EZWFjdGl2YXRlLFxuICAgICAgc3RhcnREYXRlOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxuICAgICAgdGltZUluMTJocjogdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKFxuICAgICAgICBldmVudD8udGltZVxuICAgICAgKSxcblxuICAgICAgY2FzZTogZXZlbnQ/LnR5cGUsXG4gICAgICBkYXk6IGV2ZW50Py5kYXksXG4gICAgICBldmVyeTogZXZlbnQ/LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5LFxuICAgICAgc2VsZWN0ZWREYXk6IHNlbGVjdGVkRGF5LFxuICAgICAgc2VsZWN0ZWRNb250aDogc2VsZWN0ZWRNb250aCxcbiAgICAgIHNlbGVjdGVkVHlwZTogZXZlbnQ/Lm9uR29pbmc/LnNlbGVjdGVkVHlwZSxcbiAgICAgIHJhbmRvbUluc3RhbmNlczogZXZlbnQ/LnJhbmRvbT8ucmFuZG9tSW5zdGFuY2VzLFxuICAgICAgc2VsZWN0ZWRPbmdvaW5nVHlwZTogZXZlbnQ/Lm9uR29pbmc/LnNlbGVjdGVkT25nb2luZ1R5cGUsXG4gICAgICBvbkNvbXBsZXRpb246IGV2ZW50Py5vbkNvbXBsZXRlLFxuXG4gICAgfTtcblxuXG4gICAgaWYgKGV2ZW50Py5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHMub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkgPSBldmVudD8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkQXR0cmlidXRlcyhldmVudDogYW55KSB7XG4gICAgbGV0IHNlbGVjdGVkRGF5OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBzZWxlY3RlZE1vbnRoOiBudW1iZXJbXSA9IFtdO1xuICAgIGNvbnN0IHJlcGVhdE9uID0gZXZlbnQ/LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uLnNwbGl0KCcnKTtcbiAgICBpZiAocmVwZWF0T24ubGVuZ3RoID09PSA3KSB7XG4gICAgICByZXBlYXRPbi5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyKGVsZSkgPT09IDEpIHtcbiAgICAgICAgICBzZWxlY3RlZERheS5wdXNoKGluZGV4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgc2VsZWN0ZWREYXksIHNlbGVjdGVkTW9udGg6IFtdIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcGVhdE9uLmZvckVhY2goKGVsZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChlbGUgPT09ICcxJykge1xuICAgICAgICAgIHNlbGVjdGVkTW9udGgucHVzaChpbmRleCArIDEpOztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzZWxlY3RlZERheSwgc2VsZWN0ZWRNb250aCB9O1xuICAgIH1cblxuICB9XG5cbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gZXZlbnQ/LmRvbV91dGM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgZXZlbnQ/LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlcjtcblxuICAgIC8vIGxldCBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzID0gdGhpcy5nZXRPbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKGV2ZW50KTtcbiAgICAvLyBpZiAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyAhPSBudWxsKSB7XG4gICAgLy8gICB0aGlzLmZyZXF1ZW5jeURldGFpbHMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9XG4gICAgLy8gICAgIG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgLy8gfVxuICB9XG5cbiAgc2V0UGF5bG9hZChldmVudDogYW55KTogUmVzcG9uc2liaWxpdHkgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aGVuJykge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZyZXF1ZW5jeU9iamVjdCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zZXRGcmVxdWVuY3lPYmplY3QoZXZlbnQpO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9IGV2ZW50LnBhdHRlcm47XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPVxuICAgICAgZXZlbnQuY2FzZSA9PT0gJ2RhaWx5JyA/IDAgOiBldmVudC53aW5kb3c7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50LmZhaWxlZEFmdGVyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZhaWxlZF90aW1lX3V0YyA9IGV2ZW50LmZhaWxlZF90aW1lX3V0YztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saWZlY3ljbGVEZXRhaWxzID0gZXZlbnQubGlmZWN5Y2xlRGV0YWlscztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXBvcnRJZCA9IGV2ZW50LnJlcG9ydElkID8/IDA7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc3RhcnREYXRlID0gZXZlbnQuc3RhcnRGcm9tO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnRpbWVJbjI0SHIgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cztcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXG4gICAgfTtcblxuICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcbiAgICB0aGlzLmZyZXF1ZW5jeU9iamVjdCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zZXRGcmVxdWVuY3lPYmplY3QoZXZlbnQpO1xuICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcbiAgfVxuXG4gIGNoZWNrQmxhbmsoZGF0YTogc3RyaW5nKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCB0ZXh0ID0gZGF0YTtcbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcJm5ic3A7L2csICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHthbnl9IHJlcyAtIGFueSA9IHtcbiAgICovXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeVRpbWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoZnJlcXVlbmN5Py50aW1lKTtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHMgPSBmcmVxdWVuY3kucGF0dGVybi5zcGxpdCgnficpO1xuICAgICAgc3dpdGNoIChmcmVxdWVuY3k/LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZGFpbHknOlxuICAgICAgICAgIHRoaXMuZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgICAgICB0aGlzLmdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb250aGx5JzpcbiAgICAgICAgICB0aGlzLmdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncXVhcnRlcmx5JzpcbiAgICAgICAgICB0aGlzLmdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdiaWFubnVhbGx5JzpcbiAgICAgICAgICB0aGlzLmdldEJpYW5udWFsUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3llYXJseSc6XG4gICAgICAgICAgdGhpcy5nZXRZZWFybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb25lX3RpbWUnOlxuICAgICAgICAgIHRoaXMuZ2V0T25lVGltZVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICAgIHRoaXMuZ2V0UmFuZG9tUGxhY2Vob2xkZXIoZnJlcXVlbmN5LCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb25fY29tcGxldGUnOlxuICAgICAgICAgIHRoaXMuZ2V0T25Db21wbGV0ZVBsYWNlaG9sZGVyKGZyZXF1ZW5jeSwgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAgICdZb3UgaGF2ZSBzZWxlY3RlZCBhbiBvbmdvaW5nIGZyZXF1ZW5jeS4nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb25fY29tcGxldGlvbl9vZic6XG4gICAgICAgIC8vIHRoaXMuZ2V0T25Db21wbGV0aW9uT2YoXG4gICAgICAgIC8vICAgZnJlcXVlbmN5LFxuICAgICAgICAvLyAgIHJlcz8ub25fY29tcGxldGlvbl9vZlswXSxcbiAgICAgICAgLy8gICByZXMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xuICAgICAgICAvLyApO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogSXQgZ2V0cyB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHJlcG9ydCBpZCwgdGhlbiBpdCBzZXRzIHRoZSBmcmVxdWVuY3kgcGxhY2Vob2xkZXIgdG8gdGhlIGZyZXF1ZW5jeVxuICAgKiBkZXRhaWxzIGFuZCB0aGVuIGl0IGdldHMgdGhlIG9uIGNvbXBsZXRpb24gb2YgcmVzcG9uc2liaWxpdHkgYW5kIHNldHMgdGhlIGZyZXF1ZW5jeSBwbGFjZWhvbGRlciB0b1xuICAgKiB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHRoZSByZXBvcnQgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMF0gPSZndDsgXCIxXCJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlcG9ydElkIC0gbnVtYmVyXG4gICAqL1xuICBnZXRPbkNvbXBsZXRpb25PZihcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiBhbnksXG4gICAgcmVwb3J0SWQ6IG51bWJlcixcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICcgJyArXG4gICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnO1xuICAgIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKSB7XG4gICAgICBpZiAocmVwb3J0SWQgPT09IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMuUmVwb3J0SWQpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArXG4gICAgICAgICAgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcbiAgICAgICAgICAgID8gb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscy5yZXBvcnRfbmFtZVxuICAgICAgICAgICAgOiAnJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIDEsIHRoZW4gc2V0IHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWUsXG4gICAqIG90aGVyd2lzZSBpZiBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIGdyZWF0ZXIgdGhhbiAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0V2ZXJ5ICcgK1xuICAgKiBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArICcgZGF5cyBieSAnICsgZnJlcXVlbmN5VGltZS5cIlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswLCAwLCAwLCAxXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTI6MDAgQU1cIlxuICAgKi9cbiAgZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIGZyZXF1ZW5jeURldGFpbHMgPSBmcmVxdWVuY3lEZXRhaWxzLm1hcChOdW1iZXIpXG4gICAgaWYgKGZyZXF1ZW5jeURldGFpbHM/LmRheSA9PT0gMSkge1xuICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdEYWlseSBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICdFdmVyeSAnICtcbiAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArIChmcmVxdWVuY3lEZXRhaWxzWzNdID4gMSA/ICcgZGF5cycgOiAnIGRheScpICtcbiAgICAgICAgJyBieSAnICtcbiAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgd29yZHMuXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycywgbGlrZSB0aGlzOlxuICAgKlxuICAgKiBnZXRXZWVrbHlQbGFjZWhvbGRlcihbXCIxXCIsXCIyLDMsNCw1LDYsN1wiLFwiMVwiLFwiMVwiXSwgXCIxMDowMCBBTVwiKVxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgd29yZHMsIGxpa2UgdGhpczpcbiAgICpcbiAgICogXCJFdmVyeSBNb25kYXksVHVlc2RheSxXZWRuZXNkYXksVGh1cnNkYXksRnJpZGF5LFNhdHVyZGF5IGJ5IDEwOjAwIEFNXCI8L2NvZGU+XG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjEsMiwzLDQsNVwiLCBcIlwiLCBcIjFcIiwgXCJcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3lEZXRhaWxzWzFdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmRheU5hbWVbcGFyc2VJbnQoZWxlKSAtIDFdO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMSkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnRXZlcnkgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPT09IDIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5IGFsdGVybmF0ZSAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnRXZlcnkgM3JkICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnRXZlcnkgJyArXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICd0aCAnICtcbiAgICAgICAgICBzZWxlY3RlZERheS5qb2luKCkgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMsIGNvbnZlcnRzIHRoZW0gdG8gbW9udGggbmFtZXMsIGFuZCB0aGVuIGFkZHMgdGhlbSB0byBhXG4gICAqIHNlbnRlbmNlLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgMSwgMiwgMywgMjEsIDIyLCAyMywgb3IgZ3JlYXRlciB0aGFuIDMsIHRoZW4gc2V0IHRoZVxuICAgKiBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byBhIHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGFuZCB0aGUgZnJlcXVlbmN5RGV0YWlsc1syXVxuICAgKiBhbmQgdGhlIGZyZXF1ZW5jeVRpbWUuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiM1wiLCBcIjFcIiwgXCIxLDIsM1wiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0UXVhcnRlcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBxdWFydGVybHkgPSBbXG4gICAgICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXG4gICAgICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcbiAgICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXG4gICAgICBdO1xuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBtb250aCBuYW1lcy5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xuICAgICAgfSk7XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBsZXNzIHRoYW4gMiwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcbiAgICogM3JkLCBvciBudGggb2YgZXZlcnkgbW9udGggYnkgZnJlcXVlbmN5VGltZS5cbiAgICpcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgZ3JlYXRlciB0aGFuIDEsIHRoZW4gdGhlIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIGlzIHNldCB0byB0aGUgMXN0LCAybmQsXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoLCBJbnRlcnZhbDogZXZlcnkgeWVhclNlcXVlbmNlIHllYXJzIGJ5IGZyZXF1ZW5jeVRpbWUuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiWWVhcmx5XCIsIFwiMVwiLCBcIjFcIiwgXCIxXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRZZWFybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHllYXJTZXF1ZW5jZSA9XG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMCA/IHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pIDogMTtcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA8IDIpIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMSB8fFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDEpIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcxc3QgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcybmQgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICczcmQgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAndGggb2YgICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBwbGFjZWhvbGRlciBzdHJpbmcgZm9yIG9uZS10aW1lIGZyZXF1ZW5jeSBldmVudHMuXG4gICAqIFxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIEFycmF5IGNvbnRhaW5pbmcgZnJlcXVlbmN5IGRldGFpbHMgd2hlcmU6XG4gICAqICAgLSBmcmVxdWVuY3lEZXRhaWxzWzNdOiBEYXkgb2YgdGhlIG1vbnRoXG4gICAqICAgLSBmcmVxdWVuY3lEZXRhaWxzWzJdOiBNb250aCBudW1iZXIgKDEtMTIpXG4gICAqICAgLSBmcmVxdWVuY3lEZXRhaWxzWzFdOiBZZWFyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gVGltZSBzdHJpbmcgaW4gZm9ybWF0ICdISDptbScgKGUuZy4gJzA5OjAwJylcbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIEZvciBKYW51YXJ5IDE1LCAyMDI0IGF0IDA5OjAwIEFNXG4gICAqIGdldE9uZVRpbWVQbGFjZWhvbGRlcihbbnVsbCwgMjAyNCwgMSwgMTVdLCAnMDk6MDAgYW0nKVxuICAgKiAvLyBSZXR1cm5zOiBcIk9uZSBUaW1lIDE1IEphbnVhcnkgMjAyNCBieSAwOTowMCBBTVwiXG4gICAqL1xuICBnZXRPbmVUaW1lUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICBjb25zdCBtb250aE5hbWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZ2V0TW9udGhOYW1lKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pKTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ09uZSBUaW1lICcgKyBmcmVxdWVuY3lEZXRhaWxzWzNdICsgJyAnICsgbW9udGhOYW1lICsgJyAnICsgZnJlcXVlbmN5RGV0YWlsc1sxXSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWUudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIGZyZXF1ZW5jeURldGFpbHMgYXJyYXkgYW5kIGEgZnJlcXVlbmN5VGltZSBhcnJheSBhbmQgcmV0dXJucyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbNCwxLDEsMV1cbiAgICovXG4gIGdldFJhbmRvbVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAgY29uc3QgcXVhcnRlcmx5ID0gW1xuICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcbiAgICAgICcgTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxuICAgIF07XG4gICAgY29uc3QgcGF0dGVybiA9IGZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4/LnNwbGl0KCd+Jyk7XG4gICAge1xuICAgICAgc3dpdGNoIChwYXJzZUludChwYXR0ZXJuWzFdKSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnRXZlcnkgd2VlayBmb3IgJyArIHBhdHRlcm5bM10gKyAnIHJhbmRvbSBpbnN0YW5jZXMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnIEV2ZXJ5ICcgK1xuICAgICAgICAgICAgcGF0dGVyblsyXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYWxpZ25cbiAgICAgICAgICAgIH0pICtcbiAgICAgICAgICAgICcgZm9yICcgK1xuICAgICAgICAgICAgcGF0dGVyblszXSArXG4gICAgICAgICAgICAnIHJhbmRvbSBpbnN0YW5jZXMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnRXZlcnkgJyArXG4gICAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQocGF0dGVyblsyXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAgICcgZm9yICcgK1xuICAgICAgICAgICAgcGF0dGVyblszXSArXG4gICAgICAgICAgICAnIHJhbmRvbSBpbnN0YW5jZXMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAnRXZlcnkgeWVhciBmb3IgJyArIHBhdHRlcm5bM10gKyAnIHJhbmRvbSBpbnN0YW5jZXMnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE9uQ29tcGxldGVQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIGNvbnN0IGRheXMgPSBmcmVxdWVuY3lEZXRhaWxzLm9uQ29tcGxldGUuZHVlQWZ0ZXIgPiAxID8gJ2RheXMnIDogJ2RheSc7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGZyZXF1ZW5jeURldGFpbHMub25Db21wbGV0ZS5kdWVBZnRlciArICcgJyArIGRheXMgKyAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArIHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzPy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eT8udGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogXCJXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgZWRpdCBidXR0b24sIHRoZSBlZGl0IGJ1dHRvbiBpcyBoaWRkZW4gYW5kIHRoZSBpbnB1dCBmaWVsZCBpcyBzaG93bi5cbiAgICogV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGlucHV0IGZpZWxkLCB0aGUgaW5wdXQgZmllbGQgaXMgaGlkZGVuIGFuZCB0aGUgZWRpdCBidXR0b24gaXMgc2hvd24uXCJcbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gYW55IC0gdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgb25FZGl0V2hhdChldmVudDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyB0aGlzIHdpbGwgbWFrZSB0aGUgZXhlY3V0aW9uIGFmdGVyIHRoZSBhYm92ZSBib29sZWFuIGhhcyBjaGFuZ2VkXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSBmYWxzZTtcbiAgICAgIHRoaXMud2hhdElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHBhcmFtZXRlciBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICAgKiBAcGFyYW0ge2FueX0gW3Jlc10gLSBpcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJXG4gICAqL1xuICBnZXRFZGl0TW9yZU9wdGlvbnMocmVzPzogYW55KSB7XG4gICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgIT09ICcnKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnT0JKRUNUSVZFJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XG4gICAgfVxuICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSSVNLX0NMQVNTSUZJQ0FUSU9OJyk7XG4gICAgdGhpcy5tb3JlT3B0aW9ucy5SSVNLX0NMQVNTSUZJQ0FUSU9OID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmFsbFByb2dhbVNlbGVjdGVkPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUFJPR1JBTScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5QUk9HUkFNID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0UmVxdWlyZWRcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSQycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdHUkNfT0JKRUNUUycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5HUkNfT0JKRUNUUyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVWSUVXRVIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQVNTVVJBTkNFJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkFTU1VSQU5DRSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkVRVUlSRVNfQVVESVQnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVRVUlSRVNfQVVESVQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXMucXVlc3Rpb25uYWlyZV90eXBlID09PSAnYXNzZXNzbWVudCcpIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdBU1NFU1NNRU5UJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkFTU0VTU01FTlQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXMucXVlc3Rpb25uYWlyZV90eXBlID09PSAnYXNzZXNzbWVudF9jaGVja3BvaW50Jykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NIRUNLUE9JTlRTX05FVycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vaWYgY3VzdG9tIGZpZWxkcyBhcmUgcHJlc2VudCBpbiB0aGUgcmVzcG9uc2liaWxpdHkgZm9ybSBhbmQgY3VzdG9tIGZpZWxkcyBhcmUgcHJlc2VudCBpbiB0aGUgY3VzdG9tIGZpZWxkcyBsaXN0XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbUZpZWxkcz8ubGVuZ3RoID4gMCAmJiB0aGlzLmN1c3RvbUZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NVU1RPTV9GSUVMRFMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gIH1cblxuICAvLyBGb3JtYXQgJiBFdmlkZW5jZVxuICB0ZXN0RnVuY3Rpb24oKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID09ICc8YnI+Jykge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgIGV2ZW50ID09PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBzZWxlY3RlZFNhbXBsZURhdGEoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSBldmVudDtcbiAgICB0aGlzLnRlbXBDaGVja1ZhbHVlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSXQgcG9wdWxhdGVzIGEgbGlzdCBvZiBhc3N1cmFuY2UgY2F0ZWdvcmllcyBiYXNlZCBvbiB0aGUgdGVzdCBwbGFuIGNhdGVnb3J5IHNlbGVjdGVkLlxuICAgKiBAcGFyYW0ge2FueX0gdGVzdFBsYW5DYXRlZ29yeSAtIGFueVxuICAgKi9cbiAgcG9wdWxhdGVBc3N1cmFuY2VMaXN0KHRlc3RQbGFuQ2F0ZWdvcnk6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZSA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3QsXG4gICAgICBbdGVzdFBsYW5DYXRlZ29yeT8uY2F0ZWdvcnlfaWRdLFxuICAgICAgJ2NhdGVnb3J5X2lkJ1xuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHRlc3RQbGFuQ2F0ZWdvcnk7XG4gICAgaWYgKHRlc3RQbGFuQ2F0ZWdvcnkuc2FtcGxlKSB7XG4gICAgICB0aGlzLmlzU2FtcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LnNhbXBsZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAwO1xuICAgIH1cblxuICAgIGlmICh0ZXN0UGxhbkNhdGVnb3J5LnBlcmNlbnRhZ2UpIHtcbiAgICAgIHRoaXMuaXNTYW1wbGUgPSB0cnVlO1xuICAgICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdGVzdFBsYW5DYXRlZ29yeS5wZXJjZW50YWdlO1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IDE7XG4gICAgfVxuICAgIHRoaXMudGVtcENoZWNrVmFsdWUgPSB0aGlzLnNlbGVjdGVkU2FtcGxlO1xuICAgIHRoaXMuc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuXG4gICAgICA/IHBhcnNlSW50KHRlc3RQbGFuQ2F0ZWdvcnkuZnJlcXVlbmN5X3BhdHRlcm4uc3BsaXQoJ34nKVsyXSlcbiAgICAgIDogMjtcbiAgICB0aGlzLmF1ZGl0VGltZSA9IG1vbWVudChcbiAgICAgIHRlc3RQbGFuQ2F0ZWdvcnk/LmZyZXF1ZW5jeV90aW1lLFxuICAgICAgJ0hIOm1tOnNzJ1xuICAgICkuZm9ybWF0KCdISDptbSBhJyk7XG4gIH1cblxuXG5cbiAgLy9vbiBzYW1wbGUgdG9nZ2xlIG9uL29mZlxuICBjaGVja0lucHV0VmFsdWUoZXZlbnQ6IGFueSkge1xuICAgIGxldCBrZXkgPSBldmVudC5jaGFyQ29kZTsgLy8gICAgICAgICBrZXkgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXG4gICAgcmV0dXJuIChrZXkgPiA0NyAmJiBrZXkgPCA1OCkgfHwga2V5ID09IDQ1O1xuICB9XG5cbiAgc3dpdGNoRW5hYmxlKGV2ZW50OiBib29sZWFuKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gdGhpcy50ZW1wQ2hlY2tWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86ICBzZWxlY3QgQXNzZXNzbWVudCBsaXN0IGFuZCBzZXQgaWQgdG8gcGF5bG9hZFxuICBvbkFzc2Vzc21lbnRTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNBc3Nlc3NtZW50ID0gZmFsc2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IGV2ZW50O1xuICB9XG4gIC8vIFRPRE86IFBvcHVsYXRlIGFzc2Vzc21lbnQgZGF0YSBmcm9tIGFscmVhZHkgc2VsZWN0ZWQgZGF0YVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGFzc2Vzc21lbnREZXRhaWxzIDogc2VsZWN0ZWQgYXNzZXNzbWVudCBkZXRhaWxzIGxpa2UgaXQncyBvYmplY3QgaWQgYW5kIGNhdGVnb3J5X2lkXG4gICAqL1xuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0QXNzZXNzbWVudERhdGEocmVzLCBhc3Nlc3NtZW50RGV0YWlscywgdHlwZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldEFzc2Vzc21lbnREYXRhKHJlczogYW55LCBhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgaWYgKHJlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR5cGUgPT09ICdhc3Nlc3NtZW50Jykge1xuICAgICAgICBjb25zdCBjYXRlZ29yeURldGFpbHMgPSByZXNbMF0uY2F0ZWdvcnkuZmluZChcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWQgPT0gYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5BU1NFU1NNRU5UID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYXNzZXNzbWVudERhdGEgPSB7XG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQsXG4gICAgICAgICAgYXNzZXNzbWVudERldGFpbHM6IHtcbiAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgYXNzZXNzbWVudF9uYW1lOiByZXNbMF0uYXNzZXNzbWVudF9uYW1lLFxuICAgICAgICAgICAgcXVlc3Rpb25zOiByZXNbMF0ucXVlc3Rpb25zQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYXRlZ29yeV9kZXRhaWxzOiBjYXRlZ29yeURldGFpbHMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2Vzc21lbnREYXRhKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvc3RBc3Nlc3NtZW50KHsgYXNzZXNzbWVudERldGFpbHM6IHJlc1swXS5xdWVzdGlvbnMgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25SZW1vdmVDaGVja3BvaW50cyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uUmVtb3ZpbmdDaGVja3BvaW50LmVtaXQodHlwZSk7XG4gIH1cblxuICByZW1vdmVDaGVja3BvaW50KCkge1xuICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFMgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCBBc3Nlc3NtZW50IGRldGFpbHNcbiAgICovXG4gIHBvc3RBc3Nlc3NtZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5uZXdfY2hlY2twb2ludHMgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscztcbiAgICB0aGlzLmNoZWNrcG9pbnRDb3VudCA9IGV2ZW50LmFzc2Vzc21lbnREZXRhaWxzLmVsZW1lbnRzPy5sZW5ndGg7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnRVcGRhdGVkLmVtaXQodGhpcy5jaGVja3BvaW50Q291bnQpO1xuICAgIHRoaXMuc2V0SXNVcGxvYWRlZChmYWxzZSk7XG4gIH1cblxuICBzZXRJc1VwbG9hZGVkKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIWV2ZW50KSB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIGNoZWNrRGVmYXVsdFByb2dyYW1PblJlbW92ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5hbGxQcm9nYW1TZWxlY3RlZCA9IHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQuZmlsdGVyKFxuICAgICAgKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbT8uaWQgIT09IGV2ZW50Py5pZFxuICAgICk7XG4gICAgdGhpcy5yZW1vdmVQcm9ncmFtKGV2ZW50KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGFuIGFycmF5IG9mIG51bWJlcnMgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdW5pcXVlIG51bWJlcnMuXG4gICAqIEBwYXJhbSB7YW55fSBhcnJheSAtIFRoZSBhcnJheSB5b3Ugd2FudCB0byBnZXQgdGhlIHVuaXF1ZSB2YWx1ZXMgZnJvbS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIGdldFVuaXF1ZUlkcyhhcnJheTogYW55KSB7XG4gICAgY29uc3QgdW5pcXVlID0gWy4uLm5ldyBTZXQoYXJyYXkpXTtcbiAgICByZXR1cm4gdW5pcXVlO1xuICB9XG5cbiAgb3BlbkFzc2lnbmVlQ2hhbmdlQ29uZmlybWF0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTllfT05FJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJyc7XG4gICAgICB0aGlzLmFzc2lnbmVlVHlwZUNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZSBpcyBFRElULCBlbWl0IHRoZSBldmVudC5cbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gYW55IC0gdGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIHJhZGlvIGJ1dHRvblxuICAgKi9cbiAgb25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgIGV2ZW50ID09PSAnc2VxdWVudGlhbCcgPyB0cnVlIDogZmFsc2U7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnICYmIHRoaXMuaGFzUmV2aWV3ZXIpIHtcbiAgICAgIHRoaXMub25SZXZpZXdlclR5cGVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0T3RoZXJHUkNPYmplY3RzKGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgZXZlbnQgPSB7XG4gICAgICAgIHJjX2lkczogJycsXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIsXG4gICAgICAgIHN0YXRlOiAxLFxuICAgICAgICBwYWdlOiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGV2ZW50Py5zZWFyY2hTdHJpbmcgJiYgdGhpcy5ncmNTZWFyY2hTdHJpbmcgIT09IGV2ZW50Py5zZWFyY2hTdHJpbmcpIHtcbiAgICAgIHRoaXMuZ3JjU2VhcmNoU3RyaW5nID0gZXZlbnQ/LnNlYXJjaFN0cmluZztcbiAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7XG4gICAgICAgIHJjX2lkczogJycsXG4gICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5ncmNTZWFyY2hTdHJpbmcsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5ncmNMb2FkZXIgPSB0cnVlO1xuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMuZ2V0QWxsUkNJZHModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMpO1xuICAgIGV2ZW50WydncmNUeXBlJ10gPSB0aGlzLnNlbGVjdGVkR1JDVGFiO1xuICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24gPSB0aGlzLmdyY1NlcnZpY2VcbiAgICAgIC5nZXRHUkNMaXN0KGV2ZW50KVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZ3JjTGlzdCA9IGRhdGE7XG4gICAgICAgIHRoaXMuZ3JjTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGlmIChldmVudD8ubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gZGF0YT8uZGF0YT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5pbmNsdWRlcyhpdGVtLmdyY2lkKSk7XG4gICAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gYGdldE90aGVyR1JDVGFiQ291bnRgIHJldHJpZXZlcyB0aGUgY291bnQgb2YgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZW1zIChhc3NldHMsXG4gICAqIHByb2Nlc3NlcywgdmVuZG9ycywgaW52ZW50b3J5KSBhbmQgdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyB0YWJzIHdpdGggdGhlIGNvdW50LlxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXG4gICAqIFwiZ2V0T3RoZXJHUkNUYWJDb3VudFwiIGZ1bmN0aW9uLiBJdCBpcyBvZiB0eXBlIFwiYW55XCIsIHdoaWNoIG1lYW5zIGl0IGNhbiBhY2NlcHQgYW55IGRhdGEgdHlwZS5cbiAgICovXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICBldmVudCA9IHt9O1xuICAgIH1cblxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMuZ2V0QWxsUkNJZHModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMpO1xuICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmdyY1NlcnZpY2UuZ2V0R1JDVGFic0NvdW50KGV2ZW50KS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgdGhpcy5vdGhlckdSQ0NhcmQuZm9yRWFjaCgodGFiOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgT0JKRUNUX0xBQkVMOiBhbnkgPSB7XG4gICAgICAgICAgQVNTRVQ6ICdBc3NldHMnLFxuICAgICAgICAgIFBST0NFU1M6ICdQcm9jZXNzZXMnLFxuICAgICAgICAgIFZFTkRPUjogJ1ZlbmRvcnMnLFxuICAgICAgICAgIElOVkVOVE9SWTogJ0ludmVudG9yeScsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IFRBQl9OQU1FID0gT0JKRUNUX0xBQkVMW3RhYj8udGl0bGU/LnRvVXBwZXJDYXNlKCldO1xuICAgICAgICBpZiAoVEFCX05BTUUpIHtcbiAgICAgICAgICB0YWIudGl0bGUgPSBUQUJfTkFNRTtcbiAgICAgICAgICB0YWIudmFsdWUgPSBpbmRleDtcbiAgICAgICAgICB0YWIuc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICAgICAgdGFiLmtleSA9IFRBQl9OQU1FPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3RhYi5rZXl9X3R5cGVfY291bnRgO1xuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdGFiLmNvdW50ID0gZGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFsbFJDSWRzKHJjSWRzOiBhbnkpIHtcbiAgICBpZiAoIXJjSWRzIHx8ICFBcnJheS5pc0FycmF5KHJjSWRzKSB8fCByY0lkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBhbGxJZHM6IG51bWJlcltdID0gcmNJZHMuZmxhdE1hcCgocmM6IGFueSkgPT4ge1xuICAgICAgaWYgKCFyYykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudElkcyA9IChyYy5pdGVtX3BhcmVudF9pZHMgJiYgQXJyYXkuaXNBcnJheShyYy5pdGVtX3BhcmVudF9pZHMpKVxuICAgICAgICA/IHJjLml0ZW1fcGFyZW50X2lkcy5tYXAoTnVtYmVyKVxuICAgICAgICA6IFtdO1xuICAgICAgY29uc3QgY2hpbGRJZHMgPSAocmMuaXRlbV9jaGlsZF9pZHMgJiYgQXJyYXkuaXNBcnJheShyYy5pdGVtX2NoaWxkX2lkcykpXG4gICAgICAgID8gcmMuaXRlbV9jaGlsZF9pZHMubWFwKE51bWJlcilcbiAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHJjSWQgPSBOdW1iZXIocmMucmNfaWQgfHwgcmMucmNpZCB8fCByYy5pdGVtX2lkIHx8IDApO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5wYXJlbnRJZHMsXG4gICAgICAgIC4uLmNoaWxkSWRzLFxuICAgICAgICByY0lkXG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XG4gICAgICAuZmlsdGVyKChyYzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJjSWRUb01hdGNoID0gcmM/LnJjX2lkIHx8IHJjPy5yY2lkIHx8IHJjPy5pdGVtX2lkO1xuICAgICAgICByZXR1cm4gYWxsSWRzLmluY2x1ZGVzKE51bWJlcihyY0lkVG9NYXRjaCkpO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkIHx8IGVsZS5yY2lkIHx8IGVsZS5pdGVtX2lkKVxuICAgICAgLmpvaW4oJywnKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpIHtcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbZ3JjVHlwZXNbaXRlbT8udHlwZV1dPy5wdXNoKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlcyA9IHtcbiAgICAgIGFzc2V0czogW10sXG4gICAgICBwcm9jZXNzZXM6IFtdLFxuICAgICAgdmVuZG9yczogW10sXG4gICAgICBpbnZlbnRvcnk6IFtdLFxuICAgIH07XG4gIH1cblxuICByZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGdyY1R5cGVzID0gR1JDX1RZUEVfQVJSQVk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHMuZmlsdGVyKFxuICAgICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXG4gICAgICApO1xuICAgIHRoaXMuZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50LCBncmNUeXBlc1tldmVudD8udHlwZV0pO1xuICAgIHRoaXMub3RoZXJHUkNDYXJkWzBdLnNlbGVjdGVkQ291bnRcbiAgICAgID8gKHRoaXMub3RoZXJHUkNDYXJkW2V2ZW50Py50eXBlXS5zZWxlY3RlZENvdW50IC09IDEpXG4gICAgICA6IDA7XG4gIH1cblxuICBmaWx0ZXJPdGhlckdSQ0RhdGEoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW3R5cGVdID0gdGhpcy5ncmNEYXRhV2l0aFR5cGVzW3R5cGVdPy5maWx0ZXIoXG4gICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXG4gICAgKTtcbiAgfVxuXG4gIC8vIE5ldyBQcm9ncmFtIExpc3RcbiAgcHJvZ3JhbXMhOiBMaXN0SXRlbVtdOyAvLyBBc3NpZ24gbW9jayBkYXRhXG4gIHNlbGVjdGVkUHJvZ3JhbXM6IGFueSA9IHt9O1xuXG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY3VzdG9tSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG5cblxuXG4gIG9uSXRlbXNTZWxlY3RlZENoYW5nZShpdGVtczogTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyA9IGl0ZW1zO1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSAoW10gYXMgYW55KS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyhpdGVtcykpO1xuICB9XG5cbiAgc2VsZWN0Q2F0ZWdvcnkoKTogdm9pZCB7XG5cbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNcbiAgICB0aGlzLmdlbmVyYXRlQ3VzdG9tVGFncygpXG5cbiAgfVxuXG4gIGdlbmVyYXRlQ3VzdG9tVGFncygpIHtcbiAgICAvLyBFbnN1cmUgY3VzdG9tVGFncyBleGlzdHNcbiAgICBpZiAoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzID0gW107XG4gICAgfVxuXG4gICAgLy8gUHJlcGFyZSBleGlzdGluZyB0YWdzIGZvciBxdWljayBsb29rdXBcbiAgICBjb25zdCBleGlzdGluZ1RhZ3NTZXQgPSBuZXcgU2V0KFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFnc1xuICAgICAgICAubWFwKCh0YWdJdGVtOiBhbnkpID0+IHRhZ0l0ZW0ubmFtZT8udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICk7XG5cbiAgICAvLyBDb2xsZWN0IG5ldyB0YWdzXG4gICAgY29uc3QgbmV3VGFnczogYW55W10gPSBbXTtcbiAgICBjb25zdCBwcm9ncmFtR3JvdXBzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbXMgfHwge30pO1xuXG4gICAgcHJvZ3JhbUdyb3Vwcy5mb3JFYWNoKChwcm9ncmFtR3JvdXA6IGFueSkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb2dyYW1Hcm91cCkpIHJldHVybjtcblxuICAgICAgcHJvZ3JhbUdyb3VwLmZvckVhY2goKHByb2dyYW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBwcm9ncmFtPy5jdXN0b21GaWVsZHMgfHwgW107XG4gICAgICAgIGN1c3RvbUZpZWxkcy5mb3JFYWNoKCh0YWc6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvd2VyVGFnID0gdGFnPy50b0xvd2VyQ2FzZT8uKCk7XG4gICAgICAgICAgaWYgKGxvd2VyVGFnICYmICFleGlzdGluZ1RhZ3NTZXQuaGFzKGxvd2VyVGFnKSkge1xuICAgICAgICAgICAgbmV3VGFncy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogdGFnLFxuICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgIHByb2dyYW1JZDogcHJvZ3JhbS5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXhpc3RpbmdUYWdzU2V0LmFkZChsb3dlclRhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gTWVyZ2UgbmV3IGFuZCBleGlzdGluZyB0YWdzXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IFtcbiAgICAgIC4uLm5ld1RhZ3MsXG4gICAgICAuLi50aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLFxuICAgIF07XG4gIH1cblxuXG4gIGdldCBjdXJyZW50VXNlckluZm8oKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCk/LnVzZXI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWVtYmVyX2VtYWlsOiBjdXJyZW50VXNlcj8uZW1haWwsXG4gICAgICBtZW1iZXJfaWQ6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgbWVtYmVyX25hbWU6IGN1cnJlbnRVc2VyLm5hbWUsXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IGN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbl9pZCxcbiAgICAgIHVpZDogY3VycmVudFVzZXIudWlkLFxuICAgICAgX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkLFxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVByb2dyYW0ocHJvZ3JhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyk7XG4gICAga2V5cy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNba2V5XS5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSBwcm9ncmFtPy5pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlEZXRhaWxzKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgY29uc3QgcmVzID0gdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHM7XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLmlzRHVwbGljYXRlID8gXCJDb3B5IG9mIFwiICsgcmVzPy50aXRsZSA6IHJlcz8udGl0bGU7XG4gICAgY29uc3QgY3VycmVudHNVZXJJbmZvID0gdGhpcy5jdXJyZW50VXNlckluZm87XG4gICAgY29uc3QgYXNzaWdub3JJZCA9IHRoaXMuaXNEdXBsaWNhdGUgPyBjdXJyZW50c1VlckluZm8udWlkIDogcmVzPy5hc3NpZ25vcklkO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlJZCA9IHJlcz8uaWQ7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSA9IHtcbiAgICAgIGFzc2lnbm9yczoge1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICBsaXN0OlxuICAgICAgICAgIHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbm9yc0xpc3QsIFthc3NpZ25vcklkXSwgJ3VpZCcpXG4gICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWdub3JzTGlzdCwgW2Fzc2lnbm9ySWRdLCAndWlkJylcbiAgICAgICAgICAgIDogW2N1cnJlbnRzVWVySW5mb10sXG4gICAgICB9LFxuICAgICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgICAgbmFtZTogdGl0bGUsXG4gICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXM/LmtleSxcbiAgICAgIH0sXG4gICAgICBhc3NpZ25lZXM6IHtcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcz8uYXNzaWduZWU/LnR5cGUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgbGlzdDogdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgcmVzPy5hc3NpZ25lZT8udXNlcklkLCAndWlkJyksXG4gICAgICB9LFxuICAgICAgYXNzaWduZWVHcm91cHM6IHtcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcz8uYXNzaWduZWU/LnR5cGUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgbGlzdDogdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3QsXG4gICAgICAgICAgcmVzPy5hc3NpZ25lZT8udXNlckdyb3VwSWQsXG4gICAgICAgICAgJ3VpZCcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgYWxsb3dFZGl0RHVlRGF0ZTogcmVzPy5hbGxvd0VkaXREdWVEYXRlLFxuICAgICAgZnJlcXVlbmN5OiByZXM/LmZyZXF1ZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uOiByZXM/Lm5vdGVzLFxuICAgICAgb2JqZWN0aXZlOiByZXM/Lm9iamVjdGl2ZSxcbiAgICAgIHJjOiAoKCkgPT4ge1xuICAgICAgICBjb25zdCByY0lkID0gcmVzLnJlc3BvbnNpYmlsaXR5Q2VudGVyPy5pZDtcbiAgICAgICAgLy8gQWZ0ZXIgbm9ybWFsaXNhdGlvbiBSQ3Mgc2hvdWxkIGFsd2F5cyBoYXZlIGl0ZW1faWQgcG9wdWxhdGVkXG4gICAgICAgIGNvbnN0IHJjUmVzdWx0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcbiAgICAgICAgICByY0lkID8gW3JjSWRdIDogW10sXG4gICAgICAgICAgJ2l0ZW1faWQnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByY1Jlc3VsdDtcbiAgICAgIH0pKCksXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6XG4gICAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8udHlwZSA9PT0gJ2FsbCcgPyAxIDogMCxcbiAgICAgIGNhdGVnb3J5OiByZXM/LnByb2dyYW1fY2F0X2lkcz8ubGVuZ3RoXG4gICAgICAgID8gcmVzPy5jYXRlZ29yeV9pZHNfYXJyYXkuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gIXJlcy5wcm9ncmFtX2NhdF9pZHM/LmluY2x1ZGVzKGVsZSlcbiAgICAgICAgKVxuICAgICAgICA6IHJlcz8uY2F0ZWdvcnlfaWRzX2FycmF5LFxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IHJlcz8uY2F0ZWdvcnlfaWQ/LnNwbGl0KCcsJykgPz8gW10sXG4gICAgICBjYXRlZ29yeV9pZDogcmVzPy5jYXRlZ29yeV9pZCA/PyAnJyxcblxuICAgICAgcHJvZ3JhbTogcmVzPy5wcm9ncmFtRGV0YWlscz8uY2F0ZWdvcnlfaWRcbiAgICAgICAgPyBbcmVzPy5wcm9ncmFtRGV0YWlsc11cbiAgICAgICAgOiBbXSxcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogcmVzPy5jaGVja3BvaW50X2Rlc2NyaXB0aW9uLFxuICAgICAgY3VzdG9tVGFnczogcmVzPy50YWdzLFxuICAgICAgY2hlY2twb2ludHM6IHJlcz8uY2hlY2twb2ludF9kZXRhaWxzXG4gICAgICAgID8gSlNPTi5wYXJzZShyZXM/LmNoZWNrcG9pbnRfZGV0YWlscylcbiAgICAgICAgOiAnJyxcbiAgICAgIHJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XG4gICAgICAgICAgcmVzPy5yZXZpZXdlcj8udHlwZSA9PSAnc2VxdWVudGlhbCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5jb21wbGV0ZUJ5ID8/IDIsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5lbmRBZnRlciA/PyAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB0aGlzLnNldExpc3QodGhpcy5yZXZpZXdlcnNMaXN0LCByZXM/LnJldmlld2VyPy51c2VySWQsICd1aWQnKSxcbiAgICAgIH0sXG5cbiAgICAgIGdyb3VwUmV2aWV3ZXJzOiB7XG4gICAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogcmVzPy5yZXZpZXdlcj8udHlwZSA9PSAnc2VxdWVudGlhbCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5jb21wbGV0ZUJ5ID8/IDIsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5lbmRBZnRlciA/PyAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5ncm91cFJldmlld2VyTGlzdCxcbiAgICAgICAgICByZXM/LnJldmlld2VyPy51c2VyR3JvdXBJZCxcbiAgICAgICAgICAndWlkJyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJzZWVyczoge1xuICAgICAgICBsaXN0OiByZXM/Lm92ZXJzZWVyXG4gICAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgICByZXM/Lm92ZXJzZWVyPy5zdWNjZXNzPy51c2VySWQsXG4gICAgICAgICAgICAndWlkJ1xuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgICAgICBub3RpZnlMaXN0OiByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWRcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICAgIHJlcz8ub3ZlcnNlZXI/LmZhaWw/LnVzZXJJZCxcbiAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgKVxuICAgICAgICAgIDogW10sXG4gICAgICB9LFxuICAgICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcbiAgICAgICAgZm9ybWF0UmVxdWlyZWQ6XG4gICAgICAgICAgcmVzPy5ldmlkZW5jZT8uZm9ybWF0Py5kYXRhPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgIGZvcm1hdEZpbGVzOiByZXMuZXZpZGVuY2U/LmZvcm1hdD8udHlwZSA9PT0gJ2ZpbGUnID8gcmVzPy5ldmlkZW5jZT8uZm9ybWF0Py5kYXRhIDogW10sXG4gICAgICAgIGZvcm1hdExpbmtzOiByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LnR5cGUgPT09ICdsaW5rJyA/IHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YSA6IFtdLFxuICAgICAgICBldmlkZW5jZVJlcXVpcmVkOiByZXM/LmV2aWRlbmNlPy5yZXF1aXJlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICAgIHJpc2tDbGFzczogcmVzPy5yaXNrQ2xhc3MsXG4gICAgICBzZWxlY3RlZEdSQ09iamVjdHM6IHJlcz8ubWV0YT8ubGlua2VkRW50aXRpZXM/LmdyY09iamVjdHMgPz8gW10sXG4gICAgICBjdXN0b21GaWVsZHM6IHRoaXMucG9wdWxhdGVDdXN0b21GaWVsZHMocmVzKSA/PyBbXSxcblxuICAgIH07XG4gICAgdGhpcy5jdXN0b21GaWVsZHMgPSB0aGlzLmN1c3RvbUZpZWxkcz8uZmlsdGVyKChlbGU6IGFueSkgPT4gIXJlcz8uY3VzdG9tRmllbGQ/LnNvbWUoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmlkID09PSBlbGUuaWQpKTtcbiAgICBjb25zdCBHUkNfT0JKRUNUUyA9IHJlcz8ubWV0YT8ubGlua2VkRW50aXRpZXM/LmdyY09iamVjdHMgPz8gW107XG4gICAgaWYgKEdSQ19PQkpFQ1RTPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnBvcHVsYXRlR1JDT2JqZWN0RGV0YWlscyhHUkNfT0JKRUNUUyk7XG4gICAgfVxuICAgIHRoaXMucG9wdWxhdGVGcmVxdWVuY3lEZXRhaWxzKHJlcy5mcmVxdWVuY3kpO1xuICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtRGV0YWlscyhyZXMpO1xuICAgIHRoaXMuZ2V0RWRpdE1vcmVPcHRpb25zKHJlcyk7XG4gICAgdGhpcy5wb3B1bGF0ZWZvcm1hdERldGFpbHMocmVzKTtcbiAgfVxuXG4gIC8vcG9wdWxhdGUgY3VzdG9tIGZpZWxkc1xuICBwb3B1bGF0ZUN1c3RvbUZpZWxkcyhyZXM6IGFueSkge1xuICAgIGlmICghdGhpcy5jdXN0b21GaWVsZHM/Lmxlbmd0aCB8fCAhcmVzPy5jdXN0b21GaWVsZD8ubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gcmVzPy5jdXN0b21GaWVsZD8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRmllbGQgPSB0aGlzLmN1c3RvbUZpZWxkcz8uZmluZCgoZmllbGQ6IGFueSkgPT4gZmllbGQuaWQgPT09IGVsZS5pZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBjdXN0b21GaWVsZD8ubmFtZSxcbiAgICAgICAgaWQ6IGVsZS5pZCxcbiAgICAgICAgdmFsdWU6IGVsZS52YWx1ZSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgLy9wb3B1bGF0ZSBmb3JtYXQgRGV0YWlsc1xuICBwb3B1bGF0ZWZvcm1hdERldGFpbHMocmVzOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtYXRPYmplY3Q6IGFueVtdID0gW11cbiAgICBjb25zdCBmb3JtYXRGaWxlcyA9IHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YSA/PyBbXTtcbiAgICBpZiAoZm9ybWF0RmlsZXM/Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGZvcm1hdEZpbGVzLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xuICAgICAgZm9ybWF0T2JqZWN0LnB1c2goe1xuICAgICAgICBmaWxlX3VybF9wYXRoOiBmaWxlPy5maWxlUGF0aCA/PyAnJyxcbiAgICAgICAgbmFtZTogZmlsZT8ubmFtZSA/PyAnJyxcbiAgICAgICAgb3JnX2ZpbGU6IGZpbGU/Lm5hbWUgPz8gJycsXG4gICAgICAgIGZpbGVfbmFtZTogZmlsZT8ubmFtZSA/PyAnJyxcbiAgICAgICAgdHlwZTogZmlsZT8udHlwZSA/PyAnJ1xuICAgICAgfSlcbiAgICB9KVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzID0gZm9ybWF0T2JqZWN0O1xuICB9XG5cbiAgLy9Qb3B1bGF0ZSBQcm9ncmFtIERldGFpbHNcbiAgcG9wdWxhdGVQcm9ncmFtRGV0YWlscyhyZXM6IGFueSkge1xuICAgIGNvbnN0IGRhdGEgPSByZXM/Lm1ldGE/LmxpbmtlZEVudGl0aWVzPy5wcm9ncmFtcyA/PyB7fTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzID0gZGF0YT8udGFncyA/PyBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXMgPSB0aGlzLm1hcExpbmtlZFByb2dyYW1zKGRhdGEpXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbkl0ZW1zU2VsZWN0ZWRDaGFuZ2UodGhpcy5zZWxlY3RlZFByb2dyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZUZyZXF1ZW5jeURldGFpbHMoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICBjb25zdCBnZXRQYXR0ZXJuID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBjb25zdCBsaWZlY3ljbGVEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmdldExpZmVjeWNsZVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBmcmVxdWVuY3kucGF0dGVybiA9IGdldFBhdHRlcm47XG4gICAgZnJlcXVlbmN5LmxpZmVjeWNsZV9kZXRhaWxzID0gbGlmZWN5Y2xlRGV0YWlscy5wYXR0ZXJuO1xuICAgIGZyZXF1ZW5jeS5zdGFydF9vZl9kYXlfdXRjID0gbGlmZWN5Y2xlRGV0YWlscy5zdGFydEZyb207XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzPy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHMub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkgPSB7XG4gICAgICAgIC4uLnRoaXMucmVzcG9uc2liaWxpdHlEZXRhaWxzPy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSxcbiAgICAgICAgLi4uZnJlcXVlbmN5Lm9uQ29tcGxldGVcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihmcmVxdWVuY3kpO1xuICAgIHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZnJlcXVlbmN5KTtcbiAgfVxuXG4gIG1hcExpbmtlZFByb2dyYW1zKHByb2dyYW1zOiB7XG4gICAgbGlua2VkOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXJbXT4sXG4gICAgZGF0YTogYW55W11cbiAgfSk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XG4gICAgLy8gQnVpbGQgYSBsb29rdXAgZm9yIGZhc3QgaWQg4oaSIG9iamVjdCBtYXBwaW5nXG4gICAgY29uc3QgcHJvZ3JhbUJ5SWQgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuICAgIGZvciAoY29uc3QgcHJvZ3JhbSBvZiBwcm9ncmFtcy5kYXRhKSB7XG4gICAgICBwcm9ncmFtQnlJZC5zZXQocHJvZ3JhbS5pZCwgcHJvZ3JhbSk7XG4gICAgfVxuXG4gICAgLy8gTWFwIGVhY2ggbGlua2VkIElEIGdyb3VwIHRvIGZ1bGwgcHJvZ3JhbSBvYmplY3RzXG4gICAgY29uc3QgbWFwcGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IG9yaWdpbklkIGluIHByb2dyYW1zLmxpbmtlZCkge1xuICAgICAgbWFwcGVkW29yaWdpbklkXSA9IHByb2dyYW1zLmxpbmtlZFtvcmlnaW5JZF1cbiAgICAgICAgLm1hcChpZCA9PiBwcm9ncmFtQnlJZC5nZXQoaWQpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pOyAvLyByZW1vdmUgdW5kZWZpbmVkIGlmIGlkIG5vdCBmb3VuZFxuICAgIH1cblxuICAgIHJldHVybiBtYXBwZWQ7XG4gIH1cblxuICBwb3B1bGF0ZUdSQ09iamVjdERldGFpbHMoR1JDX09CSkVDVFM6IGFueSkge1xuICAgIGlmIChHUkNfT0JKRUNUUz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ09iamVjdEJ5R1JDSWQoR1JDX09CSkVDVFMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uZ3JjaWQpLmpvaW4oJywnKSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gZGF0YVxuICAgICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJ3b3JrZmx3LWNvbXBsaWFuY2VcIiAqbmdJZj1cIiFzaG93U21pbGV5XCI+XG4gIDwhLS0gQmVoYWxmIC0tPlxuICA8ZGl2ICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXG4gICAgICBcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuaW1fY3JlYXRpbmdcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkkgYW0gY3JlYXRpbmcgdGhpcyByZXNwb25zaWJpbGl0eSBvbiBiZWhhbGYgb2Ygc29tZW9uZSBlbHNlXG4gICAgICAgICAgPGFwcC1jcy1zd2l0Y2ggW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGVcIiAobmdWYWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGUgPSAkZXZlbnQ7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbm9ycycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHJlc3BvbnNpYmlsaXR5P1wiIHJlYWRvbmx5XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5lbmFibGVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWdub3JzJywgYl91c2VyKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJiX3VzZXIubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBiX3VzZXIubWVtYmVyX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBiX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbm9ycycsYl91c2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2JfdXNlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiYmVoYWxmLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25vcnMnLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI2JlaGFsZiBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0IHwgc2xpY2UgOiAyO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWdub3JzJywgYl91c2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBiX3VzZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxwICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aG9tJ1wiIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgIFBsZWFzZSBzZWxlY3QgdGhlIHBlcnNvbiByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gV2hhdCAtLT5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyYW1ld29yaydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXNwb25zaWJpbGl0eU5hbWUnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLndoYXRcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxuICAgICAgICBcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgV2hhdD8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIlxuICAgICAgICAgICAgICBpc0ZyYW1ld29ya0F2YWlsYWJsZSAmJlxuICAgICAgICAgICAgICBtb2RlICE9PSAnRURJVCcgJiZcbiAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcbiAgICAgICAgICAgIFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmFtZXdvcmsnLCB0cnVlKVwiIGNsYXNzPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBTZWxlY3QgRnJvbSBBIGZyYW1ld29ya1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/LmtleVJlc3BvbnNpYmlsaXR5XCIgY2xhc3M9XCJpbmRpY2F0b3JcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIidUaGlzIHJlc3BvbnNpYmlsaXR5IGlzIG1hcmtlZCBhcyBrZXkgcmVzcG9uc2liaWxpdHkuJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlYTcwOzwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXQgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpID09ICcnIHx8ICFpc0VkaXRXaGF0XG4gICAgICAgICAgXCIgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZVwiIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGUgcmVzcG9uc2liaWxpdHk/XCJcbiAgICAgICAgICAoY2hhbmdlKT1cIndoYXRDaGFuZ2VkKCRldmVudClcIiAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXNwb25zaWJpbGl0eU5hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiIChjbGlja091dHNpZGUpPVwidGVzdEZ1bmN0aW9uKClcIiAjd2hhdCAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT0gJycgJiYgaXNFZGl0V2hhdFxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eT8ubmFtZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0V2hhdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aGF0J1wiIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgIFBsZWFzZSBlbnRlciBhIG5hbWUgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIj5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaCBbbmdWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHk/LmtleVJlc3BvbnNpYmlsaXR5XCIgKG5nVmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5rZXlSZXNwb25zaWJpbGl0eSA9ICRldmVudFxuICAgICAgICAgICAgXCI+S2V5IFJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFdobyAtLT5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgIFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5jYXNlX2Fzc2lnbmVlc1wiIGFsdD1cImltXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCIgLz5cblxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWduZWVzJ1xuICAgICAgICBcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1kdWUtZGF0ZVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5XaG8/IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFsbG93RWRpdER1ZURhdGVGZWF0dXJlRmxhZyAmJiBmYWxzZVwiIGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiPlxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2ggW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFsbG93RWRpdER1ZURhdGVcIlxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJyZXNwb25zaWJpbGl0eUZvcm0uYWxsb3dFZGl0RHVlRGF0ZSA9ICRldmVudFwiPkFMTE9XIEFTU0lHTkVFIFRPIEVESVQgQ09NUExFVEVEIFdPUks8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICdJZiBpdOKAmXMgZW5hYmxlZCwgdGhlIGFzc2lnbmVlIHdpbGwgaGF2ZSB0aGUgb3B0aW9uIHRvIG1vZGlmeSBhIHByZXZpb3VzbHkgY29tcGxldGVkIGR1ZSBkYXRlLidcbiAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XG4gICAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IHZ4LW10LTBcIiAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAoIWZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHk/XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiZV91c2VyLm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgZV91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbmJnXCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWVzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2Fzc2lnbmVlcycsIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVxuICAgICAgICAgICAgICAgIFwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcbiAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiPiY8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnZ3JvdXBhc3NpZ25lZXMnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5sZW5ndGg+MlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsZV91c2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VfdXNlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWVzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0pXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIoIWFsbEdyb3VwQXNzaWduZWUgfHwgbW9kZSAhPT0gJ0VESVQnKVwiIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwYXNzaWduZWVzJyxyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgZV91c2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChmZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJykpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwYXNzaWduZWVzJywgZ3JvdXApXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3dobydcIiBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIGNvbXBsZXRpbmcgdGhpc1xuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5LlxuICAgICAgICA8L3A+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cEFzc2lnbmVkXCI+XG5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCIgKGNoZWNrZWRFdmVudCk9XCJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTllfT05FJ1xuICAgICAgICAgICAgXCIgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQU5ZX09ORSdcIiBbbmFtZV09XCInd2hhdCdcIj5BTlkgU0VMRUNURUQgUEVSU09OXG4gICAgICAgICAgICBDQU4gQ09NUExFVEUgVEhJU1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcbiAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuXG4gICAgICAgICAgPGFwcC1jcy1yYWRpbyAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiIChjaGVja2VkRXZlbnQpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FMTCdcIiBbbmFtZV09XCInd2hhdCdcIj5BTEwgU0VMRUNURUQgUEVSU09OUyBORUVEXG4gICAgICAgICAgICBUTyBDT01QTEVURSBUSElTPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIHBlcnNvbi4nXG4gICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XG4gICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaCAobmdWYWx1ZUNoYW5nZSk9XCJvcGVuQXNzaWduZWVDaGFuZ2VDb25maXJtYXRpb24oJGV2ZW50KVwiIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICBBTlkgU0VMRUNURUQgUEVSU09OIENBTiBDT01QTEVURSBUSElTXG4gICAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI2Fzc2lnbmVlcyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0IHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgZV91c2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBXaGVuPyAtLT5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXG4gICAgICBcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMud2hlblwiIGFsdD1cImltXCIgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCIgLz5cblxuICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICcnICYmXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJzV+MH4wfjAnXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5XaGVuPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSA9PSAnJyB8fFxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgPT0gJzV+MH4wfjAnXG4gICAgICAgICAgXCIgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiIFtwbGFjZWhvbGRlcl09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICByZWFkb25seSAvPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgU2V0IEEgZnJlcXVlbmN5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAhPSAnJyAmJlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT09ICc1fjB+MH4wJ1xuICAgICAgICAgIFwiIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hlbidcIiBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTm90ZXMgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdub3RlcydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdub3RlcycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5kZXNjcmlwdGlvbikudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cbiAgICAgIFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5ub3Rlc1wiIGFsdD1cImltXCIgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSA9PT0gJycgfHxcbiAgICAgICAgICBmb2N1cy5kZXNjcmlwdGlvblxuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cbiAgICAgICAgXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+Tm90ZXM8L2xhYmVsPlxuICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb25cIiBbZWRpdG9yQ29uZmlnXT1cIntcbiAgICAgICAgICAgIG1vZGU6ICdwcmltZScsXG4gICAgICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgICAgICAgICBsaW5rOiB0cnVlLFxuICAgICAgICAgICAgaWQ6ICdub3RlcycsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgJ0FkZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5J1xuICAgICAgICAgIH1cIj48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gT2JqZWN0aXZlIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uT0JKRUNUSVZFXCIgW2F0dHIuaWRdPVwiJ09CSkVDVElWRSdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvYmplY3RpdmUnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb2JqZWN0aXZlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICBcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMub2JqZWN0aXZlc1wiIGFsdD1cImltXCIgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAgICFmb2N1cy5vYmplY3RpdmVcbiAgICAgICAgXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9iamVjdGl2ZTwvbGFiZWw+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmVcIiBbZWRpdG9yQ29uZmlnXT1cIntcbiAgICAgICAgICAgIG1vZGU6ICdwcmltZScsXG4gICAgICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgICAgICAgICBpZDogJ29iamVjdGl2ZScsXG4gICAgICAgICAgICBsaW5rOiB0cnVlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IGFuIG9iamVjdGl2ZSBmb3IgdGhlIHJlc3BvbnNpYmlsaXR5LidcbiAgICAgICAgICB9XCI+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJDXCIgW2F0dHIuaWRdPVwiJ1JDJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1xuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVzcG9uc2liaWxpdHkgQ2VudGVyIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbnB1dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcbiAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHJlc3BvbnNpYmlsaXR5IGNlbnRlciBvciB0aGUgcmVzcG9uc2liaWxpdHkgY2VudGVycyBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocylcIiByZWFkb25seT4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2NsYXNzLnJlYWRPbmx5XT1cIm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMCwgMSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIlxuICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCdcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwicmM/Lml0ZW1fbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyByYz8uaXRlbV9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDFcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyY1BvcG92ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmMpXCIgKm5nSWY9XCJvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnXCI+JiN4ZTkwZDs8L2k+e3tyYz8uaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCdcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcmNQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgcmMuaXRlbV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgICAgICAgIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICAgICAgICAobW9kZSAhPSAnRURJVCcgfHwgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoIDw9IDEpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPCEtLSA8YXBwLWNzLXJhZGlvPjxkaXYgW2FwcFRvb2x0aXBdPVwiJ0NyZWF0ZSBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIGZvciBlYWNoIHJlc3BvbnNpYmlsaXR5IGNlbnRlcidcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5DUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKY8L2Rpdj48aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT48L2FwcC1jcy1yYWRpbz4gLS0+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpbyBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxICYmXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVxuICAgICAgICBcIiBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDFcIiBbbmFtZV09XCInZmZfcmVzcG9uc2liaWxpdHlfcmNfbGluaydcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJvblJjVHlwZUNoYW5nZSgxKVwiPkRJU1BMQVkgVEhFIFNBTUUgUkVTUE9OU0lCSUxJVFkgSU4gQUxMIFJFU1BPTlNJQklMSVRZIENFTlRFUlM8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHRoZSBzYW1lIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgbGlua2VkIHRvIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcbiAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpbyBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDEgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgXCIgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAwXCIgW25hbWVdPVwiJ2ZmX3Jlc3BvbnNpYmlsaXR5X3JjX2xpbmsnXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SY1R5cGVDaGFuZ2UoMClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYy1yYWRpby10ZXh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0NyZWF0ZSBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIGZvciBlYWNoIHJlc3BvbnNpYmlsaXR5IGNlbnRlcnMnXG4gICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICBDUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKZcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcbiAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUHJvZ3JhbSAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LlBST0dSQU1cIiBbYXR0ci5pZF09XCInUFJPR1JBTSdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJ1xuICAgICAgXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nKSAmJlxuICAgICAgICAgIGFsbFByb2dhbVNlbGVjdGVkPy5sZW5ndGggPT0gMFxuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiAqbmdJZj1cIlxuICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbScpIHx8XG4gICAgICAgICAgYWxsUHJvZ2FtU2VsZWN0ZWQ/Lmxlbmd0aCA+IDBcbiAgICAgICAgXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlByb2dyYW08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBQcm9ncmFtIG9yIFByb2dyYW0gQ2F0ZWdvcmllcyB0aGF0IHRoaXMgcmVzcG9uc2liaWxpdHkgcmVsYXRlcyB0by5cIj48L2Rpdj5cbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IHByb2dyYW0ocylcIiByZWFkb25seT4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImFsbFByb2dhbVNlbGVjdGVkPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICFoaWRkZW5MaXN0Py5pbmNsdWRlcygnUFJPR1JBTScpICYmXG4gICAgICAgICAgICAgICAgICAhcHJvZ3JhbT8uaXNWaWV3T25seVByb2dyYW1cbiAgICAgICAgICAgICAgICBcIiAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgYWxsUHJvZ2FtU2VsZWN0ZWRbMF0pXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiYWxsUHJvZ2FtU2VsZWN0ZWRbMF0/Lm5hbWUgPz8gJy0tJ1wiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IGFsbFByb2dhbVNlbGVjdGVkWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgPz8gXCItLVwiIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImFsbFByb2dhbVNlbGVjdGVkPy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICt7eyBhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtXCI+PGkgY2xhc3M9XCJpY29uc1wiICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLHByb2dyYW0pXCI+JiN4ZTkwZDs8L2k+IHt7cHJvZ3JhbT8ubmFtZT8/Jy0tJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtIC0gPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMlwiIGNsYXNzPVwiY291bnRcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPisge3tyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+IC0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIlxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nICYmICFoaWRkZW5MaXN0LmluY2x1ZGVzKCdQUk9HUkFNJylcbiAgICAgICAgICAgIFwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncHJvZ3JhbScsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNwcm9ncmFtIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtIG9mIGFsbFByb2dhbVNlbGVjdGVkIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInByb2dyYW0/Lm5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGRlbkxpc3Q/LmluY2x1ZGVzKCdQUk9HUkFNJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFwcm9ncmFtPy5pc1ZpZXdPbmx5UHJvZ3JhbVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgcHJvZ3JhbSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJvZ3JhbT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY3VzdG9tVGFncz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmN1c3RvbVRhZ3NcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWc/Lm5hbWU/LnRyaW0oKVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIj57e1xuICAgICAgICAgICAgICAgIHRhZz8ubmFtZVxuICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJ0YWcudmFsdWVcIiBwbGFjZWhvbGRlcj1cInt7IHRhZz8ubmFtZSB9fVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGb3JtYXQgJiBFdmlkZW5jZSAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0VcIlxuICAgIFthdHRyLmlkXT1cIidGT1JNQVRFX0VWSURFTkNFJ1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmb3JtYXRlX2V2aWRlbmNlJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Zvcm1hdGVfZXZpZGVuY2UnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nICpuZ0lmPVwiXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9PSBmYWxzZSAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzLmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3M/Lmxlbmd0aCA9PSAwXG4gICAgICAgIFwiIFtzcmNdPVwiQVNTRVRTLmZvcm1hdF9ldmlkZW5jZVwiIGFsdD1cImltXCIgLz5cblxuICAgICAgPHN2ZyAqbmdJZj1cIlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggfHxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rcz8ubGVuZ3RoXG4gICAgICAgIFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2UgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ2Zvcm1hdGVfZXZpZGVuY2UnLCAkZXZlbnQpXCIgW21vZGVdPVwiJ3Jlc3BvbnNpYmlsaXR5J1wiXG4gICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZVwiIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uSWRcIlxuICAgICAgICBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCI+XG4gICAgICA8L2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFzc2Vzc21lbnQgLS0+XG4gIDxkaXYgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVFwiIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICBbYXR0ci5pZF09XCInQVNTRVNTTUVOVCdcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2lzQXNzZXNzbWVudCcgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIiBbc3JjXT1cIkFTU0VUUy5hc3Nlc3NtZW50c1wiIGFsdD1cImltXCIgLz5cblxuICAgICAgPHN2ZyAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCIgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UUzwvbGFiZWw+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcbiAgICAgICAgICAgIFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGFuIGFzc2Vzc21lbnQgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc2Vzc21lbnQnLCBjYXRlZ29yeSlcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgID8uYXNzZXNzbWVudF9uYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1sLTEgdngtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5xdWVzdGlvbnMgfX1cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5xdWVzdGlvbnMgPiAxXG4gICAgICAgICAgICAgID8gXCJRdWVzdGlvbnNcIlxuICAgICAgICAgICAgICA6IFwiUXVlc3Rpb25cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKTsgaXNBc3Nlc3NtZW50ID0gdHJ1ZVxuICAgICAgICAgICAgXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hlY2twb2ludHMgLS0+XG4gIDwhLS0gKm5nSWY9XCJtb3JlT3B0aW9ucy5jaGVja3BvaW50c1wiIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNcIlxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUydcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiIGFsdD1cImltXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJywgdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIkFkZCBjaGVja3BvaW50cyBmb3IgdGhpcyByZXNwb25zaWJpbGl0eVwiXG4gICAgICAgICAgICByZWFkb25seSAvPlxuICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIEFkZCBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNoZWNrcG9pbnQ/LmxhYmVsXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgY2hlY2twb2ludD8ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2hlY2twb2ludC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXIgY2hlY2twb2ludHNcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/LnNsaWNlKDAsMSlcIj57e2NoZWNrcG9pbnQ/LmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDFcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2hlY2twb2ludC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGhcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dFwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb25zIGFsZXJ0LWljb25cIj4mI3hlOTMwOzwvaT5cbiAgICAgICAgPHNwYW4+WW91IGNhbiBub3cgdXNlIHRoZSBuZXcgPHN0cm9uZz5DaGVja3BvaW50cyA8L3N0cm9uZz5vclxuICAgICAgICAgIDxzdHJvbmc+QXNzZXNzbWVudHM8L3N0cm9uZz4gZmVhdHVyZSBpbnN0ZWFkIG9mIHRoZSBvbGQgY2hlY2twb2ludHNcbiAgICAgICAgICBmdW5jdGlvbmFsaXR5IHRvIGNyZWF0ZSBhbmFseXRpY2FsIHF1ZXN0aW9ucy5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVtb3ZlLWJ0blwiIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCdjaGVja3BvaW50JylcIj5cbiAgICAgICAgICAgIFJlbW92ZSBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIHRvIGNvbnRpbnVlLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFwcC1wb3BvdmVyICNjaGVja3BvaW50IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTmV3ICBDaGVja3BvaW50cyAtLT5cbiAgPCEtLSAqbmdJZj1cIm1vcmVPcHRpb25zLmNoZWNrcG9pbnRzXCIgLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcIlxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUy1ORVcnXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzLW5ldydcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiIGFsdD1cImltXCIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLHRydWUpXCI+KyBBZGQgQ2hlY2twb2ludHM8L2J1dHRvbj4gLS0+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID09PSAwXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzLW5ldycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGNoZWNrcG9pbnRzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIEFkZCBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjaGVja3BvaW50Q291bnQgPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hlY2twb2ludHMoJ25ldy1jaGVja3BvaW50cycpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiPnt7IGNoZWNrcG9pbnRDb3VudCB9fVxuICAgICAgICAgICAgICB7eyBjaGVja3BvaW50Q291bnQgPiAxID8gXCJRdWVzdGlvbnNcIiA6IFwiUXVlc3Rpb25cIiB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIGNoZWNrcG9pbnRzXCIgW2NsYXNzLm1vcmUtb25lXT1cImNoZWNrcG9pbnRDb3VudCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCduZXctY2hlY2twb2ludHMnKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoZWNrcG9pbnRDb3VudH19IHt7Y2hlY2twb2ludENvdW50ID4gMSA/ICdRdWVzdGlvbnMnOiAnUXVlc3Rpb24nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cy1uZXcnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFwcC1wb3BvdmVyICNjaGVja3BvaW50IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlzayBDbGFzc2lmaWNhdGlvbiAtLT5cbiAgPGRpdiBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJJU0tfQ0xBU1NJRklDQVRJT05cIlxuICAgIFthdHRyLmlkXT1cIidSSVNLX0NMQVNTSUZJQ0FUSU9OJ1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2FsY3VsYXRvcicgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yaXNrQ2xhc3NcIj5cbiAgICAgIDxzdmcgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJpc2tDbGFzc1wiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgUmlzayBDbGFzc2lmaWNhdGlvblxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYWxjdWxhdG9yJywgdHJ1ZSlcIiBjbGFzcz1cImJ1dHRvblwiPlxuICAgICAgICAgICAgKyBSaXNrIENhbGN1bGF0b3JcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsb3dcIiAqbmdGb3I9XCJsZXQgcmlzayBvZiByaXNrQ2xhc3NpZmljYXRpb25cIiBbbmdDbGFzc109XCJbcmlzay5jbGFzc11cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwiY2xhc3NpZmljYXRpb25cIiBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmlzaz8udmFsdWVcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgcmlzaz8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJldmlld2VyIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkVWSUVXRVJcIiBbYXR0ci5pZF09XCInUkVWSUVXRVInXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcbiAgICBcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXG4gICAgICAgIFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmV2aWV3ZXI8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmV2aWV3ZXJcIiByZWFkb25seSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPiB7e3Jldmlld2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ3Jldmlld2VyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnZ3JvdXBSZXZpZXdlcicsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicscmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cFJldmlld2VyJyxyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1jcy1yYWRpbyBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1wiIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdzZXF1ZW50aWFsJylcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgU0VRVUVOVElBTDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ1RoZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHNlbnQgZm9yIHJldmlldyBvbmUgYXQgYSB0aW1lIGluIHRoZSBzZXF1ZW5jZSBkZWZpbmVkIGJ5IHlvdS4nXG4gICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICA8YXBwLWNzLXJhZGlvIFtjaGVja2VkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1wiIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdhbnlSZXZpZXdlcicpXCI+XG4gICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQ8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1xuICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJldmlld2VyLm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBSZXZpZXdlcicsIGdyb3VwKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gT3ZlcnNlZXIgLS0+XG4gIDxkaXYgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cIm1vcmVPcHRpb25zPy5PVkVSU0VFUlwiIFthdHRyLmlkXT1cIidPVkVSU0VFUidcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xuICAgIFwiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAhWydvdmVyc2Vlck5vdGlmeScsICdvdmVyc2Vlck5vdGlmeSddLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKSAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5vdmVyc2lnaHRcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCkgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXG4gICAgICAgIFwiIC8+XG4gICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICEoXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xuICAgICAgICAgIClcbiAgICAgICAgXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+T3ZlcnNpZ2h0PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGhhdmUgb3ZlcnNpZ2h0IG9mIHRoZSByZXNwb25zaWJpbGl0eT9cIiByZWFkb25seSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVyKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIm92ZXJzZWVyLm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgb3ZlcnNlZXIubWVtYmVyX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgwLDIpXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJyxvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT4ge3tvdmVyc2Vlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZSgnb3ZlcnNlZXInLCByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFswXSlcbiAgICAgICAgICAgICAgICBcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlclVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIj4mPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyVXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwIFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJHcm91cCcscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiICA+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXJOb3RpZnknLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgYmUgbm90aWZpZWQgaWYgdGhlIHJlc3BvbnNpYmlsaXR5IGlzIG5vdCBjb21wbGV0Li4uXCIgcmVhZG9ubHkgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdXaG8gc2hvdWxkIGJlIG5vdGlmaWVkIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldGVkPydcbiAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IG92ZXJzZWVyLm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZSgwLDIpXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJOb3RpZnlMaXN0JyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeUdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwIFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCIgID57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwibm90aWZ5R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXJOb3RpZnknXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXJOb3RpZnknLCB0cnVlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVycyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlcnMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVycylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXJzPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLCBvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjbm90aWZ5IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjbm90aWZ5VXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JywgZ3JvdXApXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQXNzdXJhbmNlIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTVVJBTkNFXCIgW2F0dHIuaWRdPVwiJ0FTU1VSQU5DRSdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3N1cmFuY2UnXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5yZXZpZXdlclwiIGFsdD1cIlwiICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1xuICAgICAgICBcIiAvPlxuXG4gICAgICA8c3ZnICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3N1cmFuY2UnXG4gICAgICAgIFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzdXJhbmNlPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzdXJhbmNlJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgdGVzdCBwbGFuIGNhdGVnb3JpZXMgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBhZGQgdGhpcyByZXNwb25zaWJpbGl0eSB0by5cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGFzc3VyYW5jZSBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXNzdXJhbmNlJywgYXNzdXJhbmNlKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFzc3VyYW5jZS5jYXRlZ29yeV9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgYXNzdXJhbmNlLmNhdGVnb3J5X25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJhc3N1cmFuY2UucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc3VyYW5jZScsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzdXJhbmNlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBhc3N1cmFuY2Ugb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzdXJhbmNlJywgYXNzdXJhbmNlKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJlcXVpcmVzIEF1ZGl0IC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5SRVFVSVJFU19BVURJVCAmJiByZXNwb25zaWJpbGl0eUZvcm0ucmMubGVuZ3RoID4gMFwiIFthdHRyLmlkXT1cIidSRVFVSVJFU19BVURJVCdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCcgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYXVkaXRcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCIgLz5cblxuICAgICAgPHN2ZyAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JlcXVpcmVzX2F1ZGl0J1xuICAgICAgICBcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJFUVVJUkVTIEFVRElUPzwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJJZiB5ZXMsIHNlbGVjdCBhbiBBdWRpdCBDYXRlZ29yeS5cIiByZWFkb25seVxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JlcXVpcmVzX2F1ZGl0JywgdHJ1ZSlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmVxdWlyZXNfYXVkaXQnLCBvdmVyc2VlcilcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXF1aXJlc19hdWRpdCcsIHRydWUpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYzs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8IS0tIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICBFZGl0PC9idXR0b24+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtOFwiPlxuICAgICAgICAgICAgU0FNUExFIFNJWkVcbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoIFsobmdWYWx1ZSldPVwiaXNTYW1wbGVcIiAobmdWYWx1ZUNoYW5nZSk9XCJzd2l0Y2hFbmFibGUoJGV2ZW50KVwiPjwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYW1wbGUtcGFydFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNTYW1wbGVcIj5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gdmFsdWU9XCIwXCIgY2xhc3M9XCJzYW1wbGUtcmFkaW9cIiAoY2xpY2spPVwic2VsZWN0ZWRTYW1wbGVEYXRhKDApXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRTYW1wbGUgPT09IDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5DT1VOVDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiLS1cIiAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNhbXBsZVZhbHVlXCIgLz5cbiAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yXCI+T1I8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gdmFsdWU9XCIxXCIgY2xhc3M9XCJzYW1wbGUtcmFkaW9cIiAoY2xpY2spPVwic2VsZWN0ZWRTYW1wbGVEYXRhKDEpXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRTYW1wbGUgPT09IDFcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5QRVJDRU5UQUdFPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgKGtleXByZXNzKT1cImNoZWNrSW5wdXRWYWx1ZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzYW1wbGVQZXJjZW50YWdlXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tXCIgLz5cbiAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtOFwiPlNFVCBBIFJFTUlOREVSIElGIFRIRSBBVURJVCBQTEFOIElTIE5PVCBDUkVBVEVELjwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWluZGVyLXBhcnRcIj5cbiAgICAgICAgICAgIFNlbmQgcmVtaW5kZXIgZXZlcnlcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgdmFsdWU9XCIyXCIgWyhuZ01vZGVsKV09XCJzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZVwiIC8+XG4gICAgICAgICAgICBEYXkgYnlcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGltZVwiIGFyaWEtbGFiZWw9XCIxMmhyIGZvcm1hdFwiIFsobmdNb2RlbCldPVwiYXVkaXRUaW1lXCIgW25neFRpbWVwaWNrZXJdPVwiZGFpbHlUaW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImF1ZGl0VGltZS50b1VwcGVyQ2FzZSgpXCIgdHlwZT1cInRleHRcIiBbbWluXT1cImN1cnJlbnRUaW1lXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NTU7PC9pPlxuICAgICAgICAgICAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2RhaWx5VGltZSBbZGVmYXVsdFRpbWVdPVwiYXVkaXRUaW1lXCI+XG4gICAgICAgICAgICAgIDwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaW5rIG9mIEdSQyBvYmplY3RzIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5HUkNfT0JKRUNUUyAmJiByZXNwb25zaWJpbGl0eUZvcm0ucmMubGVuZ3RoID4gMFwiIFthdHRyLmlkXT1cIidHUkNfT0JKRUNUUydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkNfT0JKRUNUUydcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdHUkNfT0JKRUNUUycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYXVkaXRcIiBhbHQ9XCJcIiAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDX09CSkVDVFMnXG4gICAgICAgIFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEdSQyBvYmplY3QocykgdG8gbGluayB3aXRoIHRoaXMgcmVzcG9uc2liaWxpdHlcIiByZWFkb25seVxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ0dSQ19PQkpFQ1RTJywgdHJ1ZSlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWxlY3RlZEdSQyBvZiBHUkNfVFlQRV9BUlJBWTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdPy5sZW5ndGhcIiBjbGFzcz1cInNlbGVjdGVkIHZ4LW1iLTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncmMgb2YgZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/LnNsaWNlKDAsIDEpXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ0dSQ19PQkpFQ1RTJywgZ3JjLCAwKVwiPiYjeGU5YWU7PC9pPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRHUkMgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImdyYz8ubmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57eyBncmM/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwicG9wb3ZlckdSQy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICt7eyBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQydcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHUkNUYWIgPSBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXVswXT8udHlwZTtcbiAgICAgICAgICAgICAgICAgIGdldE90aGVyR1JDT2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCB0cnVlKVxuICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyR1JDIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdHUkNfT0JKRUNUUycsIGdyYywgaiArIDEpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBncmMubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDdXN0b20gRmllbGRzIC0tPlxuICA8ZGl2IFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQ1VTVE9NX0ZJRUxEUyBcIlxuICAgIFthdHRyLmlkXT1cIidDVVNUT01fRklFTERTJ1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdDVVNUT01fRklFTERTJ1wiIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0NVU1RPTV9GSUVMRFMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmF1ZGl0XCIgYWx0PVwiXCIgKm5nSWY9XCJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ0NVU1RPTV9GSUVMRFMnXG4gICAgICAgIFwiIC8+XG5cbiAgICAgIDxzdmcgKm5nSWY9XCJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0NVU1RPTV9GSUVMRFMnXG4gICAgICAgIFwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+Q3VzdG9tIEZpZWxkczwvbGFiZWw+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21GaWVsZHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmMtY2YtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXB0LTIgdngtcGItMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNmLW5hbWUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdDVVNUT01fRklFTERTJywgZmllbGQpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJmaWVsZC5uYW1lID8/ICctLSdcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IGZpZWxkLm5hbWVcbiAgICAgICAgICAgICAgICAgID8/IFwiLS1cIiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtZ3JheS03MFwiPjombmJzcDsgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNmLXZhbHVlIHZ4LWZzLTEzIHZ4LWZ3LTUwMCB2eC1wLTAgdngtbS0wIHZ4LW1sLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIHZhbHVlXCIgWyhuZ01vZGVsKV09XCJmaWVsZC52YWx1ZVwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tRmllbGRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCIrIEFkZCBDdXN0b20gRmllbGRzXCIgcmVhZG9ubHlcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdDVVNUT01fRklFTERTJywgdHJ1ZSlcIiAvPiAtLT5cbiAgICAgICAgICA8YXBwLWNzLXNlbGVjdCBbZGF0YUxpc3RdPSdjdXN0b21GaWVsZHMnIFtpc1N0YXRpY0RhdGFdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCInKyBBZGQgQ3VzdG9tIEZpZWxkcydcIlxuICAgICAgICAgICAgdmFsdWVLZXk9XCJpZFwiIFtzZWxlY3RlZERhdGFdPVwiJysgQWRkIEN1c3RvbSBGaWVsZHMnXCIgZGlzcGxheVByb3BlcnR5PVwibmFtZVwiIFtpc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWREYXRhKT1cImFjdGl2YXRlU2VsZWN0b3IoJ0NVU1RPTV9GSUVMRFMnLCAkZXZlbnQpXCI+PC9hcHAtY3Mtc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48YXBwLXVzZXJzLXJhZGlvLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcIiBbdXNlcnNMaXN0XT1cImFzc2lnbm9yc0xpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3RcIiBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCIgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCIgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWdub3JzJywgJGV2ZW50KVwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIiBbbG9hZGVkXT1cImFzc2lnbm9yc0xpc3RMb2FkZWRcIj5cbjwvYXBwLXVzZXJzLXJhZGlvLWxpc3Q+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcIj5cbiAgPGFwcC1ncm91cC11c2Vycy1saXN0ICpuZ0lmPVwiXG4gICAgICBpc0VudHJ1c3QgfHwgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lndob0NhbkNvbXBsZXRlID09PSAnQU5ZX09ORSdcbiAgICBcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCIgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInQXNzaWduZWUnXCIgW2dyb3Vwc0xpc3RdPVwiZ3JvdXBzTGlzdFwiXG4gICAgW2Fzc2lnbmVlR3JvdXBzTGlzdF09XCJncm91cEFzc2lnbmVlTGlzdFwiIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0XCJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFwiIFt1c2VySWRLZXldPVwiJ215X21lbWJlcl9pZCdcIiBbZ3JvdXBJZEtleV09XCInZ3JvdXBfaWQnXCJcbiAgICBbbG9hZGVyXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIiAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCIgW2dyb3Vwc0VuYWJsZWRdPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gIDwvYXBwLWdyb3VwLXVzZXJzLWxpc3Q+XG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdCAqbmdJZj1cIlxuICAgICAgIWlzRW50cnVzdCAmJiByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcbiAgICBcIiBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIiBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIiBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3RcIlxuICAgIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidBc3NpZ25lZSdcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIiAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgICBbbG9hZGVkXT1cImFzc2lnbmVlc0xpc3RMb2FkZWRcIj5cbiAgPC9hcHAtdXNlcnMtcmFkaW8tbGlzdD5cbjwvbmctY29udGFpbmVyPlxuXG48YXBwLWNoZWNrcG9pbnRzICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcIlxuICBbY2hlY2twb2ludEluc3RydWN0aW9uXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludEluc3RydWN0aW9uXCIgW2NoZWNrcG9pbnREYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHNcIlxuICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2hlY2twb2ludHMnLCAkZXZlbnQpXCIgKGNsb3NlQ2hlY2tQb2ludCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj48L2FwcC1jaGVja3BvaW50cz5cbjxhcHAtZnJlcXVlbmN5LWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiIFtmcmVxdWVuY3lEZXRhaWxzXT1cImZyZXF1ZW5jeURldGFpbHNcIlxuICBbZmVhdHVyZV09XCJmZWF0dXJlXCIgW29uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5XT1cInJlc3BvbnNpYmlsaXR5RGV0YWlscz8ub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHlcIlxuICAoc2VsZWN0ZWRGcmVxdWVuY3kpPVwiZnJlcXVlbmN5RGF0YSgkZXZlbnQpXCIgW21vZGVdPVwiJ3Jlc3BvbnNpYmlsaXR5J1wiIChjbG9zZUZyZXF1ZW5jeSk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj5cbjwvYXBwLWZyZXF1ZW5jeS1jb250YWluZXI+XG5cbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIiBbbG9hZGVkXT1cInJjTGlzdExvYWRlZFwiXG4gIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIiBbcmFkaW9TZWxlY3Rpb25dPVwiXG4gICAgbW9kZSA9PSAnRURJVCcgJiYgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAwID8gdHJ1ZSA6IGZhbHNlXG4gIFwiIFtzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucmNcIiBbcmNJZEtleV09XCInaXRlbV9pZCdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyYycsICRldmVudClcIiAoY2xvc2VSY0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+XG48L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG5cbjxhcHAtY2F0ZWdvcnktbXVsdGktc2VsZWN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIiBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXNcIlxuICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDYXRlZ29yaWVzXCIgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiPlxuPC9hcHAtY2F0ZWdvcnktbXVsdGktc2VsZWN0PlxuXG48IS0tIFByb2dyYW0gTGlzdCBQb3B1cCAtLT5cbjxhcHAtbGlzdC1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nXCIgKGNsb3NlKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiPlxuICA8YXBwLXByb2dyYW0tbGlzdCBib2R5IChpdGVtc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXRlbXNTZWxlY3RlZENoYW5nZSgkZXZlbnQpXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRQcm9ncmFtc1wiXG4gICAgW3VybF09XCJwcm9ncmFtTGlzdFVybFwiPjwvYXBwLXByb2dyYW0tbGlzdD5cbiAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXctMTAwXCIgZm9vdGVyPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXNpZGUgdngtZnMtMTIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsUHJvZ2FtU2VsZWN0ZWQubGVuZ3RoID4gMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1jb3VudC1ib3ggdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiPlxuICAgICAgICAgIHt7IGFsbFByb2dhbVNlbGVjdGVkLmxlbmd0aCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC10ZXh0XCI+XG4gICAgICAgICAgUHJvZ3JhbVxuICAgICAgICAgIHt7IGFsbFByb2dhbVNlbGVjdGVkLmxlbmd0aCA+IDEgPyBcIkNhdGVnb3JpZXNcIiA6IFwiQ2F0ZWdvcnlcIiB9fVxuICAgICAgICAgIFNlbGVjdGVkPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNpZGUgdngtZC1mbGV4XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsQnRuXCIgKGNsaWNrKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5leHRCdG5cIiAoY2xpY2spPVwiYWN0aXZlRGVzZWxlY3RvcigpOyBzZWxlY3RDYXRlZ29yeSgpXCI+XG4gICAgICAgIE5leHQgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWU7PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hcHAtbGlzdC1jb250YWluZXI+XG5cbjxhcHAtb3duZXItbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInICYmICFmZWF0dXJlRmxhZ19ncm91cHNcIiBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBhIFJldmlld2VyJ1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCIgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCIgW3Nob3dXb3JrZmxvd109XCJ0cnVlXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0XCIgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCIgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIiAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJcbiAgICBzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdlcicsICRldmVudCk7XG4gICAgYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVxuICBcIiAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCIgW21vZGVdPVwibW9kZVwiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiIFtyZXZpZXdlcldvcmtmbG93VHlwZV09XCJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8uc2VxdWVudGlhbFdvcmtmbG93XG4gICAgICA/ICdTRVFVRU5USUFMJ1xuICAgICAgOiAnQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQnXG4gIFwiIChyZXZpZXdlcldvcmtmbG93VHlwZUNoYW5nZSk9XCJyZXZpZXdlclR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuPC9hcHAtb3duZXItbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJyAmJiBmZWF0dXJlRmxhZ19ncm91cHNcIiBbc2VsZWN0ZWRSZXZpZXdlcl09XCJ0cnVlXCJcbiAgW3VzZXJsaXN0XT1cInJldmlld2VyTWVtYmVySWRzTGlzdFwiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtncm91cExpc3RdPVwiZ3JvdXBSZXZpZXdlckxpc3RcIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFwiIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XCJcbiAgKGNhbmNlbCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIiAoc2F2ZSk9XCJcbiAgICBzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdlcicsICRldmVudCk7XG4gICAgYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVxuICBcIiBbbW9kZV09XCJtb2RlXCIgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInUmV2aWV3ZXInXCIgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXG4gIChyZXZpZXdlcldvcmtmbG93VHlwZUNoYW5nZSk9XCJyZXZpZXdlclR5cGVDaGFuZ2UoJGV2ZW50KVwiIFtyZXZpZXdlcldvcmtmbG93VHlwZV09XCJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8uc2VxdWVudGlhbFdvcmtmbG93XG4gICAgICA/ICdTRVFVRU5USUFMJ1xuICAgICAgOiAnQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQnXG4gIFwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFwcC1vd25lci1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCIgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XCJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCIgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCIgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIiAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCI+XG48L2FwcC1vd25lci1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXG4gIFtncm91cExpc3RdPVwiZ3JvdXBPdmVyc2Vlckxpc3RcIiBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RcIlxuICBbdXNlcmxpc3RdPVwib3ZlcnNlZXJzTGlzdFwiIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdFwiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIiAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIlxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbjwvdXNlci1ncm91cC1saXN0PlxuXG48YXBwLW93bmVyLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyAmJiAhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCIgW3VzZXJzTGlzdF09XCJhbGxVc2Vyc0xpc3RcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3RcIiBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIiBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ292ZXJzZWVyTm90aWZ5JywgJGV2ZW50KVwiIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIj48L2FwcC1vd25lci1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCIgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFwiIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIiAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cbjwvdXNlci1ncm91cC1saXN0PlxuXG48YXBwLW93bmVyLWxpc3QgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc3VyYW5jZSdcIiBbc2luZ3VsYXJUZXh0XT1cIidUZXN0IENhdGVnb3J5IHNlbGVjdGVkJ1wiXG4gIFtwbHVyYWxUZXh0XT1cIidUZXN0IENhdGVnb3JpZXMgc2VsZWN0ZWQnXCIgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidTZWFyY2ggVGVzdCBDYXRlZ29yeS4uLidcIlxuICBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBUZXN0IENhdGVnb3JpZXMnXCIgW3VzZXJzTGlzdF09XCJhc3N1cmFuY2VDYXRlZ29yaWVzTGlzdFwiXG4gIFtub0RhdGFUZXh0XT1cIidObyBUZXN0IENhdGVnb3JpZXMgRm91bmQnXCIgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3RcIlxuICBbdXNlcklkS2V5XT1cIidjYXRlZ29yeV9pZCdcIiBbaXRlbUVtYWlsS2V5XT1cIidjYXRlZ29yeV9uYW1lJ1wiIFtpdGVtTmFtZUtleV09XCInY2F0ZWdvcnlfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3N1cmFuY2UnLCAkZXZlbnQpXCIgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU2VhcmNoIENhdGVnb3J5J1wiPlxuPC9hcHAtb3duZXItbGlzdD5cblxuPGFwcC1hdWRpdC1jYXRlZ29yeS1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIiAoY2xvc2VMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIFthdWRpdENhdGVnb3J5XT1cImFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0XCIgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmVxdWlyZXNfYXVkaXQnLCAkZXZlbnQpXCJcbiAgW3NlbGVjdGVkRGF0YV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0WzBdXCI+PC9hcHAtYXVkaXQtY2F0ZWdvcnktbGlzdD5cblxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwiKGxvYWRlciAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykgfHwgZW50cnVzdExvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG48YXBwLWZyYW1ld29yay1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmFtZXdvcmsnXCIgKGFzc2lnbkNvbnRyb2wpPVwiYXNzaWduRnJvbUZyYW1ld29yaygkZXZlbnQpXCJcbiAgW3ByZXZpb3VzU2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXNcIiAoY2xvc2VGcmFtZXdvcmspPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgKGVudHJ1c3RGcmFtZXdvcmspPVwiZW50cnVzdEZyYW1ld29yaygkZXZlbnQpXCI+PC9hcHAtZnJhbWV3b3JrLWxpc3Q+XG5cbjwhLS0gcmlzay1jYWxjdWxhdG9yIGhlcmUgLS0+XG48YXBwLXJpc2stY2xhc3NpZmljYXRpb24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYWxjdWxhdG9yJ1wiIFtjdXJyZW50Umlza1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxuICAoc2F2ZUxpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2FsY3VsYXRlZHJpc2snLCAkZXZlbnQpXCIgKGNsb3NlTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIj5cbjwvYXBwLXJpc2stY2xhc3NpZmljYXRpb24+XG5cbjxhcHAtcmV2aWV3LWZyZXF1ZW5jeSAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCIgW3Jldmlld0NvbXBsZXRlRGF5c109XCJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXNcbiAgXCIgW3Jldmlld05PdENvbXBsZXRlZERheXNdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5c1xuICBcIiAoc2F2ZVJldmlld0ZyZXF1ZW5jeSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdGcmVxdWVuY3knLCAkZXZlbnQpXCIgKGNsb3NlUmV2aWV3RnJlcXVlbmN5KT1cIlxuICAgIGFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIGZhbHNlKTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdXG4gIFwiIChiYWNrVG9Vc2VyTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKCk7IGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIj5cbjwvYXBwLXJldmlldy1mcmVxdWVuY3k+XG5cbjxhcHAtYXNzZXNzbWVudC1saXN0ICpuZ0lmPVwiaXNBc3Nlc3NtZW50XCIgW3Byb2dyYW1faWRzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdPy5faWRcIiAoY2FuY2VsQXNzZXNzbWVudCk9XCJcbiAgICBpc0Fzc2Vzc21lbnQgPSBmYWxzZTsgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgZmFsc2UpXG4gIFwiIFtpc0VkaXRdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkID8gdHJ1ZSA6IGZhbHNlXCJcbiAgW3NlbGVjdGVkQXNzZXNzbWVudF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnRcIiAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxuICAgIG9uQXNzZXNzbWVudFNlbGVjdCgkZXZlbnQpOyBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcbiAgXCI+PC9hcHAtYXNzZXNzbWVudC1saXN0PlxuXG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lICpuZ0lmPVwic2hvd1NtaWxleVwiIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIiBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCI+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG5cbjxkaXYgY2xhc3M9XCJpbXBvcnRcIiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiPlxuICA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lciAjZWRpdG9yIFtvcGVuUG9ydGFsXT1cIidSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJ1wiXG4gICAgKHBvc3RBc3Nlc3NtZW50KT1cInBvc3RBc3Nlc3NtZW50KCRldmVudClcIiAoc2V0SXNVcGxvYWRlZCk9XCJzZXRJc1VwbG9hZGVkKCRldmVudClcIlxuICAgIFtjaGVja3BvaW50SlNPTl09XCJyZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzXCI+XG4gIDwvYXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48YXBwLWdyYy1vYmplY3QtbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXCIgW2dyY09iamVjdF09XCJncmNMaXN0XCJcbiAgW3NlbGVjdGVkR1JDXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgfCByZWZEaXNjb25uZWN0XCIgW2xvYWRlcl09XCJncmNMb2FkZXJcIiBbdGFibGVDYXJkXT1cIm90aGVyR1JDQ2FyZFwiXG4gIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZEdSQ1RhYlwiIFtjYXJkTG9hZGVyXT1cImdyY1RhYkxvYWRlclwiIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxuICAoc2F2ZU90aGVyR1JDKT1cInNhdmVTZWxlY3RlZExpc3QoJ0dSQ19PQkpFQ1RTJywgJGV2ZW50KVwiXG4gIChjbG9zZU90aGVyR1JDKT1cImFjdGl2YXRlU2VsZWN0b3IoJ0dSQ19PQkpFQ1RTJywgZmFsc2UpXCI+PC9hcHAtZ3JjLW9iamVjdC1saXN0PiJdfQ==
|