@annalib/anna-core 12.10.10 → 12.10.12

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.
@@ -316,6 +316,7 @@ export class AnnaNonEditableGenericTableComponent {
316
316
  this.tooltipRadioTextMap.set("estimateNo", "Estimate#");
317
317
  this.tooltipRadioTextMap.set("primaryBuyer", "Primary Buyer");
318
318
  this.tooltipRadioTextMap.set("primaryBuyerName", "Primary Buyer");
319
+ this.tooltipRadioTextMap.set("timeoutDate", "Timeout Date");
319
320
  }
320
321
  generateTableDataWrapper() {
321
322
  this.showSkeletonLoading = true;
@@ -1955,4 +1956,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1955
1956
  type: ViewChildren,
1956
1957
  args: ['tableHeader']
1957
1958
  }] } });
1958
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFHOUgsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhDLENBQUM7QUFTN0QsTUFBTSxPQUFPLG9DQUFvQztJQStKL0MsWUFDVSxLQUF3QixFQUN4QixlQUFnQyxFQUNqQyx5QkFBb0QsRUFDcEQsaUJBQW9DO1FBSG5DLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF6SnBDLCtDQUEwQyxHQUFXLENBQUMsQ0FBQztRQUN2RCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUkzQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixxQ0FBZ0MsR0FBWSxJQUFJLENBQUM7UUFDakQsbUNBQThCLEdBQVksSUFBSSxDQUFDO1FBQy9DLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRS9CLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0MsK0JBQTBCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRCx5QkFBb0IsR0FBZSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXJELGdCQUFXLEdBQVcsS0FBSyxDQUFDO1FBYTVCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNuQyw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFTaEIsWUFBTyxHQUFZO1lBQ2pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUFxQkYsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFDNUIsb0JBQWUsR0FBYSxJQUFJLENBQUM7UUFhakMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFFM0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyxrQkFBYSxHQUFhLElBQUksQ0FBQztRQVMvQixzQkFBaUIsR0FBUSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUcsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO1FBY3pELGNBQVMsR0FBVyxFQUFFLENBQUM7UUFRdkIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixRQUFHLEdBQVcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBTXRDLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWhFLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLHNCQUFpQixHQUEwQixFQUFFLENBQUM7UUFDOUMsMkJBQXNCLEdBQXFCLElBQUksQ0FBQztRQUVoRCwyQkFBc0IsR0FBVyxJQUFJLENBQUM7UUFRcEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBRyxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFDO1lBQ25ILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QjtRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzlDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdCO2FBQ0ksSUFBRyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFFLEVBQUM7WUFDNUosMkJBQTJCO1NBQzVCO2FBQ0k7WUFDSCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsRUFBQztnQkFDeEgsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0M7aUJBQ0c7Z0JBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFFRCx3R0FBd0c7UUFDeEcsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDcEgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDakQsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdCO1FBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUcsSUFBSSxDQUFDLDhCQUE4QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLDBDQUEwQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFDO1lBQzVKLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxlQUFlLENBQUM7U0FDL0M7YUFDSTtZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDakQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFDdkQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDO1FBRXpELElBQUksa0JBQWtCLEdBQUcsY0FBYyxHQUFHLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3RSxJQUFJLENBQUMsMENBQTBDO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLDhHQUE4RztRQUM5RyxJQUFJLGlCQUFpQixHQUFHLGNBQWMsR0FBRyxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFDNUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxpQkFBaUIsSUFBSSxDQUFDO1FBR3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxFQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsOENBQThDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUVwRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUVsRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVwRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxTQUFjLENBQUM7UUFDbkIsSUFBSSxVQUFrQixDQUFDO1FBQ3ZCLElBQUksWUFBbUMsQ0FBQztRQUN4QyxJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLHVCQUFpQyxDQUFDO1FBQ3RDLElBQUksaUJBQTJCLENBQUM7UUFDaEMsSUFBSSxvQkFBMkMsQ0FBQztRQUNoRCxJQUFJLGNBQWMsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQTBCLEVBQUUsRUFBRTtZQUNwRCxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ2YsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1lBQzdCLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUN0QyxTQUFTO2lCQUNWO2dCQUNELFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3RELElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7d0JBQ3RDLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUNuQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUNyRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQzlDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztxQkFDekM7eUJBQ0ksSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLE1BQU0sRUFBRTt3QkFDekMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7d0JBQ3hDLFlBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUN0RCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUMxQzt5QkFDSSxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFO3dCQUM3QyxlQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQzt3QkFDeEMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3RELGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQzFDO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pELFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDdEMsVUFBVSxJQUFJLEdBQUcsQ0FBQztxQkFDbkI7aUJBQ0Y7Z0JBQ0QsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUN0QztZQUNELG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMxQixjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQTtZQUNGLFNBQVMsQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUM7WUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUdELHdCQUF3QixDQUFDLE9BQVksRUFBRSxVQUFlLEVBQUUsa0JBQXVCO1FBQzdFLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFZO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBWSxFQUFFLE1BQW1CO1FBRXJELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMseUJBQXlCO1FBQ3pCLDZHQUE2RztRQUMzRyxrRkFBa0Y7UUFDbEYsNkRBQTZEO1FBQzdELDRCQUE0QjtRQUM1Qiw0RkFBNEY7UUFDNUYsSUFBSTtRQUNOLElBQUk7UUFFSixrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjthQUNJO1lBQ0gsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxNQUFNLEVBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpELElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsdUNBQXVDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQscUNBQXFDLENBQUMsTUFBbUIsRUFBRSxjQUFxQjtRQUM5RSxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRyxJQUFHLElBQUksSUFBSSxRQUFRLEVBQUM7Z0JBQ2hCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixJQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDO29CQUNwRixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQjthQUNKO2lCQUVHO2dCQUNBLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDdEUsdUVBQXVFO2dCQUN2RSxJQUFJLDRCQUE0QixHQUFHLEtBQUssQ0FBQztnQkFDekMsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ3RELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBQztvQkFDdEcsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO2lCQUNyQztnQkFDSCxJQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLDRCQUE0QixDQUFDLEVBQUM7b0JBQzdHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzdCO3FCQUNJLElBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFFLElBQUksSUFBSSxDQUFDLElBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxFQUFDO29CQUM5SCxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVksRUFBQyxNQUFXLEVBQUUsWUFBeUI7UUFDN0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFDLEtBQWEsRUFBRSxFQUFFO1lBQy9ELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyx3QkFBd0I7WUFDakMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHVDQUF1QyxDQUFDLFNBQTJCLEVBQUUsTUFBZTtRQUNsRixJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFHdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQzlDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUcsTUFBTSxFQUFDO1lBQ1IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMseUNBQXlDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO2FBQUk7WUFDSCxJQUFJLENBQUMseUNBQXlDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVELHlDQUF5QyxDQUFDLFNBQTBCLEVBQUUsTUFBYTtRQUNqRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1FBQ3RELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsTUFBYztRQUNwQyxJQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBQztZQUMxQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUVyRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEI7aUJBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM5QjtTQUNGO2FBQ0ksSUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7WUFDN0IsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLElBQUksaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFNUUsSUFBSSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUN4RSxJQUFJLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksdUJBQXVCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9KLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUgsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBYztRQUVuQyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQy9ELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFdEgsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELGFBQWEsR0FBRyxVQUFVLENBQUM7U0FDNUI7YUFDSSxJQUFHLE1BQU0sSUFBSSxrQkFBa0IsRUFBQztZQUNuQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1NBQzNCO2FBQ0k7WUFDSCxhQUFhLEdBQUcsUUFBUSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RGLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZGLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBFLElBQUksYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUM1QixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQztTQUNsRTthQUFNLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUNwQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQztTQUNuRTthQUFNLElBQUksYUFBYSxLQUFLLFVBQVUsRUFBRTtZQUNyQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQztTQUNwRTtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO1FBQ25DLElBQUksTUFBTSxLQUFLLFlBQVksRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxNQUFjO1FBQ3RDLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBQztZQUN2RCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUNsRDthQUNHO1lBQ0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDakQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDbkQsQ0FBQztJQUdELGVBQWUsQ0FBQyxNQUFjO1FBRTVCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RCxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNuRixJQUFJLGVBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsYUFBYSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFM0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLDZCQUE2QixHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVwSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMzRCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsTUFBYztRQUN4QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkcsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksY0FBYyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztRQUVqRSxJQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBQztZQUNiLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELDBCQUEwQixDQUFDLGNBQThCLEVBQUMsTUFBYztRQUV0RSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUM7WUFDdkQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdEYsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRzthQUNHO1lBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDeEQ7SUFFSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNuQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCwyQkFBMkI7UUFFekIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRW5HLElBQUksVUFBVSxDQUFDO1FBQ2YsdUZBQXVGO1FBQ3ZGLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsSUFBSSxRQUFRLEVBQUM7WUFDbEQsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2RDthQUNHO1lBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNHO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFFcEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWlCO1FBQ3ZDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdkYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxVQUFpQixFQUFFLGFBQXFCO1FBQ2xFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRzNHLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7WUFDbkYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFMUcsSUFBRyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztnQkFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBQyxhQUFhLENBQUMsQ0FBQzthQUNsSDtpQkFDRztnQkFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsYUFBYSxDQUFDLENBQUM7YUFDdkc7WUFFRCxJQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsYUFBYSxDQUFDLENBQUM7YUFDdkc7aUJBQ0c7Z0JBQ0EsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBQyxhQUFhLENBQUMsQ0FBQzthQUNoSDtTQUVKO2FBQ0c7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFHbEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFFOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUVoRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDcEY7YUFBTTtZQUNMLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3BGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ2pGO1FBRUQsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksU0FBUyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM1RDthQUNJO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN2QztRQUVBLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFDO1lBQzlDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0RDthQUFJO1lBQ0gsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixrREFBa0QsQ0FBQyxNQUFjO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBR3RDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRyxJQUFJLFdBQVcsQ0FBQztRQUVoQixJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUM7WUFDdkQsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckU7YUFDRztZQUNGLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDO1NBQzVEO1FBR0QsSUFBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7U0FDMUQ7UUFHRCxJQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNuQztRQUVELElBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsdUNBQXVDLENBQUMsTUFBYztRQUNsRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUV0QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEcsSUFBSSxXQUFXLENBQUM7UUFFaEIsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFDO1lBQ3ZELFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JFO2FBQ0c7WUFDRixXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztTQUN4RDtRQUdELElBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1NBQzFEO1FBR0QsSUFBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzFELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFFRCxJQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUMzRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO1NBQzlEO0lBQ0wsQ0FBQztJQUVELGlDQUFpQztRQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGdDQUFnQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDN0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGlDQUFpQztRQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUdELHNCQUFzQixDQUFDLElBQWtCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFOUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsZUFBZSxHQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUN6RCxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsSUFBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNMLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3JDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3JDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7aUJBQ25DO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUNsRSxJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUM7b0JBQ2pELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7aUJBQ3RDO3FCQUNHO29CQUNGLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBQzt3QkFDakQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztxQkFDdEM7eUJBQ0c7d0JBQ0YsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztxQkFDckM7aUJBRUY7Z0JBQ0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQzthQUVsQztpQkFBTSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDMUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2FBQ25DO1NBRUY7YUFBTTtZQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7U0FFdEM7UUFDRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsSUFBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNMLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3JDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3JDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7aUJBQ25DO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUNsRSxJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUM7b0JBQ2pELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7aUJBQ3RDO3FCQUNHO29CQUNGLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBQzt3QkFDakQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztxQkFDdEM7eUJBQ0c7d0JBQ0YsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztxQkFDckM7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFDakMsNEJBQTRCO2FBQzdCO2lCQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7YUFDbkM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCwwQkFBMEI7UUFDdEIsSUFBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFDO1lBQ2xELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDbkM7YUFDSSxJQUFHLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUM7WUFDcEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztTQUNqQzthQUNHO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDL0QsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUM7WUFDcEQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7WUFDNUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFakQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsZUFBZSxDQUFFLENBQUM7U0FDcEc7YUFDSSxJQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBQztZQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7U0FDdkc7YUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUMzQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQ2xELElBQUksb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBRTlCLElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBQztnQkFFbkIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUUzRyxJQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO29CQUNuSyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3pHO2FBRUo7WUFFRCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUNoRixJQUFHLFVBQVUsSUFBSSxDQUFDLENBQUMsRUFBQztnQkFDbEIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDckQ7WUFFQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBRTFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7WUFDeEIsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFDO2dCQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEI7aUJBQ0ksSUFBRyxJQUFJLENBQUMsZUFBZSxFQUFDO2dCQUMzQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztTQUNGO2FBQ0ksSUFBRyxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBQztZQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDthQUNJLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQztZQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDthQUNJLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBQztZQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFHLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSyxFQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMENBQTBDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0SDthQUNJLElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQ0FBMEMsQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pIO2FBQ0ksSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCO1FBRWYsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUM7WUFDbEQsSUFBSSxpQkFBaUIsR0FBd0IsRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQztZQUVyRSw4QkFBOEI7WUFDOUIsa0RBQWtEO1lBQ2xELG1EQUFtRDtZQUNuRCxJQUFJO1lBQ0osbUNBQW1DO1lBQ25DLGlEQUFpRDtZQUNqRCxtREFBbUQ7WUFDbkQsSUFBSTtZQUNKLFFBQVE7WUFDSixpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ25ELGlCQUFpQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDdkQsSUFBSTtZQUVKLElBQUcsaUJBQWlCLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzlLLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN4RztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQ2xELElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBRWpELElBQUksUUFBUSxHQUFHLEVBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsQ0FBQztZQUN6SSxJQUFJLE1BQU0sR0FBRyxFQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUM7WUFFakksSUFBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO2dCQUNoTCxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDMUc7aUJBQ0c7Z0JBQ0EsbUJBQW1CLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDMUgsbUJBQW1CLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUN6SDtZQUdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBRTNDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO0lBRTFCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBVTtRQUN0QixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNaO2FBQU0sSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVU7UUFDdEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDYjthQUFNLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFVO1FBQzFCLGlEQUFpRDtRQUNqRCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEIsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2IsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDZjtRQUVELGtDQUFrQztRQUNsQyxnQ0FBZ0M7UUFDaEMscUJBQXFCO1FBQ3JCLHNDQUFzQztRQUN0QyxxQkFBcUI7UUFDckIsSUFBSTtRQUNKLGtDQUFrQztRQUNsQyx1Q0FBdUM7UUFDdkMsMERBQTBEO1FBQzFELElBQUk7SUFDTixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVE7UUFDdEIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO1lBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDZjtRQUVELGtDQUFrQztRQUNsQyw4QkFBOEI7UUFDOUIsdUNBQXVDO1FBQ3ZDLG9CQUFvQjtRQUNwQixzQ0FBc0M7UUFDdEMscUJBQXFCO1FBQ3JCLElBQUk7UUFDSix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLElBQUk7SUFDTixDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBa0I7UUFDcEMsSUFBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBQztZQUN4QixJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDM0M7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBa0I7UUFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUM7WUFDdEIsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDekM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDekM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQWtCO1FBQ3BDLElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFDO1lBQ3JCLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxTQUFrQjtRQUN0QyxJQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBQztZQUN2QixJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDN0M7WUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBRWQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV0QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUM7WUFDbEQsSUFBSSx5QkFBeUIsR0FBOEc7Z0JBQ3pJLFFBQVEsRUFBRSxJQUFJO2dCQUNkLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFlBQVksRUFBRSxLQUFLO2dCQUNuQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsZ0JBQWdCLEVBQUUsS0FBSzthQUN4QixDQUFDO1lBRUYsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsNEJBQTRCLENBQ3JGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQzFGLElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBRTNGLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDRCQUE0QixDQUNuRixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUNwRixJQUFJLENBQ0wsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUVyRix5QkFBeUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyx3QkFBd0I7Z0JBQ2pJLFdBQVcsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFDLENBQUM7WUFFNUYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM5RyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3RSxJQUFHLENBQUMsVUFBVSxFQUFDO2dCQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3hGO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBRTNDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsNEJBQTRCO1FBRTFCLElBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUNwRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUMxRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsZUFBZSxDQUFFLENBQUM7U0FDM0c7YUFDSSxJQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBQztZQUM3QixJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQzVHO2FBQ0ksSUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7WUFDM0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDbEU7SUFFSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFDO1lBQzFGLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztZQUM1RCxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBRTtZQUM3RCxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBRTVCLElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDRCQUE0QixDQUNwRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUMxRixJQUFJLENBQ1AsQ0FBQztRQUNGLElBQUksbUJBQW1CLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM5RixJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyw0QkFBNEIsQ0FDbEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDcEYsSUFBSSxDQUNQLENBQUM7UUFDRixJQUFJLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFeEYsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLEtBQUksSUFBSSxDQUFDLEdBQUcsRUFBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBQztZQUNwRSxJQUFHLEtBQUssSUFBSSxLQUFLLEVBQUM7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hIO2lCQUNJLElBQUcsS0FBSyxJQUFJLE1BQU0sRUFBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQ0FBMEMsQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pIO1NBQ0Y7SUFDSCxDQUFDO0lBR0Qsa0NBQWtDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBRWpDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBRXhCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFFL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFFdEMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDO3dCQUUvRCxJQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUM7NEJBQ3JHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7eUJBQ25DO3dCQUVELElBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFDOzRCQUV6QixJQUFHLEdBQUcsSUFBSSxRQUFRLEVBQUM7Z0NBQ2pCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBRXZGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOzZCQUMvRjtpQ0FDRztnQ0FDRixNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQ0FDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBRSxJQUFJLElBQUksQ0FBQyxJQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBQztvQ0FFdkssSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztpQ0FDakM7NkJBRUY7eUJBQ0Y7b0JBRUgsQ0FBQyxDQUFDLENBQUE7aUJBQ0g7WUFFSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBR0wsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFFbkQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxJQUFJLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTNELElBQUcsbUJBQW1CLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsRUFBQztvQkFDcEUsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQztvQkFDOUUsSUFBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQzt3QkFDMUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztxQkFDN0Q7b0JBRUQsSUFBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQzt3QkFFMUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3BFO2lCQUNGO3FCQUNHO29CQUNGLElBQUksSUFBSSxHQUFHLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7b0JBQzlFLElBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7d0JBQzFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO3FCQUNwRTtvQkFFRCxJQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO3dCQUUxQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO3FCQUM3RDtpQkFDRjthQUVGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVk7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVMsRUFBRSxNQUFjLEVBQUUsVUFBbUI7UUFDL0QsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxvQkFBa0QsRUFBRSxPQUFZO1FBQy9GLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBWSxFQUFDLFNBQWlCO1FBRXhDLElBQUcsU0FBUyxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBNkI7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBWSxFQUFDLEVBQU87UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE9BQVksRUFBRSxFQUFPO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLDBDQUEwQztJQUMxQyxpREFBaUQ7SUFDakQsaUVBQWlFO0lBQ2pFLGlFQUFpRTtJQUNqRSw0QkFBNEI7SUFDNUIsK0dBQStHO0lBQy9HLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLFdBQVc7SUFDWCxRQUFRO0lBQ1IsSUFBSTtJQUVKLDJCQUEyQixDQUFDLEtBQWU7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV0RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVztRQUN4QixJQUFHLEdBQUcsRUFBQztZQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0ksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQzlCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDekQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDO2FBRXZHO2lCQUNHO2dCQUNBLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1NBQ0o7YUFDRztZQUNBLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzNELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ2xDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVsRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNCLElBQUksVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUE4QztZQUNuRixJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxJQUFJLGVBQWUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxHQUFHLGVBQWUsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFpQixFQUFFLEdBQVcsRUFBRSxhQUFzQjtRQUMvRCxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixTQUFTLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsVUFBVSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7U0FDckM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBR0MsMkJBQTJCLENBQUMsY0FBc0I7UUFDOUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBQyxHQUFHLENBQUMsQ0FBQztRQUUxQyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsMEJBQTBCO1FBRXhCLElBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUNwRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUMxRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUVqRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxlQUFlLENBQUUsQ0FBQztTQUM3STthQUNJLElBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFDO1lBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUM5STthQUNJLElBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFDO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hFO0lBRUgsQ0FBQztJQUVELCtCQUErQixDQUFDLEdBQVc7UUFDekMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2xDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxFLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLEdBQUcsR0FBRztZQUNOLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbkMsWUFBWSxFQUFFLEtBQUs7WUFDbkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsZ0JBQWdCLEVBQUUsS0FBSztTQUMxQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDN0MsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZEO2FBQUs7WUFDRixJQUFJLFlBQVksR0FDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxXQUFXLEdBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxJQUFJLGdCQUFnQixHQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FDMUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FDcEQsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVaLElBQUksR0FBRyxHQUFHO2dCQUNOLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGdCQUFnQixFQUFFLGdCQUFnQjthQUNyQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVELHlDQUF5QyxDQUFDLEdBQVc7UUFDbkQsSUFBSSxZQUFZLEdBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDUCxJQUFJLFdBQVcsR0FDWCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksZ0JBQWdCLEdBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUMxQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUMxRCxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRVosSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFdEQsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdELE9BQU8sT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNILElBQUksR0FBRyxHQUFHO1lBQ04sUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDckIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1NBQ3JDLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVc7UUFDM0IsSUFBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUM7WUFDckUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQzthQUNHO1lBQ0EsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzFCLElBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFDO1lBQ3ZGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO2FBQ0c7WUFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQ3pCLElBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFDO1lBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzlCO2FBQ0c7WUFDQSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hCLElBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFDO1lBQ3ZGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzdCO2FBQ0c7WUFDQSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQ0FBZ0M7UUFDNUIsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBQztZQUNyRixxQkFBcUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUU1RyxJQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO2dCQUNuRixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBQyxZQUFZLENBQUMsQ0FBQzthQUMvRjtTQUVGO2FBQ0ksSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7WUFDdkYscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFHO2FBQ0c7WUFDRixxQkFBcUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEc7UUFFRCxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUM7WUFFbkIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTNHLElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLG9CQUFvQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7Z0JBQ25LLG9CQUFvQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN6RztTQUVKO1FBRUQsSUFBSSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBRyxVQUFVLElBQUksQ0FBQyxDQUFDLEVBQUM7WUFDbEIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsSUFBSSx5QkFBeUIsR0FBOEc7WUFDekksUUFBUSxFQUFFLElBQUk7WUFDZCxNQUFNLEVBQUUsSUFBSTtZQUNaLFlBQVksRUFBRSxLQUFLO1lBQ25CLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGdCQUFnQixFQUFFLEtBQUs7U0FDeEIsQ0FBQztRQUVGLElBQUksMEJBQTBCLENBQUM7UUFFL0IsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBQztZQUNyRiwwQkFBMEIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsSDthQUNJLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO1lBQ3ZGLDBCQUEwQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvRztRQUVELElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDRCQUE0QixDQUNyRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUMxRixJQUFJLENBQ0wsQ0FBQztRQUNGLElBQUksa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUUzRixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyw0QkFBNEIsQ0FDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDcEYsSUFBSSxDQUNMLENBQUM7UUFDRixJQUFJLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFckYseUJBQXlCLEdBQUcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsd0JBQXdCO1lBQ2pJLFdBQVcsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLElBQUksbUJBQW1CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVELElBQUksb0JBQW9CLEdBQWlDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFFeEYsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBQztZQUNyRixvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUUzRyxJQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO2dCQUNqRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQzthQUMxQztTQUVGO2FBQ0ksSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7WUFDdkYsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pHO2FBQ0c7WUFDRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUN2QyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekc7UUFFRCxJQUFHLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUM7WUFDMUQsSUFBSSxRQUFRLEdBQUcsRUFBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO1lBQ3pJLElBQUksTUFBTSxHQUFHLEVBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQztZQUVqSSxJQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7Z0JBQ2hMLG1CQUFtQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxRztpQkFDRztnQkFDQSxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMxSCxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3pIO1lBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzdFO1FBRUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCwrQkFBK0I7UUFDM0IsSUFBSSxVQUFVLENBQUM7UUFFZixJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLElBQUksUUFBUSxFQUFDO1lBQ2xELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2pHLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVGLFVBQVUsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QzthQUNHO1lBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNwSDtRQUNELElBQUksWUFBWSxHQUFHLEVBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLElBQUksaUJBQWlCLEdBQXdCLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRyxHQUFHLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDckUsSUFBSSxrQkFBa0IsR0FBd0IsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUVqRSw4QkFBOEI7UUFDOUIsa0RBQWtEO1FBQ2xELG1EQUFtRDtRQUNuRCxJQUFJO1FBQ0osbUNBQW1DO1FBQ25DLGlEQUFpRDtRQUNqRCxtREFBbUQ7UUFDbkQsSUFBSTtRQUNKLFFBQVE7UUFDSixpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ25ELGlCQUFpQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDdkQsSUFBSTtRQUVKLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUM7WUFDckYsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekcsSUFBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBQztnQkFDbkYsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7YUFDMUM7U0FDRjthQUNJLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDO1lBQ3ZGLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2RzthQUNHO1lBQ0YsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDekMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsSUFBRyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM5SyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEc7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQ0FBaUM7UUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3SCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlILElBQUksVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUUvRixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFFeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLHVCQUF1QixDQUFDO1FBQ2pHLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsa0NBQWtDO1FBQ2hDLElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7WUFDcEosSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRSx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDbkcsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0NBQWtDO1FBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNuQzthQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQ3JDO2FBQU07WUFDTCxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxnQ0FBZ0M7UUFDOUIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhHLElBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUNsRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUM5RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLGVBQWUsQ0FBRSxDQUFDO1NBQ2xHO2FBQ0ksSUFBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7U0FDckc7YUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUMzQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFhLEVBQUcsSUFBa0I7UUFDdEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixHQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQjtZQUNoRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQjtZQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdCLElBQUcsTUFBTSxDQUFDLGVBQWUsRUFBQztvQkFDeEIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDaEQsTUFBTSxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztvQkFDeEMsZ0JBQWdCO29CQUNoQixJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywyQkFBMkIsRUFBQzt3QkFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDeEQ7aUJBQ0Y7WUFDTCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFzQixDQUFDLENBQU07UUFDekIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXO1FBQzFELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxzQkFBc0I7UUFDdkUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7UUFFbkUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0IscUVBQXFFO1FBQ3JFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxpQkFBaUIsR0FBRyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzNELElBQUksY0FBYyxHQUFHLEtBQUssRUFBRTtZQUN4QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLEdBQVc7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDBCQUEwQixDQUFDLHFCQUE2QyxFQUFFLE9BQWE7UUFDckYsSUFBRyxPQUFPLEVBQUM7WUFDVCxJQUFJLENBQUMsOEJBQThCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUM5RCxJQUFJLENBQUMsOEJBQThCLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUMzRDthQUFLO1lBQ0osSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixHQUFHLHFCQUFxQixDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDNUIscUJBQXFCLEVBQUUscUJBQXFCO1lBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsOEJBQThCO1lBQ3BELFdBQVcsRUFBRSxJQUFJLENBQUMsOEJBQThCO1NBQUMsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFVO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFSCxnQ0FBZ0MsQ0FBQyxPQUFZLEVBQUUsVUFBa0I7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsK0NBQStDLENBQUMsT0FBWSxFQUFFLFVBQWtCO1FBQzlFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQVk7UUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELDBCQUEwQixDQUFDLE9BQVksRUFBRSxVQUFrQjtRQUN6RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFZLEVBQUUsRUFBVTtRQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pFLHNFQUFzRTtRQUN0RSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1RSxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkUsT0FBTyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxlQUFlLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEQsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzs7aUlBOXRFVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyxpdERDL0JqRCx5MWdFQTJoQ0E7MkZENS9CYSxvQ0FBb0M7a0JBTmhELFNBQVM7K0JBQ0UsMENBQTBDLG1CQUduQyx1QkFBdUIsQ0FBQyxNQUFNOzhNQUl0QyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRywwQ0FBMEM7c0JBQWxELEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQ0FBZ0M7c0JBQXhDLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBa0dzQixxQkFBcUI7c0JBQWpELFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwsIG1hcCwgdW5pcSwgc29ydEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5cclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBJR3RHZW5lcmFsQ29uZmlnLCBJR3RUYWJsZUhlYWRlciwgSUhlYWRlckluZm8sIElUb3RhbFJvd0luZm8gfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1ub24tZWRpdGFibGUtZ3QtbW9kZWxzJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSwgTmdiRGF0ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElXZWVrQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nbG9iYWwtZHJvcGRvd24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgR3RDb2x1bW5JY29uRW1pdHRlZERhdGEsIFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5LCAgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nZW5lcmljLWRhdGEtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNvcnRUeXBlLCBTb3J0VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1zb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgcmFkaW9CdXR0b25Nb2RlbCwgVG9vbHRpcE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IEFubmFTb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtc29ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYUZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXJBY3RpdmF0aW9uU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbWFuYWdlLXVzZXJzLm1vZGVsJztcclxuXHJcbmludGVyZmFjZSBrZXlWYWx1ZVRvb2x0aXBUeXBlIHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfTtcclxuaW50ZXJmYWNlIHRhYmxlVG9vbHRpcFR5cGUgeyB0b29sdGlwVGFibGVIZWFkZXI6IHN0cmluZ1tdLCB0b29sdGlwVGFibGVCb2R5OiBzdHJpbmdbXVtdLCB0YWJsZUhlYWRlck1zZzogc3RyaW5nW10sIHRhYmxlRm9vdGVyTXNnOiBzdHJpbmdbXSB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FubmEtY29yZS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS1saWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NrZWxldG9uTG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0YWJsZUhlYWRlcnM6IElHdFRhYmxlSGVhZGVyW107XHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBjbG9uZWRUYWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGd0R2VuZXJhbENvbmZpZzogSUd0R2VuZXJhbENvbmZpZztcclxuICBASW5wdXQoKSB0b3RhbFJvd0luZm8/OiBJVG90YWxSb3dJbmZvW107XHJcbiAgQElucHV0KCkgZ3REaW1lbnNpb246IHsgcm93SGVpZ2h0OiBudW1iZXIsIGhlYWRlckhlaWdodDogbnVtYmVyLCBkYXRhT25Ub3BIZWlnaHQ6IG51bWJlciwgbWFyZ2luRnJvbUJvdHRvbTogbnVtYmVyLCB0YWJsZUhlaWdodD86IHN0cmluZ307XHJcbiAgQElucHV0KCkgdGFibGVDbGFzczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heGltdW1Sb3dzV2hpY2hDYW5CZVJlbmRlcmVkV2l0aG91dFNjcm9sbDogbnVtYmVyID0gNTtcclxuICBASW5wdXQoKSBsaW1pdDogbnVtYmVyID0gMzA7IFxyXG4gIEBJbnB1dCgpIGluY2x1ZGVCb3JkZXJJblRhYmxlSGVpZ2h0OiBib29sZWFuID0gdHJ1ZTsgXHJcbiAgQElucHV0KCkgZG93bmxvYWRJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHBlcmNlbnREb25lOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc3RhcnJlZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2xpY2thYmxlUm93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0VGFibGVIZWlnaHRXaGVuUm93U2l6ZUlzRml4ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQm9yZGVyQm90dG9tQ2xhc3NSZXF1aXJlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZVNvbWVUZHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0ZHNIYXZlUm93U3BhbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdG9nZ2xlQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZVJvd0NoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVIZWFkZXJDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdW5kb0ljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc29ydGluZ0FwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByYWRpb0J1dHRvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkZpbHRlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RTVkdJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RUZXh0QWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RWaWV3RGV0YWlsQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWRTcG90RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xpY2thYmxlRGF0YUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbkljb25Ib3ZlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uSWNvbkhvdmVyTGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG51bWJlck9mU2tlbGV0b25Sb3dzOiBudW1iZXJbXVtdID0gQXJyYXkoMjApLmZpbGwoMCk7XHJcbiAgdGFibGVEYXRhV3JhcHBlcjogYW55W107XHJcbiAgcm93Q2hlY2tlZDogYm9vbGVhbjtcclxuICBpc0FsbFJvd3NDaGVja2VkOiBib29sZWFuO1xyXG4gIG5vRGF0YVdpZHRoOiBzdHJpbmcgPSBcIjUwJVwiO1xyXG4gIG1hcmtlZEZvckNyZWRpdFN0YXR1czogc3RyaW5nO1xyXG4gIG1hcmtlZEZvck1HU3RhdHVzOiBzdHJpbmc7XHJcblxyXG4gIC8vU29ydCBhbmQgRmlsdGVyXHJcbiAgdG9vbFRpcGRhdGE6IGFueTtcclxuICB0ZW1wVG9vbHRpcERhdGE6IGFueTtcclxuICB0b29sdGlwUmFkaW9UZXh0TWFwOiBNYXA8YW55LCBhbnk+O1xyXG4gIGZpbHRlclRhYk9iamVjdHM6IGFueVtdO1xyXG4gIHRvb2x0aXA6IGFueTtcclxuICBjbG9uZWRUb29sdGlwRGF0YTogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBTZWxlY3RlZE1hcERhdGE6IGFueTtcclxuICBzZWFyY2hCYXI6IHN0cmluZztcclxuICBkaXNhYmxlQ2xlYXJBbGxCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGRpc2FibGVDb2x1bW5DbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWxsU2VsZWN0ZWQgPSAwO1xyXG4gIHNob3dBbGw6IGJvb2xlYW47XHJcbiAgZGlzYWJsZUNoZWNrYm94QXBwbHk6IGJvb2xlYW47XHJcbiAgZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uOiBib29sZWFuO1xyXG4gIGRpc2FibGVUaW1lQXBwbHlCdXR0b246IGJvb2xlYW47XHJcblxyXG4gIC8vIFNsaWRlciBGaWx0ZXJcclxuICBzbGlkZXJNaW5WYWx1ZTogbnVtYmVyO1xyXG4gIHNsaWRlck1heFZhbHVlOiBudW1iZXI7XHJcbiAgb3B0aW9uczogT3B0aW9ucyA9IHtcclxuICAgIGZsb29yOiAwLFxyXG4gICAgY2VpbDogMCxcclxuICAgIHN0ZXA6IDAuMDFcclxuICB9O1xyXG4gIHNsaWRlclZhbHVlOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9O1xyXG4gIHNsaWRlckZpbHRlclRleHRCb3hTdGVwOiBzdHJpbmc7XHJcbiAgc2xpZGVyRW50ZXJlZE1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyRW50ZXJlZE1heFZhbHVlOiBudW1iZXI7XHJcblxyXG4gIC8vIENhbGVuZGFyIEZpbHRlclxyXG4gIGNhbGVuZGFyTWluRW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIGNhbGVuZGFyTWF4RW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWluRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgc2VsZWN0ZWRNYXhEYXRlOiBOZ2JEYXRlVHlwZTtcclxuXHJcbiAgLy9XZWVrIEZpbHRlclxyXG4gIG11bHRpV2Vla1BpY2tlckNvbmZpZzogSVdlZWtDYWxlbmRhcjtcclxuXHJcbiAgLy9UaW1lIEZpbHRlclxyXG4gIHNlbGVjdGVkRnJvbVRpbWU6IGFueVtdO1xyXG4gIHNlbGVjdGVkVG9UaW1lOiBhbnlbXTtcclxuICBjbG9uZWRTZWxlY3RlZEZyb21UaW1lOiBhbnk7XHJcbiAgY2xvbmVkU2VsZWN0ZWRUb1RpbWU6IGFueTtcclxuICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIHRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICB0b3RhbFJvd0NvbHVtbnM6IHN0cmluZ1tdID0gbnVsbDtcclxuICBzaG93TXVsdGlUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd1plcm9UaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd0VudGVyVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIG11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICB6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBlbnRlclRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgYmluZFZhbHVlRnVuY0NhbGxlZDogYm9vbGVhbjtcclxuXHJcbiAgaGllcmFyY2h5VG9vbHRpcDogeyBvcGVuOiAoKSA9PiB2b2lkOyBjbG9zZTogKCkgPT4gdm9pZDsgfTtcclxuICBzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXTtcclxuICBzaG93RmlsdGVyVG9vbHRpcFRhYnM6IGJvb2xlYW47IC8vQ2hhbmdlIHRoZSBOYW1lXHJcblxyXG4gIGlzU2Nyb2xsZWRMZWZ0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcm93Qm9yZGVyV2lkdGg6IG51bWJlciA9IDI7XHJcbiAgXHJcbiAgc2hvd1NvcnRDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RmlsdGVyQ29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGVtcFNvcnRPcmRlcjogU29ydFR5cGUgPSBudWxsO1xyXG4gICAgXHJcbiAgdG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gIGNsb25lZFRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBkaXNhYmxlU2VsZWN0QWxsOiBib29sZWFuO1xyXG4gIGRpc2FibGVDbGVhckFsbDogYm9vbGVhbjtcclxuICBzZWFyY2hJdGVtOiBzdHJpbmc7XHJcblxyXG4gIGRpc2FibGVDYWxlbmRhckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIGNhbGVuZGFyU2VsZWN0aW9uOiBhbnkgPSB7ZnJvbURhdGU6IG51bGwgLCB0b0RhdGU6IG51bGx9O1xyXG5cclxuICBzaG93U2xpZGVyTWluVmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBzaG93U2xpZGVyTWF4VmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBpc01pblRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBpc01heFRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBzZWxlY3RlZExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgc3RhcnRUaW1lTWluRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcblxyXG4gIHNhbWVUb29sdGlwQ2xpY2tlZDogYm9vbGVhbjtcclxuICBtYXJnaW5Ub3A6IHN0cmluZyA9IFwiXCI7XHJcbiAgQFZpZXdDaGlsZHJlbigndGFibGVIZWFkZXInKSB2aWV3Q2hpbGRUYWJsZUhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudDogbnVtYmVyO1xyXG4gIGlzRmlsdGVyQ2hhbmdlZDogYm9vbGVhbjtcclxuICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xyXG4gIGlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50OiBib29sZWFuO1xyXG4gIGluY29ycmVjdFNsaWRlcklucHV0OiBib29sZWFuO1xyXG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xyXG4gIGVuZDogbnVtYmVyID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgcmVuZGVyZWREYXRhOiBhbnlbXTsgXHJcbiAgc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkOiBhbnk7XHJcbiAgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQ6IHN0cmluZztcclxuICBoZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlcjogbnVtYmVyO1xyXG4gIGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzZWxlY3RlZFN0YXJyZWRPcmRlcklkOiBzdHJpbmc7XHJcbiAgVXNlckFjdGl2YXRpb25TdGF0dXMgPSBVc2VyQWN0aXZhdGlvblN0YXR1cztcclxuICB0ZXh0QWN0aW9uVG9vbHRpcDoga2V5VmFsdWVUb29sdGlwVHlwZVtdID0gW107XHJcbiAgdG9vbHRpcENvbnRhaW5pbmdUYWJsZTogdGFibGVUb29sdGlwVHlwZSA9IG51bGw7XHJcbiAgc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXI6IGJvb2xlYW47IFxyXG4gIHRhYmxlQm90dG9tQm9yZGVyQ2xhc3M6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldFRvb2x0aXBSYWRpb05hbWVzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TWFyZ2luTGVmdEZvckZpbHRlckljb24oKTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmKGNoYW5nZXMgJiYgY2hhbmdlc1tcImd0RGltZW5zaW9uXCJdICYmIGNoYW5nZXNbXCJndERpbWVuc2lvblwiXS5jdXJyZW50VmFsdWUgJiYgdGhpcy5zZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZCl7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVIZWlnaHQoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihjaGFuZ2VzW1wicGVyY2VudERvbmVcIl0gfHwgY2hhbmdlc1tcImRvd25sb2FkSW5Qcm9ncmVzc1wiXSB8fCAoIGNoYW5nZXNbXCJzdGFycmVkSW5Qcm9ncmVzc1wiXSAmJiBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCApKXtcclxuICAgICAgLy9ubyB0YXNrIHdpbGwgYmUgcGVyZm9ybWVkXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIGlmKCAodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApIHx8ICh0aGlzLnRhYmxlRGF0YS5sZW5ndGggPT0gMiAmJiB0aGlzLmNoZWNrSWZBbGxUaGVFbGVtZW50c0FyZVplcm8oKSkpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2V0dGluZyB0YWJsZSBjb2x1bW4gaGVyZSBhcyB3ZWxsIGJlY2F1c2Ugd2hpbGUgc2hvd2luZyBza2VsZXRvbiBsb2FkZXIsIHdlIHNob3VsZCBzaG93IHRhYmxlIGhlYWRlcnMuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10gJiYgIWlzRXF1YWwoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10uY3VycmVudFZhbHVlLCBjaGFuZ2VzWyd0YWJsZUhlYWRlcnMnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSA9IG5ldyBNYXAoKTtcclxuICAgICAgLy8gdGhpcy5zZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVTdGF0ZU9iamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXSAmJiBjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvbHVtbnMgPSB0aGlzLnRvdGFsUm93SW5mby5tYXAoeCA9PiB4LmNvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUJvdHRvbUJvcmRlcigpe1xyXG4gICAgaWYodGhpcy50YWJsZUJvcmRlckJvdHRvbUNsYXNzUmVxdWlyZWQgJiYgdGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoICYmIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsIDw9IHRoaXMudGFibGVEYXRhLmxlbmd0aCl7XHJcbiAgICAgIHRoaXMudGFibGVCb3R0b21Cb3JkZXJDbGFzcyA9ICdib3R0b20tYm9yZGVyJztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYmxlQm90dG9tQm9yZGVyQ2xhc3MgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkFsbFRoZUVsZW1lbnRzQXJlWmVybygpe1xyXG4gICAgIHJldHVybiAhdGhpcy50YWJsZURhdGEuc29tZShpdGVtID0+IGl0ZW0gIT0gMCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUhlaWdodCgpe1xyXG4gICAgbGV0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgbGV0IHJvd0hlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24ucm93SGVpZ2h0O1xyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0O1xyXG4gICAgbGV0IGRhdGFPblRvcEhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uZGF0YU9uVG9wSGVpZ2h0O1xyXG4gICAgbGV0IG1hcmdpbkZyb21Cb3R0b20gPSB0aGlzLmd0RGltZW5zaW9uLm1hcmdpbkZyb21Cb3R0b207XHJcblxyXG4gICAgbGV0IGhlaWdodExlZnRGb3JUYWJsZSA9IHZpZXdwb3J0SGVpZ2h0IC0gZGF0YU9uVG9wSGVpZ2h0IC0gbWFyZ2luRnJvbUJvdHRvbTtcclxuICAgIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsID1cclxuICAgICAgICBNYXRoLmNlaWwoKGhlaWdodExlZnRGb3JUYWJsZSAtIGhlYWRlckhlaWdodCAtIHJvd0hlaWdodCkgLyByb3dIZWlnaHQpICsgMTtcclxuICAgIC8vIGxldCBhY3R1YWxUYWJsZUhlaWdodCA9IGhlaWdodExlZnRGb3JUYWJsZSAtICgoaGVpZ2h0TGVmdEZvclRhYmxlIC0gaGVhZGVySGVpZ2h0IC0gcm93SGVpZ2h0KSAlIHJvd0hlaWdodCk7XHJcbiAgICBsZXQgYWN0dWFsVGFibGVIZWlnaHQgPSB2aWV3cG9ydEhlaWdodCAtIGRhdGFPblRvcEhlaWdodCAtIG1hcmdpbkZyb21Cb3R0b207XHJcbiAgICB0aGlzLmd0RGltZW5zaW9uLnRhYmxlSGVpZ2h0ID0gYCR7YWN0dWFsVGFibGVIZWlnaHR9cHhgO1xyXG5cclxuICAgIFxyXG4gICAgdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cyA9IEFycmF5KHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsKS5maWxsKDApO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0U3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRFbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJJZEFuZFJldk51bWJlclwiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhbHRlcm5hdGVPcmRlcklkXCIsIFwiQWx0L1JlcCBPcmRlciAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImdycFwiLCBcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcHBcIiwgXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiaW1wc1wiLCBcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BtXCIsIFwiQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRNR3NcIiwgXCJPZmZlcmVkIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm91dHN0YW5kaW5nUEVcIiwgXCJPL1MgUEVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZEFEVXNcIiwgXCJPZmZlcmVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWREZWZpY2l0VmFsdWVcIiwgXCJPL1MgQXVkIERlbHRhXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RW5kVGltZU11bHRpXCIsIFwiVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRWYWx1ZVwiLCBcIkJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c1wiLCBcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRhdGVcIiwgXCJEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBFcSBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIiBBdmcgUmF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFJhdGluZ3NcIiwgXCJQb3N0ZWQgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkSW1wcmVzc2lvbnNcIiwgXCJCb29rZWQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRJbXByZXNzaW9uc1wiLCBcIlBvc3RlZCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgUm91dGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJDYXRlZ29yeVwiLFwiUmV2IENhdGVnb3J5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNhc2hPclRyYWRlXCIsXCJDL1RcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25TdGFydERhdGVcIiwgXCJSZXZpc2lvbiBTdGFydCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm5hbWVcIiwgXCJuYW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJvbGVcIiwgXCJyb2xlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXRpb25Db3VudFwiLCBcInN0YXRpb25Db3VudFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGF0aW9uTGlzdFwiLCBcInN0YXRpb25MaXN0XCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RJbXBzXCIsXCJPRCBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVESW1wc1wiLFwiVUQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJPREdycFwiLFwiT0QgR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVER3JwXCIsXCJVRCBHUlBcIik7IFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVkSW1wc1BlcmNlbnRcIixcIlVEIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEdycFBlcmNlbnRcIixcIlVEIEdSUCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9kSW1wc1BlcmNlbnRcIixcIk9EIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEdycFBlcmNlbnRcIixcIk9EIEdSUCAlXCIpO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvbk51bWJlclwiLFwiUmV2aXNpb24gI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvblR5cGVcIixcIlJldmlzaW9uIFR5cGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiR2VuZXJhdGVkT25cIixcIkdlbmVyYXRlZCBPblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRWYWx1ZUZvckRpc3BsYXlcIixcIiQgQk9PS0VEXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZFZhbHVlXCIsXCIkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRTcG90c1wiLFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkR1JQXCIsXCJSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkSU1QU1JldlRhYlwiLFwiSU1QUycoMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUFBcIixcIkNQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUE1cIixcIkNQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBcHByb3ZlZE1Hc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBBcHByb3ZlZCBNR1NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRNR3NWYWx1ZVwiLFwiJCBBcHByb3ZlZCBNR1NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRBRFVzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIEFwcHJvdmVkIEFEVVNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRBRFVzVmFsdWVcIixcIiQgQXBwcm92ZWQgQURVU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckNoYW5nZXNWYWx1ZUZvckRpc3BsYXlcIixcIiQgQnV5ZXIgQ2hhbmdlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyQ2hhbmdlc1ZhbHVlXCIsXCIkIEJ1eWVyIENoYW5nZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVc2VyQ2hhbmdlc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBTZWxsZXIgVXNlciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiVXNlckNoYW5nZXNWYWx1ZVwiLFwiJCBTZWxsZXIgVXNlciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU2VsbGVyTGluZVwiLFwiU2VsbGVyIExpbmUgI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckxpbmVcIixcIkJ1eSBMaW5lICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU3BvdFN0YXR1c1wiLFwiU3BvdCBTdGF0dXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiSW52ZW50b3J5Q29kZVwiLFwiSW52ZW50b3J5IENvZGVcIik7IFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyUHJvZ3JhbU5hbWVcIixcIkJ1eWVyIFByb2dyYW0gTmFtZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZlbnVlQ2xhc3NcIixcIlJldmVudWUgQ2xhc3NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiV2Vla2x5QVVSXCIsXCIgQXZnIFJhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkUmF0ZVwiLFwiQm9va2VkIFJhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkUlRHXCIsXCJCb29rZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZElNUFNcIixcIkJvb2tlZCBJTVBTKCcwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFVUlRHXCIsXCJBdmcgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFVSU1QU1wiLFwiQXZnIElNUFMoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUG9zdGVkUmF0aW5nc09ySW1wcmVzc2lvbnNcIixcIlBvc3RlZCBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU2NoZWR1bGVGbGlnaHRXZWVrXCIsXCJTY2hlZHVsZSBXZWVrXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNjaGVkdWxlZERheVwiLFwiU2NoZWR1bGVkIERheVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBaXJTdGF0dXNcIixcIkFpciBTdGF0dXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQWlyRGF0ZUFuZFRpbWVcIixcIkFpciBEYXRlICYgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJOb3JtYWxpemVkT3JkZXJlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBCb29rZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRPcmRlcmVkSW1wcmVzc2lvbnNcIixcIk5vcm1hbGl6ZWQgQm9va2VkIElNUFMoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTm9ybWFsaXplZFBvc3RlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRQb3N0ZWRJbXByZXNzaW9uc1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgSU1QUygnMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBZElkXCIsXCJBZC1JZFwiKTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheWltcHNcIixcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheUdycFwiLFwiR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFNwb3RzRm9yRGlzcGxheVwiLFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheVNwb3RzXCIsXCJTcG90c1wiKTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZXN0aW1hdGVOb1wiLCBcIkVzdGltYXRlI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QnV5ZXJcIiwgXCJQcmltYXJ5IEJ1eWVyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByaW1hcnlCdXllck5hbWVcIiwgXCJQcmltYXJ5IEJ1eWVyXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUYWJsZURhdGFXcmFwcGVyKCkge1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhV3JhcHBlciA9IFtdO1xyXG4gICAgbGV0IHJvd09iamVjdDogYW55O1xyXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZztcclxuICAgIGxldCBjb2x1bW5PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBjb2x1bW5PYmplY3RLZXk7XHJcbiAgICBsZXQga2V5c1VzZWRGb3JUYWJsZURpc3BsYXk6IHN0cmluZ1tdO1xyXG4gICAgbGV0IGtleXNVc2VkRm9yQ29sdW1uOiBzdHJpbmdbXTtcclxuICAgIGxldCBhZGRpdGlvbmFsSW5mb09iamVjdDogeyBbeDogc3RyaW5nXTogYW55OyB9O1xyXG4gICAgbGV0IGFkZGl0aW9uYWxLZXlzO1xyXG4gICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgob2JqOiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHtcclxuICAgICAgcm93T2JqZWN0ID0ge307XHJcbiAgICAgIGtleXNVc2VkRm9yVGFibGVEaXNwbGF5ID0gW107XHJcbiAgICAgIGZvciAodmFyIGNvbE51bSBpbiB0aGlzLnRhYmxlSGVhZGVycykge1xyXG4gICAgICAgIGNvbHVtbk9iamVjdCA9IHt9O1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS52aXNpYmxlKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1uTmFtZSA9IFwiXCI7XHJcbiAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4gPSBbXTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyc1tjb2xOdW1dLmhlYWRlckluZm8uZm9yRWFjaCgoaGVhZGVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIlNUUklOR1wiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci5vYmplY3RLZXk7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2NvbHVtbk9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yVGFibGVEaXNwbGF5LnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChjb2x1bW5PYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIklDT05cIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIudHlwZU9mQm9keURhdGE7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2hlYWRlci5vYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGhlYWRlci5vYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIkNIRUNLQk9YXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c1VzZWRGb3JDb2x1bW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbHVtbk5hbWUgKz0ga2V5c1VzZWRGb3JDb2x1bW5baV07XHJcbiAgICAgICAgICBpZiAoaSAhPT0ga2V5c1VzZWRGb3JDb2x1bW4ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lICs9ICcsJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcm93T2JqZWN0W2NvbHVtbk5hbWVdID0gY29sdW1uT2JqZWN0O1xyXG4gICAgICB9XHJcbiAgICAgIGFkZGl0aW9uYWxJbmZvT2JqZWN0ID0ge307XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzID0gT2JqZWN0LmtleXMob2JqKS5maWx0ZXIoa2V5ID0+ICFrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgYWRkaXRpb25hbEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGFkZGl0aW9uYWxJbmZvT2JqZWN0W2tleV0gPSBvYmpba2V5XTtcclxuICAgICAgfSlcclxuICAgICAgcm93T2JqZWN0LkFkZGl0aW9uYWxJbmZvID0gYWRkaXRpb25hbEluZm9PYmplY3Q7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhV3JhcHBlci5wdXNoKHJvd09iamVjdCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YVdyYXBwZXI7XHJcbiAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0Q2hlY2tib3gocm93RGF0YTogYW55LCBjb2x1bW5LZXlzOiBhbnksIGlzQ2hlY2tib3hTZWxlY3RlZDogYW55KSB7XHJcbiAgICByb3dEYXRhW2NvbHVtbktleXNdID0gIXJvd0RhdGFbY29sdW1uS2V5c107XHJcbiAgICB0aGlzLnRvZ2dsZUNoZWNrYm94LmVtaXQoeyByb3dEYXRhLCBjb2x1bW5LZXlzLCBpc0NoZWNrYm94U2VsZWN0ZWQgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdEFsbFJvd3MoKSB7XHJcbiAgICB0aGlzLnRvZ2dsZUhlYWRlckNoZWNrYm94LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0Um93KHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy50b2dnbGVSb3dDaGVja2JveC5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgdW5kb0NyZWRpdGVkU3BvdChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudW5kb0ljb25DbGlja2VkLmVtaXQoeyBkYXRhLCBtZ09yQ3JlZGl0OiBcIkNyZWRpdFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgdW5kb01nU3BvdChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudW5kb0ljb25DbGlja2VkLmVtaXQoeyBkYXRhLCBtZ09yQ3JlZGl0OiBcIk1ha2VHb29kXCIgfSk7XHJcbiAgfVxyXG5cclxuICAvL1NvcnQgYW5kIEZpbHRlciBMb2dpYyBiZWdpbnMhXHJcbiAgY2xvc2VUb29sdGlwKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcCAmJiB0aGlzLnRvb2x0aXAuaXNPcGVuKCkpIHtcclxuICAgICAgdGhpcy50b29sdGlwLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IGZhbHNlO1xyXG4gICAgaWYgKCF0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQpIHtcclxuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJDbG9zZWQuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNUb29sdGlwQWN0aXZlKGhlYWRlcjogYW55W10pIHtcclxuICAgIHJldHVybiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzVG9vbHRpcEFjdGl2ZShoZWFkZXIsdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICB9XHJcblxyXG4gIGJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0b29sdGlwOiBhbnksIGhlYWRlcjogSUhlYWRlckluZm8pIHtcclxuXHJcbiAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSB0cnVlO1xyXG4gICAgLy8gbGV0IGNvbnRhaW5lclRvU2Nyb2xsO1xyXG4gICAgLy8gaWYgKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8IHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJEUlJMSVNUSU5HXCIpIHtcclxuICAgICAgLy8gY29udGFpbmVyVG9TY3JvbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2Nyb2xsYWJsZS1jb250YWluZXJcIilbMF07XHJcbiAgICAgIC8vIHZhciBtZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoXCIobWF4LXdpZHRoOiAxMzY2cHgpXCIpO1xyXG4gICAgICAvLyBpZiAobWVkaWFRdWVyeS5tYXRjaGVzKSB7XHJcbiAgICAgIC8vICAgY29udGFpbmVyVG9TY3JvbGwuc2Nyb2xsKDAsIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLnZlcnRpY2FsU2Nyb2xsT2Zmc2V0Rm9yRmlsdGVyVG9vbHRpcCk7XHJcbiAgICAgIC8vIH1cclxuICAgIC8vIH1cclxuICAgIFxyXG4gICAgLy8gaWYgc2FtZSB0b29sdGlwIG9wZW5lZCBjbG9zZSBpdFxyXG4gICAgaWYgKHRvb2x0aXAgPT0gdGhpcy50b29sdGlwKSB7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBlbmFibGVkSGVhZGVyczogYW55W10gPSBbXTtcclxuICAgICAgdGhpcy5jaGVja0lmVW5pcXVlVmFsdWVQcmVzZW50Rm9yVGhlSGVhZGVyKGhlYWRlcixlbmFibGVkSGVhZGVycyk7XHJcbiAgICAgIHRoaXMub3BlblRvb2x0aXAodG9vbHRpcCwgZW5hYmxlZEhlYWRlcnMsaGVhZGVyKTtcclxuXHJcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE1MDAgJiYgd2luZG93LmlubmVySGVpZ2h0IDwgNzY4ICYmICF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlclNldC5oYXMoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzWzBdKSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1uRmlsdGVyT3BlbmVkLmVtaXQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RmlsdGVyVG9vbHRpcFRhYnMgPSBoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXMubGVuZ3RoID4gMTtcclxuICAgICAgbGV0IGFjdGl2ZVRhYiA9IHRoaXMuZmlsdGVyVGFiT2JqZWN0c1swXTtcclxuICAgICAgdGhpcy5wb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oYWN0aXZlVGFiLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXI6IElIZWFkZXJJbmZvLCBlbmFibGVkSGVhZGVyczogYW55W10pe1xyXG4gICAgaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgZGF0YVRvQ2hlY2sgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSwgaXRlbSk7XHJcbiAgICAgIGlmKGl0ZW0gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OnsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuICAgICAgICAgIGlmKHVuaXFTdGFydERhdGUubGVuZ3RoID4gMSB8fCB1bmlxRW5kRGF0ZS5sZW5ndGggPiAxIHx8IHRoaXMuaXNUb29sdGlwQWN0aXZlKFtpdGVtXSkpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IGRhdGFUb0NoZWNrLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKTtcclxuICAgICAgICAvLyBpZiBsYXN0IGFwcGxpZWQgZmlsdGVyIGlzIHRoaXMgaGVhZGVyLCBwdXNoIGl0IGFsb3MgYXMgZW5hYmxlZEhlYWRlclxyXG4gICAgICAgIGxldCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoLTFdID09IGl0ZW0pe1xyXG4gICAgICAgICAgICBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBpZihoZWFkZXIuZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGhlYWRlci5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlblRvb2x0aXAodG9vbHRpcDogYW55LGhlYWRlcjogYW55LCBjb2x1bW5IZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMudG9vbHRpcC5vcGVuKCk7XHJcbiAgICAvL2NvbnZlcnQga2V5IGludG8gdGhlIGhlYWRlclxyXG4gICAgdGhpcy5maWx0ZXJUYWJPYmplY3RzID0gaGVhZGVyLm1hcCgoa2V5OiBzdHJpbmcsaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuaGFzKGtleSlcclxuICAgICAgICA/IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5nZXQoa2V5KVxyXG4gICAgICAgIDoga2V5OyAvL2NoYW5nZSB0byBkaXNwbGF5IG5hbWVcclxuICAgICAgcmV0dXJuIG5ldyByYWRpb0J1dHRvbk1vZGVsKGtleSwgdmFsdWUsIGNvbHVtbkhlYWRlci5pc1NvcnRSZXF1aXJlZFtpbmRleF0sIGNvbHVtbkhlYWRlci5pc0ZpbHRlclJlcXVpcmVkW2luZGV4XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jbGVhckNvbHVtbkZpbHRlcigpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIikpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgaGVhZGVyID0gYWN0aXZlVGFiLmtleTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IGFjdGl2ZVRhYi5sYWJlbDtcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGZhbHNlOyBcclxuICAgIHRoaXMuc2VhcmNoSXRlbSA9IG51bGw7XHJcbiAgICBcclxuICAgIFxyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG5cclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XHJcbiAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCk7XHJcbiAgICBpZihyZWxvYWQpe1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckRhdGFBbmRDYWxsQ3JlYXRlVG9vbHRpcGRhdGFGdW5jKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgfSwgMTAwKTsgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2V0RmlsdGVyRGF0YUFuZENhbGxDcmVhdGVUb29sdGlwZGF0YUZ1bmMoYWN0aXZlVGFiLCBoZWFkZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyRGF0YUFuZENhbGxDcmVhdGVUb29sdGlwZGF0YUZ1bmMoYWN0aXZlVGFiOnJhZGlvQnV0dG9uTW9kZWwsIGhlYWRlcjpzdHJpbmcpe1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgdGhpcy5jcmVhdGVGaWx0ZXJUb29sdGlwRGF0YShoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FsZW5kYXJEYXRhKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFNsaWRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRpbWVTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGVja2JveERhdGEoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKXtcclxuICAgIGxldCBzZWxlY3RlZEZpbHRlclNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5KTtcclxuXHJcbiAgICBsZXQgY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPSB0aGlzLmdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTtcclxuICAgIGxldCBpc1NvcnRQcmVzZW50ID0gKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSAmJiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2l6ZSA+IDAgJiYgY3VycmVudENvbHVtblNvcnRGaWx0ZXIgIT0gU29ydFR5cGVFbnVtLkRFRkFVTFQpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gc2VsZWN0ZWRGaWx0ZXJTZXQuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgfHwgaXNTb3J0UHJlc2VudCA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldFNsaWRlckRhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlT3B0aW9uc0ZvclNsaWRlcihoZWFkZXIpO1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFJhbmdlRm9yU2xpZGVyKGhlYWRlcik7XHJcbiAgICBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dFbXB0eVNwYWNlRm9yU2xpZGVyID0gZmFsc2U7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG5cclxuICAgIGxldCB0cmFuc2xhdGVGdW5jO1xyXG4gICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0aGlzLmlzTWF4VGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyQ3VycmVuY3lTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwiY3VycmVuY3lcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoaGVhZGVyID09IFwicG9zdGVkQXVkUGVyY2VudFwiKXtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwicGVyY2VudFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcIm5vcm1hbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgdHJ1ZSk7XHJcbiAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKG9wdGlvbnNEYXRhLCBoZWFkZXIsIGZhbHNlKTtcclxuXHJcbiAgICBsZXQgb2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZXRPcHRpb25WYWx1ZXMobWluVmFsdWUsbWF4VmFsdWUpO1xyXG4gICAgXHJcbiAgICBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJub3JtYWxcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLm5vcm1hbFRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVGdW5jID09PSBcInBlcmNlbnRcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnBlcmNlbnRUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJjdXJyZW5jeVwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY3VycmVuY3lUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvYmo7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3RlcCA9IDE7XHJcbiAgICB0aGlzLnNsaWRlckZpbHRlclRleHRCb3hTdGVwID0gXCIxXCI7XHJcbiAgICBpZiAoaGVhZGVyICE9PSBcIldlZWtOdW1iZXJcIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc3RlcCA9IDAuMDE7XHJcbiAgICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjAuMDFcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgdGhpcy5zbGlkZXJNaW5WYWx1ZSA9IHNlbGVjdGVkT2JqLm1pbiA8IHRoaXMub3B0aW9ucy5mbG9vciA/IHRoaXMub3B0aW9ucy5mbG9vciA6IHNlbGVjdGVkT2JqLm1pbjtcclxuICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHNlbGVjdGVkT2JqLm1heCA8IHRoaXMub3B0aW9ucy5jZWlsID8gc2VsZWN0ZWRPYmoubWF4IDogdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlOyAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgIH1cclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGVja2JveERhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgdG9vbHRpcE9wdGlvbnMgPSB0aGlzLmNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXIpOyAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gc29ydEJ5KHRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCksXCJ2YWx1ZVwiKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCksXCJ2YWx1ZVwiKTtcclxuICAgICAgICBcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMgPSBbLi4uc2VsZWN0ZWRJdGVtcywgLi4udW5zZWxlY3RlZEl0ZW1zXTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgXHJcbiAgICBsZXQgbWFyZ2luID0gNTtcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gZGF0YUxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAobWFyZ2luICogZGF0YUxlbmd0aCkgKyBtYXJnaW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCB1bmlxT3B0aW9uRGF0YSA9IHVuaXEob3B0aW9uRGF0YS5tYXAoaXRlbSA9PiBpdGVtW2hlYWRlcl0pKTtcclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHVuaXFPcHRpb25EYXRhLm1hcCgoaXRlbSxpbmRleCkgPT4gbmV3IFRvb2x0aXBNb2RlbChpdGVtLGluZGV4KzEpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zLGhlYWRlcik7XHJcbiAgICBsZXQgaW5kZXggPSB0b29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09IG51bGwpO1xyXG4gICAgXHJcbiAgICBpZihpbmRleCAhPSAtMSl7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zW2luZGV4XS5sYWJlbCA9IFwiKEJsYW5rKVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXSxoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVTZXQuaGFzKGl0ZW0udmFsdWUpID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRhdGEoKSB7XHJcbiAgICBjb25zdCBwYXJzaW5nRm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlLCBwYXJzaW5nRm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpe1xyXG4gICAgXHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIFxyXG4gICAgbGV0IG1pbk1heERhdGU7XHJcbiAgICAvL1doZW4geW91IHdhbnQgdG8gdXNlIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSBjb21iaW5lZCBhcyBzaW5nbGUgY29sdW1uIHRoZW4gdXNlIFBlcmlvZC5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1pbk1heERhdGU7XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YTogYW55W10pe1xyXG4gICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgcmV0dXJuIFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZTogYW55W10sIHBhcnNpbmdGb3JtYXQ6IHN0cmluZyl7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgdGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZU9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMF0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmouZnJvbURhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmoudG9EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVsxXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1pbkRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1heERhdGUpO1xyXG5cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRnJvbVRpbWUgIT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRUb1RpbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5mb3JtYXRUb1R3ZWx2ZUhycyh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRydWUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgfVxyXG5cclxuICAgICBpZih0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiUkFUSU5HXCIpe1xyXG4gICAgICB0aGlzLnNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXIpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vTmVlZCB0byBjaGFuZ2UgdGhpcyBtZXRob2RcclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXI6IHN0cmluZyl7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSA9PSBcIjxtdWx0aT5cIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlTXVsdGk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcblxyXG4gICAgICBpZih0aGlzLnNob3daZXJvVGltZUNoZWNrYm94IHx8IHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94KSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdICE9IFwiPG11bHRpPlwiICYmIG9ialtoZWFkZXJdWzBdICE9IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc2VsZWN0VW5zZWxlY3RDaGVja2JveChkYXRhOiBUb29sdGlwTW9kZWwpIHtcclxuICAgIGRhdGEuaXNTZWxlY3RlZCA9ICFkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT0gZGF0YS5pZCk7XHJcbiAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gZGF0YS5pc1NlbGVjdGVkO1xyXG4gICAgICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuXHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9ICBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBtaW5WYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09ICcwJykge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgbWF4VmFsdWVDaGFuZ2VkKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsIHx8IHZhbCA9PSBcIjBcIikge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikgfHwgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLnNob3dNYXhFcnJvciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpe1xyXG4gICAgICBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5ICYmIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZSBpZih0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yIHx8IHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3Ipe1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZXtcclxuICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgIH1cclxuICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gIH1cclxuXHJcbiAgaXNWYWx1ZUluUmFuZ2UodmFsOiBudW1iZXIpe1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mbG9vciA8PSB2YWwgJiYgdmFsIDw9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZVNsaWRlckFwcGx5QnRuKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICF0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2xpZGVyVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0geyBtaW46IHRoaXMuc2xpZGVyTWluVmFsdWUsIG1heDogdGhpcy5zbGlkZXJNYXhWYWx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2xpZGVyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5hcHBseUxpc3RGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5TGlzdEZpbHRlcnMoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkodGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcclxuXHJcbiAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGJsYW5rSW5kZXggPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5maW5kSW5kZXgoKGl0ZW06IHN0cmluZykgPT4gaXRlbSA9PSBudWxsKTtcclxuICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgXHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRNYXAoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpe1xyXG4gICAgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZyhrZXk6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJBU0NcIil7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVGQVVMVFwiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnQoKSB7XHJcbiAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBUb29sdGlwRGF0YSk7XHJcbiAgICB0aGlzLnRvb2xUaXBkYXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50b29sVGlwZGF0YSkge1xyXG4gICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJbkRhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU29ydE1hcCgpe1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hcHBseURhdGVGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJTZWxlY3Rpb247XHJcbiAgICAgIFxyXG4gICAgICBsZXQgZnJvbURhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5kYXl9O1xyXG4gICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlKSk7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVdlZWtGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGluY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclswXSkgPCAxMikge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pICsgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRIb3VyKGFycjogYW55W10pIHtcclxuICAgIGlmIChhcnJbMF0gPT0gXCJcIikge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA+IDEpIHtcclxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYXJyWzBdKSAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY3JlbWVudE1pbnV0ZShhcnI6IGFueVtdKSB7XHJcbiAgLy8gaW5jcmVtZW50IHRvIG5lYXJlc3QgcHJvcGVyIGludGVydmFsKDE1LDMwLDQ1KVxyXG4gIGxldCBtaW4gPSBwYXJzZUludChhcnJbMV0pXHJcbiAgICBpZiAobWluIDw9IDE0KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMTVcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDE1ICYmIG1pbiA8PSAyOSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjMwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAzMCAmJiBtaW4gPD0gNDQpIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gNDUpIHtcclxuICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgKyAxNTtcclxuICAgIC8vIGlmIChwYXJzZUludChhcnJbMV0pID09IDYwKSB7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgLy8gfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmKHBhcnNlSW50KGFyclsxXSkgPiA2MCl7XHJcbiAgICAvLyAgICAgbGV0IHJlcyA9IHBhcnNlSW50KGFyclsxXSkgLSA2MDtcclxuICAgIC8vICAgICBhcnJbMV0gPSByZXMgPCAxMCA/IGAwJHtyZXN9YCA6IHJlcy50b1N0cmluZygpOyAgICBcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGRlY3JlbWVudE1pbnV0ZShhcnI6IGFueSkge1xyXG4gICAgbGV0IG1pbiA9IHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICBpZiAobWluID4gMCAmJiBtaW4gPD0gMTUpIHtcclxuICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMTYgJiYgbWluIDw9IDMwKSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMTVcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDMxICYmIG1pbiA8PSA0NSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjMwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+IDQ1IHx8IG1pbiA9PSAwKSB7XHJcbiAgICAgIGFyclsxXSA9IFwiNDVcIjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhcnJbMV0gPSBwYXJzZUludChhcnJbMV0pIC0gMTU7XHJcbiAgICAvLyBpZiAocGFyc2VJbnQoYXJyWzFdKSA8IDApIHtcclxuICAgIC8vICAgICBsZXQgcmVzID0gNjAgKyBwYXJzZUludChhcnJbMV0pO1xyXG4gICAgLy8gICAgIGFyclsxXSA9IHJlcztcclxuICAgIC8vIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSAwKSB7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSBpZihhcnJbMV0gPCAxMCl7XHJcbiAgICAvLyAgICAgYXJyWzFdPSBgMCR7YXJyWzFdfWA7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTdGFydFRpbWVIb3VyKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkVG9UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhcnRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6NTlcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiYgIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgKSYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ICYmICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShkYXlqcyhzdGFydFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KS5pc0FmdGVyKGRheWpzKGVuZFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KSkpOyAgICAgICAgXHJcbiAgfVxyXG5cclxuICBzb3J0ZWREYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09IFwibm9uZVwiKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKSB7XHJcbiAgICBmb3IobGV0IFtrZXksdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpe1xyXG4gICAgICBpZih2YWx1ZSA9PSBcIkFTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodmFsdWUgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpIHtcclxuICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgXHJcbiAgICAgIGhlYWRlci5oZWFkZXJJbmZvLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvd1Rvb2x0aXBJY29uKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBpdGVtLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYXRlc3RGaWx0ZXJzID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYobGF0ZXN0RmlsdGVycy5sZW5ndGggPiAwICYmIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uICYmIGxhdGVzdEZpbHRlcnNbbGF0ZXN0RmlsdGVycy5sZW5ndGggLSAxXSA9PSBrZXkpe1xyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIGlmKGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9ICh1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSkgPyBmYWxzZSA6IHRydWU7IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVba2V5XSk7XHJcbiAgICAgICAgICAgICAgICBpZiggKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSkgfHwgKGl0ZW0uZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSkpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgXHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpe1xyXG4gICAgbGV0IGVsZW1lbnRBcnIgPSB0aGlzLnZpZXdDaGlsZFRhYmxlSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICBlbGVtZW50QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGNoaWxkRGl2RWxlbWVudHMgPSBpdGVtLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY2hpbGREaXZFbGVtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgIGxldCBmaXJzdFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblswXTtcclxuICAgICAgICBsZXQgc2Vjb25kUGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggPiBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCl7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGF0YVJvd0NsaWNrZWQocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHJhZGlvQnV0dG9uQ2xpY2tlZChkYXRhOiBhbnksIGFjdGlvbjogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGVkLmVtaXQoeyBkYXRhLCBhY3Rpb24gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXSwgdG9vbHRpcDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUb29sdGlwICYmIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKSB7XHJcbiAgICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxsZXJHcm91cEhpZXJhcmNoeSA9IHNlbGxlckdyb3VwSGllcmFyY2h5O1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWNvbkNsYXNzOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZihcIm9yZGVySWRcIiBpbiByb3dEYXRhICYmIGljb25DbGFzcy5pbmNsdWRlcyhcIm1kaS1zdGFyXCIpICl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFycmVkT3JkZXJJZCA9IHJvd0RhdGEub3JkZXJJZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmd0SWNvbkNsaWNrZWQuZW1pdCh7ZGF0YTogcm93RGF0YSxpY29uQ2xhc3M6IGljb25DbGFzc30pO1xyXG4gIH1cclxuXHJcbiAgc3ZnSWNvbkNsaWNrZWQoZGF0YTogR3RDb2x1bW5JY29uRW1pdHRlZERhdGEpe1xyXG4gICAgdGhpcy5ndFNWR0ljb25DbGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB0ZXh0QWN0aW9uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWQ6IGFueSl7XHJcbiAgICB0aGlzLmd0VGV4dEFjdGlvbkNsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhLCBpZDogaWR9KTtcclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkT25TdHJpbmdJY29uQWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIGlkOiBhbnkpe1xyXG4gICAgdGhpcy5ndFRleHRBY3Rpb25DbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3RGV0YWlsc0NsaWNrZWQocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMuZ3RWaWV3RGV0YWlsQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGF9KTtcclxuICB9XHJcblxyXG4gIC8vIHNldENvbHVtblNvcnRTdGF0ZU1hcCgpe1xyXG4gIC8vICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gIC8vICAgICAgIGNvbHVtbi5oZWFkZXJJbmZvLmZvckVhY2goIChoZWFkZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbiAmJiBoZWFkZXIuaXNTb3J0UmVxdWlyZWQpe1xyXG4gIC8vICAgICAgICAgICAgICAgaGVhZGVyLmlzU29ydFJlcXVpcmVkLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmKGl0ZW0pe1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzW2luZGV4XSwgXCJERUZBVUxUXCIpOyAgXHJcbiAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKXtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1bkNoZWNrQWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpe1xyXG4gICAgICBpZihzdHIpe1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0ci50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmJvbGRTdHJpbmcoZWxlbWVudC5sYWJlbCxzdHIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgYm9sZFN0cmluZyhzdHI6IHN0cmluZywgZmluZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXhlcyA9IHRoaXMuZ2V0SW5kaWNlc09mKGZpbmQsIHN0ciwgZmFsc2UpO1xyXG4gICAgXHJcbiAgICBpbmRleGVzLmZvckVhY2goKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGl0ZW0gKyAoaW5kZXggKiA3KTsgLy9NdWx0aXBseWluZyBieSA3IGFzIHRoZXJlIGFyZSA3Y2hhcjogPGI+PC9iPlxyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmaW5kLmxlbmd0aDtcclxuICAgICAgICBsZXQgc3RyVG9CZVJlcGxhY2VkID0gc3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2Uoc3RyVG9CZVJlcGxhY2VkLCBcIjxiPlwiICsgc3RyVG9CZVJlcGxhY2VkICsgXCI8L2I+XCIpOyBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuZ2V0SW5kaWNlc09mKHNlYXJjaFN0cjogc3RyaW5nLCBzdHI6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdmFyIHNlYXJjaFN0ckxlbiA9IHNlYXJjaFN0ci5sZW5ndGg7XHJcbiAgICBpZiAoc2VhcmNoU3RyTGVuID09IDApIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IDAsIGluZGV4LCBpbmRpY2VzID0gW107XHJcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICgoaW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHIsIHN0YXJ0SW5kZXgpKSA+IC0xKSB7XHJcbiAgICAgICAgaW5kaWNlcy5wdXNoKGluZGV4KTtcclxuICAgICAgICBzdGFydEluZGV4ID0gaW5kZXggKyBzZWFyY2hTdHJMZW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kaWNlcztcclxufVxyXG5cclxuXHJcbiAgcmVtb3ZlQm9sZEVsZW1lbnRGcm9tU3RyaW5nKG9yaWdpbmFsU3RyaW5nOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgZmlyc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCc8Yj4nLCdnJyk7XHJcbiAgICAgIGxldCBzZWNvbmRSZWdFeHAgPSBuZXcgUmVnRXhwKCc8L2I+JywnZycpO1xyXG5cclxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoZmlyc3RSZWdFeHAsJycpO1xyXG4gICAgICByZXR1cm4gcmV0LnJlcGxhY2Uoc2Vjb25kUmVnRXhwLCcnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoZWRJdGVtKCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9yVGhlSXRlbShcIlwiKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyRGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpIHtcclxuXHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgIXRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsb25lZFRhYmxlRGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKG9iaikgPT4gIVtcIlwiLCBcIi1cIiwgbnVsbCwgXCIwXCIsIFwiPG11bHRpPlwiXS5pbmNsdWRlcyhvYmpba2V5XSkpO1xyXG5cclxuICAgIGxldCB0aW1lQXJyID0gbWFwKGRhdGEsIGtleSk7XHJcbiAgICB0aW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBmcm9tVGltZTogdGltZUFyclswXSxcclxuICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIikge1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5KTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgICBsZXQgaW5jbHVkZU11bHRpID1cclxuICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldICE9IFwiMFwiICYmIG9ialtrZXldICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogdGltZUFyclt0aW1lQXJyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgICAgICBpbmNsdWRlTXVsdGk6IGluY2x1ZGVNdWx0aSxcclxuICAgICAgICAgICAgaW5jbHVkZVplcm86IGluY2x1ZGVaZXJvLFxyXG4gICAgICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBpbmNsdWRlVGltZVJhbmdlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KGtleSwgb2JqKTtcclxuICAgIH1cclxufVxyXG5cclxuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5OiBzdHJpbmcpe1xyXG4gIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV1bMF0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XVswXSAhPSBcIjBcIiAmJiBvYmpba2V5XVswXSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG5cclxuICAgICAgICBsZXQgc3RhcnRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0VGltZVwiKTtcclxuICAgICAgICBsZXQgZW5kVGltZUFyciA9IG1hcCh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJlbmRUaW1lXCIpO1xyXG5cclxuICAgICAgICBzdGFydFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVuZFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVEZXNjZW5kaW5nKGEsIGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBzdGFydF90aW1lID0gc3RhcnRUaW1lQXJyW3N0YXJ0VGltZUFyci5maW5kSW5kZXgoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQgIT09IG51bGwgJiYgZWxlbWVudCAhPT0gJyc7XHJcbiAgICAgICAgfSldXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHN0YXJ0X3RpbWUsXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAhKyh2YWwpIHx8IDEgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiAxMil7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggIT0gMiAgfHwgKCErKHZhbCkgJiYgdmFsICE9IFwiMDBcIikgfHwgMCA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDU5KXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lSG91ckNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCA9PSAwIHx8ICErKHZhbCkgfHwgMSA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDEyKXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCAhPSAyICB8fCAoISsodmFsKSAmJiB2YWwgIT0gXCIwMFwiKSB8fCAwID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gNTkpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgICBsZXQgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgICAgaWYoIXRoaXMuc2VhcmNoSXRlbSAmJiBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICAgIGlmKGJsYW5rSW5kZXggIT0gLTEpe1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChjdXJyZW50U2VsZWN0ZWRWYWx1ZSxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyOiB7ZnJvbVRpbWU6IHN0cmluZywgdG9UaW1lOnN0cmluZywgaW5jbHVkZU11bHRpOiBib29sZWFuLCBpbmNsdWRlWmVybzogYm9vbGVhbiwgaW5jbHVkZVRpbWVSYW5nZTogYm9vbGVhbn0gPSB7XHJcbiAgICAgICAgZnJvbVRpbWU6IG51bGwsXHJcbiAgICAgICAgdG9UaW1lOiBudWxsLFxyXG4gICAgICAgIGluY2x1ZGVNdWx0aTogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVplcm86IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXI7XHJcbiAgXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG5cclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIsIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7ICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24pO1xyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZERhdGU6IHtmcm9tRGF0ZTogYW55LCB0b0RhdGU6IGFueX0gPSB7ZnJvbURhdGU6IG51bGwsIHRvRGF0ZTogbnVsbH07XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlICYmIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKXtcclxuICAgICAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUsZnJvbURhdGUpICYmIGlzRXF1YWwodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlLHRvRGF0ZSkgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2VsZWN0ZWREYXRlLGN1cnJlbnRTZWxlY3RlZERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsVmFsdWVNYXBGb3JEYXRlRmlsdGVyKCl7XHJcbiAgICAgICAgbGV0IG1pbk1heERhdGU7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgICAgIGxldCBtaW5TdGFydERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnREYXRlXCIpO1xyXG4gICAgICAgICAgbGV0IG1heEVuZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGUgPSB7ZnJvbURhdGU6IG1pbk1heERhdGVbMF0sIHRvRGF0ZTogbWluTWF4RGF0ZVsxXX07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2VsZWN0ZWREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogbnVsbCAsIG1heDogbnVsbH07XHJcbiAgICAgIGxldCBwcmV2aW91c1NsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBcIlwiLCBtYXg6IFwiXCJ9O1xyXG5cclxuICAgICAgLy8gaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2UgaWYodGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlO1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NsaWRlckRhdGEsY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCl7XHJcbiAgICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdHJ1ZSk7XHJcbiAgICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgZmFsc2UpO1xyXG4gICAgICBsZXQgc2xpZGVyRGF0YSA9IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9O1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBzbGlkZXJEYXRhKTtcclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IHRoaXMuZ2V0Q29sdW1uU29ydFN0YXRlRm9yU2VsZWN0ZWRSYWRpbygpO1xyXG5cclxuICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy50ZW1wU29ydE9yZGVyICE9IG51bGwgJiYgdGhpcy50ZW1wU29ydE9yZGVyICE9IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTogc3RyaW5nIHtcclxuICAgICAgbGV0IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlICYmIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSAmJlxyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPyBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA6IFNvcnRUeXBlRW51bS5ERUZBVUxUO1xyXG4gICAgICByZXR1cm4gY3VycmVudENvbHVtblNvcnRGaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpe1xyXG4gICAgICBsZXQgaGVhZGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCl7XHJcbiAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpIDogW107XHJcbiAgICAgICAgXHJcbiAgICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlUb29sdGlwTW9kZWxJZChpbmRleDogbnVtYmVyICwgaXRlbTogVG9vbHRpcE1vZGVsKXtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlU3RhdGVPYmplY3QoKXtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgPSAgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzXHJcbiAgICAgID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVcclxuICAgICAgOiB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmhlYWRlckluZm8uZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICBoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXMgPSBrZXk7XHJcbiAgICAgICAgICAgICAgLy8gQU5OQS00MTEzIGZpeFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2tleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXNldEZpbHRlclNvcnRBY3RpdmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElzRGlmZmVyZW5jZSh2YWx1ZTogYm9vbGVhbil7XHJcbiAgICAgIHRoaXMuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEluZGV4KCl7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGFibGVDb250YWluZXJTY3JvbGwoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdGFibGVWaWV3SGVpZ2h0ID0gZS50YXJnZXQub2Zmc2V0SGVpZ2h0OyAvLyB2aWV3cG9ydFxyXG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsSGVpZ2h0ID0gZS50YXJnZXQuc2Nyb2xsSGVpZ2h0OyAvLyBsZW5ndGggb2YgYWxsIHRhYmxlXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXBPblNjcm9sbCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMTUwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDE1MDtcclxuICAgICAgICBjb25zdCBsaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gYnVmZmVyO1xyXG4gICAgICAgIGlmIChzY3JvbGxMb2NhdGlvbiA+IGxpbWl0KSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IHRoaXMucmVuZGVyZWREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFibGVEYXRhKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+PSBzdGFydCAmJiBpbmRleCA8IGVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlSW5kZXgoKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMuZW5kO1xyXG4gICAgICAgIHRoaXMuZW5kID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpe1xyXG4gICAgICB0aGlzLnJlc2V0SW5kZXgoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLmdldFRhYmxlRGF0YSh0aGlzLnN0YXJ0LHRoaXMuZW5kKTtcclxuICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKHBhcmVudENoaWxkT3JUb3RhbFJvdzogXCJEQVRBUk9XXCIgfCBcIlRPVEFMUk9XXCIsIHJvd2RhdGE/OiBhbnkgKSB7XHJcbiAgICAgIGlmKHJvd2RhdGEpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gcm93ZGF0YS5pbnZlbnRvcnlDb2RlSWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgPSByb3dkYXRhLmRlbW9ncmFwaGljO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID0gcGFyZW50Q2hpbGRPclRvdGFsUm93O1xyXG4gICAgICB0aGlzLmRvd25sb2FkU3BvdERldGFpbHMuZW1pdCh7XHJcbiAgICAgICAgcGFyZW50Q2hpbGRPclRvdGFsUm93OiBwYXJlbnRDaGlsZE9yVG90YWxSb3csXHJcbiAgICAgICAgaW52ZW50b3J5Q29kZUlkOiB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCxcclxuICAgICAgICBkZW1vZ3JhcGhpYzogdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWR9KVxyXG4gIH1cclxuXHJcbiAgdGFibGVDb250YWluZXJTY3JvbGxlZChldmVudDogYW55KXtcclxuICAgICAgdGhpcy5pc1Njcm9sbGVkTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgICAgdGhpcy5yZW1vdmVUb29sdGlwT25TY3JvbGwoKTtcclxuICAgIH1cclxuICBcclxuICBtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07IFxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25JY29uSG92ZXIuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWVudGVyXCJ9KVxyXG4gIH1cclxuXHJcbiAgbW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGVDb250YWluaW5nVGFibGUocm93RGF0YTogYW55LCB0b29sdGlwS2V5OiBzdHJpbmcgKXtcclxuICAgIHRoaXMudG9vbHRpcENvbnRhaW5pbmdUYWJsZSA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBtb3VzZUxlYXZlVGV4dEFjdGlvblR5cGUocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uSWNvbkhvdmVyTGVhdmUuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWxlYXZlXCJ9KSAgXHJcbiAgfVxyXG5cclxuICBtb3VzZUVudGVyT25UZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrYWJsZURhdGFDbGlja2VkKFJvd2RhdGE6IGFueSwgaWQ6IG51bWJlcil7XHJcbiAgICAgIHRoaXMuY2xpY2thYmxlRGF0YUNsaWNrZWQuZW1pdCh7ZGF0YTogUm93ZGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUb29sdGlwT25TY3JvbGwoKXtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInJlbWFya3MtaW5mby10b29sdGlwXCIpO1xyXG4gICAgLy8gY29uc3QgdG9vbHRpcEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRvb2x0aXBcIik7XHJcbiAgICBjb25zdCBndFRvb2x0aXAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiKTtcclxuICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0b29sdGlwXCIpO1xyXG5cclxuICAgIHdoaWxlIChlbGVtZW50cyAmJiBlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKHRvb2x0aXBFbGVtZW50cyAmJiB0b29sdGlwRWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0b29sdGlwRWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoZ3RUb29sdGlwICYmIGd0VG9vbHRpcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGd0VG9vbHRpcFswXS5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7Z3RHZW5lcmFsQ29uZmlnPy50YWJsZU91dGVyQ29udGFpbmVyTmFtZX19IHt7dGFibGVCb3R0b21Cb3JkZXJDbGFzc319XCIgW25nQ2xhc3NdPVwieyAnc2Nyb2xsLWxlZnQtc2hhZG93LWVmZmVjdCc6IGlzU2Nyb2xsZWRMZWZ0LCAnY2xpY2thYmxlLXJvdyc6IGNsaWNrYWJsZVJvdyB9XCIgKHNjcm9sbCk9XCJvblRhYmxlQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBbY2xhc3NdPVwiZ3RHZW5lcmFsQ29uZmlnLnRhYmxlQ29udGFpbmVyTmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXNjcm9sbC1mb3ItdGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGhlaWdodDpcclxuICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5sZW5ndGggPCBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGxcclxuICAgICAgICAgICAgICAgICAgICA/ICdjYWxjKCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICgoZ3REaW1lbnNpb24ucm93SGVpZ2h0KSAqIHRhYmxlRGF0YS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIXRhYmxlRGF0YS5sZW5ndGggfHwgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0ICsgZ3REaW1lbnNpb24ucm93SGVpZ2h0KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi50YWJsZUhlaWdodFxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImd0XCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZW5kZXJlZERhdGFcIj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJ0YWJsZUNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLmhlYWRlckhlaWdodFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG90YWwtcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLnJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidG90YWxSb3dDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93U2tlbGV0b25Mb2FkaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICF0YWJsZURhdGEubGVuZ3RoICkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAoIXNob3dTa2VsZXRvbkxvYWRpbmcgJiYgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvdylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJyb3dEYXRhLmd0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3JkZXItdHInOiAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3dEYXRhOyBjb2x1bW5zOiB0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIihjbGljayk9XCJkYXRhUm93Q2xpY2tlZChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sTmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdG90YWxSb3dJbmZvOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uY29sc3BhblwiIGNsYXNzPVwie3tjb2x1bW4uY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5bJ2lzQWN0aW9uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGRhdGEgb2YgY29sdW1uLmFjdGlvbkRhdGFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrYWJsZURhdGFDbGlja2VkKHt9LCBkYXRhLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW5bJ2lzQWN0aW9uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjb2x1bW4uZGF0YSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmxvd2VyRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uY29sTmFtZSA9PSAndG90YWwtcG90ZW50aWFsLWJvb2tlZC11bml0JyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY29sdW1uTG93ZXJEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZS1kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3BvdERldGFpbHNEb3dubG9hZENsaWNrZWQoJ1RPVEFMUk9XJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjb2x1bW4ubG93ZXJEYXRhIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZEluUHJvZ3Jlc3MgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZCA9PSAnVE9UQUxST1cnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNpcmN1bGFyUHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uTG93ZXJEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5sb3dlckRhdGEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIGluZm8tbGFiZWxcIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LXRvdGFsLXJvdy10b29sdGlwXCIgcGxhY2VtZW50PVwiYm90dG9tXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNQUlOIFJPVyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleVwiICpuZ0Zvcj1cImxldCBjb2x1bW5EZWYgb2YgdGFibGVIZWFkZXJzOyAgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggI3RhYmxlSGVhZGVyIG5vd3JhcCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW3N0eWxlLndpZHRoXT1cImNvbHVtbkRlZi53aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMFwiICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgY29sdW1uRGVmLmhlYWRlckluZm87IGxldCBqID0gaW5kZXg7XCI+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ1NUUklORydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndXBwZXItbGFiZWwnOiBqID09PSAwLCAnbG93ZXItbGFiZWwnOiBqID09PSAxIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoZWFkZXIubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdpbXBzSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiaW1wc0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRpbmdJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGluZ0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3JhdGVJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGVJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIm9uZ29pbmdSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogZ3RHZW5lcmFsQ29uZmlnLmRpc2FibGVIZWFkZXJDaGVja2JveCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5zaG93QWxsQ29sdW1uRmlsdGVyXCIgY2xhc3M9XCJzb3J0LWZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgdG9vbHRpcCBGdW5jdGlvbmFsaXR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLCAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJmaWx0ZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcCBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtY2hlY2tib3gtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdTTElERVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRlUGlja2VyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LWRhdGVwaWNrZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDI9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDIsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1dFRUsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIndlZWtQaWNrZXJUb29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MywgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnVElNRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC10aW1lLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQ0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGVhZGVyLnNob3dUb29sdGlwSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwibm8tZmlsdGVyLXNwYWNlXCI+PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2x1clZpb2xhdGlvbkluZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwibHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBbc3R5bGUuYmFja2dyb3VuZF09XCJST1dfREFUQS5iYWNrZ3JvdW5kQ29sb3JcIiBcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIlJPV19EQVRBLmJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e1JPV19EQVRBLnJvd0NsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5ICsgJ1Jvd3NwYW4nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNvbWVUZHMgfHwoIGhpZGVTb21lVGRzICYmICFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1za2VsZXRvbi1sb2FkZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dTa2VsZXRvbkxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURhdGEubGVuZ3RoID4gMCAmJiAhKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3ViTGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udHlwZU9mQm9keURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIShzdGFycmVkSW5Qcm9ncmVzcyAmJiBST1dfREFUQS5vcmRlcklkID09IHNlbGVjdGVkU3RhcnJlZE9yZGVySWQpXCIgW2NsYXNzXT1cIlJPV19EQVRBLmljb25DbGFzc1wiIChjbGljayk9XCJpY29uQ2xpY2tlZChST1dfREFUQSxST1dfREFUQS5pY29uQ2xhc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgUk9XX0RBVEEuaWNvblRpdGxlVGV4dCB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LWljb24tY29sdW1uLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhcnJlZEluUHJvZ3Jlc3MgJiYgUk9XX0RBVEEub3JkZXJJZCA9PSBzZWxlY3RlZFN0YXJyZWRPcmRlcklkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWZvci1idXR0b24tZGlyZWN0aXZlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OX0NFTEwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRlYW0tdXNlci10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbbmdiVG9vbHRpcF09XCJ1c2VyTG9nZ2VkSW5EZXRhaWxzXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLCBhY3Rpb24uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIWFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uc2hvd09iamVjdEtleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hUTUxfU1RSSU5HJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiUk9XX0RBVEEubWVzc2FnZVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTVkdfSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YW5uYS1jb3JlLWFubmEtaWNvbi1jb2x1bW4gW2NvbXBvbmVudE5hbWVdPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudFwiIFtkYXRhT2JqZWN0XT1cIlJPV19EQVRBXCIgW2ljb25Ub1Nob3ddPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldIFwiIChvbkNvbHVtbkljb25DbGlja2VkKT1cInN2Z0ljb25DbGlja2VkKCRldmVudClcIj48L2FubmEtY29yZS1hbm5hLWljb24tY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidURVhUX0FDVElPTlMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5hY3Rpb25LZXldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRleHQuc2hvd1Rvb2x0aXBcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3t0ZXh0LmNsYXNzfX1cIiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25UZXh0QWN0aW9uVHlwZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJ0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJndC1pY29uLWNvbHVtbi10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXRleHQuc2hvd1Rvb2x0aXBcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3t0ZXh0LmNsYXNzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGV4dC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmlzRGlzYWJsZWRLZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIVJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0xJQ0tBQkxFX0RBVEEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0ZXh0IG9mIFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uYWN0aW9uS2V5XVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInRleHQuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2thYmxlRGF0YUNsaWNrZWQoUk9XX0RBVEEsIHRleHQuaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRVbml0cycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZS1kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1jbGlja2FibGUtZGF0YSc6IGRvd25sb2FkSW5Qcm9ncmVzcyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBST1dfREFUQS5kaXNwbGF5Qm9va2VkVW5pdHN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkSW5Qcm9ncmVzcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuaW52ZW50b3J5Q29kZUlkID09IHNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTVFJJTkdfX19JQ09OX09SX1RFWFRfQUNUSU9OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5hY3Rpb25LZXldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7IGFjdGlvbi5hZGRpdGlvbmFsVGV4dEJlZm9yZUxpbmsgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJndC1pY29uLWNvbHVtbi10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbZGlzYWJsZVRvb2x0aXBdPVwiIWFjdGlvbi5lbmFibGVUb29sdGlwRm9yQWRkaXRpb25hbFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24uYWRkaXRpb25hbFRleHRCZWZvcmVMaW5rIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbiAmJiBhY3Rpb24udHlwZU9mRGF0YT09ICdTVFJJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24uZGF0YSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtpZF09XCJhY3Rpb24uaWRcIiAqbmdJZj1cImFjdGlvbi5zaG93TGlua1wiIChjbGljayk9XCJ0ZXh0QWN0aW9uQ2xpY2tlZChST1dfREFUQSwgYWN0aW9uLmlkKVwiIFtjbGFzc109XCJhY3Rpb24ubGlua0NsYXNzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkTGlua31cIj57e2FjdGlvbi5kYXRhfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnNob3dUb29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHkgJiYgYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHkubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0aW9uLnNob3dJY29uXCIgW2NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkSWNvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZUNvbnRhaW5pbmdUYWJsZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRvb2x0aXAtY29udGFpbmluZy10YWJsZSByZW1vdmUtb24tc2Nyb2xsLWNsYXNzXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcENvbnRhaW5pbmdUYWJsZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRJY29ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpY29uQ2xpY2tlZE9uU3RyaW5nSWNvbkFjdGlvblR5cGUoUk9XX0RBVEEsIGFjdGlvbi5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJhY3Rpb24udG9vbHRpcFBsYWNlbWVudCA/IGFjdGlvbi50b29sdGlwUGxhY2VtZW50IDogJ2JvdHRvbSBhdXRvJ1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIiB0b29sdGlwQ2xhc3M9XCJ0ZWFtLXVzZXItdG9vbHRpcCByZW1vdmUtb24tc2Nyb2xsLWNsYXNzIHt7IGFjdGlvblsndG9vbHRpcENsYXNzJ10gfX1cIiBbbmdiVG9vbHRpcF09XCJ1c2VyTG9nZ2VkSW5EZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRJY29ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaWNvbkNsaWNrZWRPblN0cmluZ0ljb25BY3Rpb25UeXBlKFJPV19EQVRBLCBhY3Rpb24uaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSFRNTCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSQURJTydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyByYWRpb0J1dHRvbi5jbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvQnV0dG9uLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgKm5nSWY9XCIhbGFzdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSAhPSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2ludmVudG9yeUNvZGUnICYmIFJPV19EQVRBWydpc1NlbGxlckdyb3VwJ10gJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHNlbGxlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNlbGxlckhpZXJhcmNoeVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5mbz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiaGllcmFyY2h5LXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChST1dfREFUQS5zZWxsZXJHcm91cEhpZXJhcmNoeSwgaW5mbylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZEF2ZXJhZ2VSYXRpbmcnICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgJiYgUk9XX0RBVEFbJ3Nob3dSYXRpbmdBdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRJbXBEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBSZWY6IHt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdQREYnIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdFWENFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5Eb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5hY3Rpdml0eW5hbWUudG9Mb3dlckNhc2UoKSA9PSAnb3JkZXIgb25ib2FyZGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnTElOSydcIiAoY2xpY2spPVwidmlld0RldGFpbHNDbGlja2VkKFJPV19EQVRBKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG4gb3JkZXItb25ib2FyZGVkXCI+VmlldyBkZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gdmlld0RldGFpbHNBbmRFbWFpbEJ0blwiPlZpZXcgZW1haWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tudWxsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YW5uYS1jb3JlLW5vLWRhdGEtbGliIFt3aWR0aF09XCJub0RhdGFXaWR0aFwiIFttYXJnaW5Ub3BdPVwibWFyZ2luVG9wXCIgKm5nSWY9XCIoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKVwiPiA8L2FubmEtY29yZS1uby1kYXRhLWxpYj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENoZWNrYm94IHRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2x0aXA+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydmdWxsLXdpZHRoJzogZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPT0gMX1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJUYWJPYmplY3RzXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXNvcnRcIiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCI+XHJcbiAgICAgICAgPGFubmEtY29yZS1zb3J0LWxpYiAgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgICAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVDbGVhckFsbFwiIChjbGljayk9XCJ1bkNoZWNrQWxsQ2hlY2tib3goKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVTZWxlY3RBbGxcIiAoY2xpY2spPVwic2VsZWN0QWxsQ2hlY2tib3goKVwiPlNlbGVjdCBhbGw8L2J1dHRvbj5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzZWFyY2gtYm94XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLXNlYXJjaCBzZWFyY2gtaWNvbiBzZWFyY2gtaWNvbi1wb3NpdGlvblwiPjwvaT5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hGb3JUaGVJdGVtKCRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktY2xvc2Ugc2VhcmNoLWJhci1jbG9zZVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1jbG9zZS1pY29uJzogKCFzZWFyY2hJdGVtIHx8IHNlYXJjaEl0ZW0ubGVuZ3RoID09IDApIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hlZEl0ZW0oKVwiPjwvaT5cclxuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRyYWNrIEJ5IGZ1bmMgLS0+XHJcbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIxOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXJcIiBjbGFzcz1cImRyb3Bkb3duLWRhdGEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8cCAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2YgdG9vbHRpcE9wdGlvbnNcIiBjbGFzcz1cImlucHV0IGV4YW1wbGUtaXRlbVwiIChjbGljayk9XCJzZWxlY3RVbnNlbGVjdENoZWNrYm94KG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveCBjaGVjay1ib3hcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhb3B0aW9uLmlzU2VsZWN0ZWRcIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJtaSBtZGktY2hlY2stYm94LW91dGxpbmUtYmxhbmsgY2hlY2stYm94IHVuY2hlY2tlZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIiB0aXRsZT1cInt7IG9wdGlvbi52YWx1ZSB9fVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmxhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHBvaW50ZXItZXZlbnRzOm5vbmVcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lciBjaGVja2JveC1maWx0ZXItYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPnt7IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPT0gdG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRvb2x0aXBPcHRpb25zLmxlbmd0aCAhPSAwICYmICFzZWFyY2hJdGVtPyAnQWxsICgnKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknOiAnKCcgKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknIH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzaG93LW1pbic6IHNsaWRlck1pblZhbHVlICE9IG9wdGlvbnMuZmxvb3IsICdzaG93LW1heCc6IHNsaWRlck1heFZhbHVlICE9IG9wdGlvbnMuY2VpbH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJFbnRlcmVkTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2hpZ2hWYWx1ZV09XCJzbGlkZXJFbnRlcmVkTWF4VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgICAgID48L25neC1zbGlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTcGFjZUZvclNsaWRlclwiIGNsYXNzPVwic2xpZGVyLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlsxLTEyXSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cih0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lTWluRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsxXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlswLTU5XSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiAuMjVweDtcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+VG88L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzBdXCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBlbmRUaW1lSG91ckVycn1cIiAobmdNb2RlbENoYW5nZSk9XCJlbmRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMS0xMl0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogZW5kVGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzFdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZU1pbkNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMC01OV0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogLjI1cHg7XCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwiY29sb3I6IGJsYWNrO3doaXRlLXNwYWNlOiBub3dyYXA7XCI+VGhpcyBwcmVlbXB0aW9uIGlzIHJlamVjdGVkIGFuZCBub3QgbWFya2VkIGZvciBjcmVkaXQuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRpbmdJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwiZmlyc3Qtcm93XCI+U2hvd3MgJ0Jvb2tlZCBSYXRpbmcnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIj5TaG93cyAnUHJvamVjdGVkIFJhdGluZycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbXBzSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBJTVBTJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgSU1QUycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXA+XHJcbiAgICA8cCBjbGFzcz1cInNwb3QtY29sdW1uLXRvb2x0aXAtbWVzc2FnZVwiID5UaGlzIGNvbnNpc3RzIG9mIGVxdWl2YWxpemVkIHNwb3RzIGFuZCB1bi1lcXVpdmFsaXplZCBQYWlkIFByb2dyYW1zICYgdW4tZXF1aXZhbGl6ZWQgTm9uLXNwb3RzLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmF0ZUluZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3MgPVwiZmlyc3Qtcm93XCIgPlNob3dzICdCb29rZWQgUmF0ZScgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiID5TaG93cyAnUHJvamVjdGVkICQgVmFsdWUnIGZvciBBRFUgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VsbGVySGllcmFyY2h5VG9vbHRpcD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3MgPSBcImhpZXJhcmNoeS10YWJsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzZWxsZXItaGllcmFyY2h5LXRhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+IzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkludmVudG9yeSBDb2RlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPlByb2dyYW0vRGVzY3JpcHRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGxlckdyb3VwSGllcmFyY2h5OyBsZXQgdG9vbHRpcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdG9vbHRpcEluZGV4ICsgMSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzaG93RWxsaXBzaXNUZXh0T25Ib3Zlcj57eyBkYXRhLkludmVudG9yeUNvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHNob3dFbGxpcHNpc1RleHRPbkhvdmVyPnt7IGRhdGEuUHJvZ3JhbSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsbGVyR3JvdXBIaWVyYXJjaHkubGVuZ3RoID09IDBcIj5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMDAwXCI+U2VsbGVyIGdyb3VwIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgaW52ZW50b3J5IGNvZGU8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+VGhlIHZhbHVlcyBhcmUgZm9yIHRoZSBlbnRpcmUgd2Vlay48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bvc3RlZFJhdGluZ0RpZmZlcmVuY2U+XHJcbiAgICA8cCBjbGFzcz1cImRpZmZlcmVuY2UtdGV4dFwiPlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zdGVkIGFuZCBib29rZWQgYXZlcmFnZSByYXRpbmcgaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkSW1wRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIGltcHJlc3Npb24gaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUsIFNwb3RzLCBHUlAsIENQUCwgSU1QUywgQ1BNIGNvcnJlc3BvbmRzIG9uIHRoZSBsYXN0IHBlcm1hbmVudCByZXZpc2lvbiBnZW5lcmF0ZWQ8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUgY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2lyY3VsYXJQcm9ncmVzc0Jhcj5cclxuICAgIDxjaXJjbGUtcHJvZ3Jlc3NcclxuICAgICAgICBbcGVyY2VudF09XCJwZXJjZW50RG9uZVwiXHJcbiAgICAgICAgW3JhZGl1c109XCI1XCJcclxuICAgICAgICBbc2hvd1RpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCJcclxuICAgICAgICBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICBbc3BhY2VdPVwiLTNcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjMjY4YmZmJ1wiXHJcbiAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJyNkNWQ1ZDUnXCJcclxuICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMTBcIlxyXG4gICAgPjwvY2lyY2xlLXByb2dyZXNzPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdXNlckxvZ2dlZEluRGV0YWlscz5cclxuICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1kaXYtY29udGFpbmVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmtleSAhPSAncmVhZCdcIj4gICAgICAgIFxyXG4gICAgICB7eyBkYXRhLmtleSB9fSA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5rZXkgPT0gJ3JlYWQnXCI+ICAgICAgICBcclxuICAgICAgICAgICA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWFya0FzUmVhZFRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWRpdi1jb250YWluZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0ZXh0QWN0aW9uVG9vbHRpcFwiPlxyXG4gICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGV4dEFjdGlvblRvb2x0aXBcIj5cclxuICAgICB7eyBkYXRhLmtleSB9fSA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250YWluaW5nVGFibGVUZW1wbGF0ZT5cclxuICA8ZGl2ICpuZ0lmPVwidG9vbHRpcENvbnRhaW5pbmdUYWJsZVwiIGNsYXNzPVwidG9vbHRpcC1kaXYtY29udGFpbmVyXCI+XHJcbiAgICA8dWw+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaGVhZGVyTXNnIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudGFibGVIZWFkZXJNc2dcIj5cclxuICAgICAgICA8Yj4ge3toZWFkZXJNc2d9fSAgPC9iPlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0b29sdGlwLXRhYmxlXCI+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0b29sdGlwQ29udGFpbmluZ1RhYmxlLnRvb2x0aXBUYWJsZUhlYWRlclwiPlxyXG4gICAgICAgICAgICB7eyBoZWFkZXJ9fVxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG4gICAgICA8dGJvZHk+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3dzIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudG9vbHRpcFRhYmxlQm9keVwiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJvd3NcIj5cclxuICAgICAgICAgICAge3sgZGF0YSB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8dWw+XHJcbiAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjBcIiAqbmdGb3I9XCJsZXQgZm9vdGVyTXNnIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudGFibGVGb290ZXJNc2dcIj5cclxuICAgICAgICB7eyBmb290ZXJNc2cgfX0gXHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgIHt7IGRhdGEua2V5IH19IDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
1959
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFHOUgsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlC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QkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQ0FBZ0M7c0JBQXhDLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBa0dzQixxQkFBcUI7c0JBQWpELFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwsIG1hcCwgdW5pcSwgc29ydEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5cclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBJR3RHZW5lcmFsQ29uZmlnLCBJR3RUYWJsZUhlYWRlciwgSUhlYWRlckluZm8sIElUb3RhbFJvd0luZm8gfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1ub24tZWRpdGFibGUtZ3QtbW9kZWxzJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSwgTmdiRGF0ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElXZWVrQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nbG9iYWwtZHJvcGRvd24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgR3RDb2x1bW5JY29uRW1pdHRlZERhdGEsIFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5LCAgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nZW5lcmljLWRhdGEtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNvcnRUeXBlLCBTb3J0VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1zb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgcmFkaW9CdXR0b25Nb2RlbCwgVG9vbHRpcE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IEFubmFTb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtc29ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYUZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXJBY3RpdmF0aW9uU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbWFuYWdlLXVzZXJzLm1vZGVsJztcclxuXHJcbmludGVyZmFjZSBrZXlWYWx1ZVRvb2x0aXBUeXBlIHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfTtcclxuaW50ZXJmYWNlIHRhYmxlVG9vbHRpcFR5cGUgeyB0b29sdGlwVGFibGVIZWFkZXI6IHN0cmluZ1tdLCB0b29sdGlwVGFibGVCb2R5OiBzdHJpbmdbXVtdLCB0YWJsZUhlYWRlck1zZzogc3RyaW5nW10sIHRhYmxlRm9vdGVyTXNnOiBzdHJpbmdbXSB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FubmEtY29yZS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS1saWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NrZWxldG9uTG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0YWJsZUhlYWRlcnM6IElHdFRhYmxlSGVhZGVyW107XHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBjbG9uZWRUYWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGd0R2VuZXJhbENvbmZpZzogSUd0R2VuZXJhbENvbmZpZztcclxuICBASW5wdXQoKSB0b3RhbFJvd0luZm8/OiBJVG90YWxSb3dJbmZvW107XHJcbiAgQElucHV0KCkgZ3REaW1lbnNpb246IHsgcm93SGVpZ2h0OiBudW1iZXIsIGhlYWRlckhlaWdodDogbnVtYmVyLCBkYXRhT25Ub3BIZWlnaHQ6IG51bWJlciwgbWFyZ2luRnJvbUJvdHRvbTogbnVtYmVyLCB0YWJsZUhlaWdodD86IHN0cmluZ307XHJcbiAgQElucHV0KCkgdGFibGVDbGFzczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heGltdW1Sb3dzV2hpY2hDYW5CZVJlbmRlcmVkV2l0aG91dFNjcm9sbDogbnVtYmVyID0gNTtcclxuICBASW5wdXQoKSBsaW1pdDogbnVtYmVyID0gMzA7IFxyXG4gIEBJbnB1dCgpIGluY2x1ZGVCb3JkZXJJblRhYmxlSGVpZ2h0OiBib29sZWFuID0gdHJ1ZTsgXHJcbiAgQElucHV0KCkgZG93bmxvYWRJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHBlcmNlbnREb25lOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc3RhcnJlZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2xpY2thYmxlUm93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0VGFibGVIZWlnaHRXaGVuUm93U2l6ZUlzRml4ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQm9yZGVyQm90dG9tQ2xhc3NSZXF1aXJlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZVNvbWVUZHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0ZHNIYXZlUm93U3BhbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdG9nZ2xlQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZVJvd0NoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVIZWFkZXJDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdW5kb0ljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc29ydGluZ0FwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByYWRpb0J1dHRvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkZpbHRlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RTVkdJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RUZXh0QWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RWaWV3RGV0YWlsQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWRTcG90RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xpY2thYmxlRGF0YUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbkljb25Ib3ZlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uSWNvbkhvdmVyTGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG51bWJlck9mU2tlbGV0b25Sb3dzOiBudW1iZXJbXVtdID0gQXJyYXkoMjApLmZpbGwoMCk7XHJcbiAgdGFibGVEYXRhV3JhcHBlcjogYW55W107XHJcbiAgcm93Q2hlY2tlZDogYm9vbGVhbjtcclxuICBpc0FsbFJvd3NDaGVja2VkOiBib29sZWFuO1xyXG4gIG5vRGF0YVdpZHRoOiBzdHJpbmcgPSBcIjUwJVwiO1xyXG4gIG1hcmtlZEZvckNyZWRpdFN0YXR1czogc3RyaW5nO1xyXG4gIG1hcmtlZEZvck1HU3RhdHVzOiBzdHJpbmc7XHJcblxyXG4gIC8vU29ydCBhbmQgRmlsdGVyXHJcbiAgdG9vbFRpcGRhdGE6IGFueTtcclxuICB0ZW1wVG9vbHRpcERhdGE6IGFueTtcclxuICB0b29sdGlwUmFkaW9UZXh0TWFwOiBNYXA8YW55LCBhbnk+O1xyXG4gIGZpbHRlclRhYk9iamVjdHM6IGFueVtdO1xyXG4gIHRvb2x0aXA6IGFueTtcclxuICBjbG9uZWRUb29sdGlwRGF0YTogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBTZWxlY3RlZE1hcERhdGE6IGFueTtcclxuICBzZWFyY2hCYXI6IHN0cmluZztcclxuICBkaXNhYmxlQ2xlYXJBbGxCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGRpc2FibGVDb2x1bW5DbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWxsU2VsZWN0ZWQgPSAwO1xyXG4gIHNob3dBbGw6IGJvb2xlYW47XHJcbiAgZGlzYWJsZUNoZWNrYm94QXBwbHk6IGJvb2xlYW47XHJcbiAgZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uOiBib29sZWFuO1xyXG4gIGRpc2FibGVUaW1lQXBwbHlCdXR0b246IGJvb2xlYW47XHJcblxyXG4gIC8vIFNsaWRlciBGaWx0ZXJcclxuICBzbGlkZXJNaW5WYWx1ZTogbnVtYmVyO1xyXG4gIHNsaWRlck1heFZhbHVlOiBudW1iZXI7XHJcbiAgb3B0aW9uczogT3B0aW9ucyA9IHtcclxuICAgIGZsb29yOiAwLFxyXG4gICAgY2VpbDogMCxcclxuICAgIHN0ZXA6IDAuMDFcclxuICB9O1xyXG4gIHNsaWRlclZhbHVlOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9O1xyXG4gIHNsaWRlckZpbHRlclRleHRCb3hTdGVwOiBzdHJpbmc7XHJcbiAgc2xpZGVyRW50ZXJlZE1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyRW50ZXJlZE1heFZhbHVlOiBudW1iZXI7XHJcblxyXG4gIC8vIENhbGVuZGFyIEZpbHRlclxyXG4gIGNhbGVuZGFyTWluRW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIGNhbGVuZGFyTWF4RW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWluRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgc2VsZWN0ZWRNYXhEYXRlOiBOZ2JEYXRlVHlwZTtcclxuXHJcbiAgLy9XZWVrIEZpbHRlclxyXG4gIG11bHRpV2Vla1BpY2tlckNvbmZpZzogSVdlZWtDYWxlbmRhcjtcclxuXHJcbiAgLy9UaW1lIEZpbHRlclxyXG4gIHNlbGVjdGVkRnJvbVRpbWU6IGFueVtdO1xyXG4gIHNlbGVjdGVkVG9UaW1lOiBhbnlbXTtcclxuICBjbG9uZWRTZWxlY3RlZEZyb21UaW1lOiBhbnk7XHJcbiAgY2xvbmVkU2VsZWN0ZWRUb1RpbWU6IGFueTtcclxuICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIHRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICB0b3RhbFJvd0NvbHVtbnM6IHN0cmluZ1tdID0gbnVsbDtcclxuICBzaG93TXVsdGlUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd1plcm9UaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd0VudGVyVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIG11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICB6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBlbnRlclRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgYmluZFZhbHVlRnVuY0NhbGxlZDogYm9vbGVhbjtcclxuXHJcbiAgaGllcmFyY2h5VG9vbHRpcDogeyBvcGVuOiAoKSA9PiB2b2lkOyBjbG9zZTogKCkgPT4gdm9pZDsgfTtcclxuICBzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXTtcclxuICBzaG93RmlsdGVyVG9vbHRpcFRhYnM6IGJvb2xlYW47IC8vQ2hhbmdlIHRoZSBOYW1lXHJcblxyXG4gIGlzU2Nyb2xsZWRMZWZ0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcm93Qm9yZGVyV2lkdGg6IG51bWJlciA9IDI7XHJcbiAgXHJcbiAgc2hvd1NvcnRDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RmlsdGVyQ29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGVtcFNvcnRPcmRlcjogU29ydFR5cGUgPSBudWxsO1xyXG4gICAgXHJcbiAgdG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gIGNsb25lZFRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBkaXNhYmxlU2VsZWN0QWxsOiBib29sZWFuO1xyXG4gIGRpc2FibGVDbGVhckFsbDogYm9vbGVhbjtcclxuICBzZWFyY2hJdGVtOiBzdHJpbmc7XHJcblxyXG4gIGRpc2FibGVDYWxlbmRhckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIGNhbGVuZGFyU2VsZWN0aW9uOiBhbnkgPSB7ZnJvbURhdGU6IG51bGwgLCB0b0RhdGU6IG51bGx9O1xyXG5cclxuICBzaG93U2xpZGVyTWluVmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBzaG93U2xpZGVyTWF4VmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBpc01pblRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBpc01heFRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBzZWxlY3RlZExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgc3RhcnRUaW1lTWluRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcblxyXG4gIHNhbWVUb29sdGlwQ2xpY2tlZDogYm9vbGVhbjtcclxuICBtYXJnaW5Ub3A6IHN0cmluZyA9IFwiXCI7XHJcbiAgQFZpZXdDaGlsZHJlbigndGFibGVIZWFkZXInKSB2aWV3Q2hpbGRUYWJsZUhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudDogbnVtYmVyO1xyXG4gIGlzRmlsdGVyQ2hhbmdlZDogYm9vbGVhbjtcclxuICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xyXG4gIGlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50OiBib29sZWFuO1xyXG4gIGluY29ycmVjdFNsaWRlcklucHV0OiBib29sZWFuO1xyXG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xyXG4gIGVuZDogbnVtYmVyID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgcmVuZGVyZWREYXRhOiBhbnlbXTsgXHJcbiAgc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkOiBhbnk7XHJcbiAgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQ6IHN0cmluZztcclxuICBoZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlcjogbnVtYmVyO1xyXG4gIGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzZWxlY3RlZFN0YXJyZWRPcmRlcklkOiBzdHJpbmc7XHJcbiAgVXNlckFjdGl2YXRpb25TdGF0dXMgPSBVc2VyQWN0aXZhdGlvblN0YXR1cztcclxuICB0ZXh0QWN0aW9uVG9vbHRpcDoga2V5VmFsdWVUb29sdGlwVHlwZVtdID0gW107XHJcbiAgdG9vbHRpcENvbnRhaW5pbmdUYWJsZTogdGFibGVUb29sdGlwVHlwZSA9IG51bGw7XHJcbiAgc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXI6IGJvb2xlYW47IFxyXG4gIHRhYmxlQm90dG9tQm9yZGVyQ2xhc3M6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldFRvb2x0aXBSYWRpb05hbWVzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TWFyZ2luTGVmdEZvckZpbHRlckljb24oKTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmKGNoYW5nZXMgJiYgY2hhbmdlc1tcImd0RGltZW5zaW9uXCJdICYmIGNoYW5nZXNbXCJndERpbWVuc2lvblwiXS5jdXJyZW50VmFsdWUgJiYgdGhpcy5zZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZCl7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVIZWlnaHQoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihjaGFuZ2VzW1wicGVyY2VudERvbmVcIl0gfHwgY2hhbmdlc1tcImRvd25sb2FkSW5Qcm9ncmVzc1wiXSB8fCAoIGNoYW5nZXNbXCJzdGFycmVkSW5Qcm9ncmVzc1wiXSAmJiBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCApKXtcclxuICAgICAgLy9ubyB0YXNrIHdpbGwgYmUgcGVyZm9ybWVkXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIGlmKCAodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApIHx8ICh0aGlzLnRhYmxlRGF0YS5sZW5ndGggPT0gMiAmJiB0aGlzLmNoZWNrSWZBbGxUaGVFbGVtZW50c0FyZVplcm8oKSkpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2V0dGluZyB0YWJsZSBjb2x1bW4gaGVyZSBhcyB3ZWxsIGJlY2F1c2Ugd2hpbGUgc2hvd2luZyBza2VsZXRvbiBsb2FkZXIsIHdlIHNob3VsZCBzaG93IHRhYmxlIGhlYWRlcnMuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10gJiYgIWlzRXF1YWwoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10uY3VycmVudFZhbHVlLCBjaGFuZ2VzWyd0YWJsZUhlYWRlcnMnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSA9IG5ldyBNYXAoKTtcclxuICAgICAgLy8gdGhpcy5zZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVTdGF0ZU9iamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXSAmJiBjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvbHVtbnMgPSB0aGlzLnRvdGFsUm93SW5mby5tYXAoeCA9PiB4LmNvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUJvdHRvbUJvcmRlcigpe1xyXG4gICAgaWYodGhpcy50YWJsZUJvcmRlckJvdHRvbUNsYXNzUmVxdWlyZWQgJiYgdGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoICYmIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsIDw9IHRoaXMudGFibGVEYXRhLmxlbmd0aCl7XHJcbiAgICAgIHRoaXMudGFibGVCb3R0b21Cb3JkZXJDbGFzcyA9ICdib3R0b20tYm9yZGVyJztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYmxlQm90dG9tQm9yZGVyQ2xhc3MgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkFsbFRoZUVsZW1lbnRzQXJlWmVybygpe1xyXG4gICAgIHJldHVybiAhdGhpcy50YWJsZURhdGEuc29tZShpdGVtID0+IGl0ZW0gIT0gMCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUhlaWdodCgpe1xyXG4gICAgbGV0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgbGV0IHJvd0hlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24ucm93SGVpZ2h0O1xyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0O1xyXG4gICAgbGV0IGRhdGFPblRvcEhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uZGF0YU9uVG9wSGVpZ2h0O1xyXG4gICAgbGV0IG1hcmdpbkZyb21Cb3R0b20gPSB0aGlzLmd0RGltZW5zaW9uLm1hcmdpbkZyb21Cb3R0b207XHJcblxyXG4gICAgbGV0IGhlaWdodExlZnRGb3JUYWJsZSA9IHZpZXdwb3J0SGVpZ2h0IC0gZGF0YU9uVG9wSGVpZ2h0IC0gbWFyZ2luRnJvbUJvdHRvbTtcclxuICAgIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsID1cclxuICAgICAgICBNYXRoLmNlaWwoKGhlaWdodExlZnRGb3JUYWJsZSAtIGhlYWRlckhlaWdodCAtIHJvd0hlaWdodCkgLyByb3dIZWlnaHQpICsgMTtcclxuICAgIC8vIGxldCBhY3R1YWxUYWJsZUhlaWdodCA9IGhlaWdodExlZnRGb3JUYWJsZSAtICgoaGVpZ2h0TGVmdEZvclRhYmxlIC0gaGVhZGVySGVpZ2h0IC0gcm93SGVpZ2h0KSAlIHJvd0hlaWdodCk7XHJcbiAgICBsZXQgYWN0dWFsVGFibGVIZWlnaHQgPSB2aWV3cG9ydEhlaWdodCAtIGRhdGFPblRvcEhlaWdodCAtIG1hcmdpbkZyb21Cb3R0b207XHJcbiAgICB0aGlzLmd0RGltZW5zaW9uLnRhYmxlSGVpZ2h0ID0gYCR7YWN0dWFsVGFibGVIZWlnaHR9cHhgO1xyXG5cclxuICAgIFxyXG4gICAgdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cyA9IEFycmF5KHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsKS5maWxsKDApO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0U3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRFbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJJZEFuZFJldk51bWJlclwiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhbHRlcm5hdGVPcmRlcklkXCIsIFwiQWx0L1JlcCBPcmRlciAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImdycFwiLCBcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcHBcIiwgXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiaW1wc1wiLCBcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BtXCIsIFwiQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRNR3NcIiwgXCJPZmZlcmVkIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm91dHN0YW5kaW5nUEVcIiwgXCJPL1MgUEVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZEFEVXNcIiwgXCJPZmZlcmVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWREZWZpY2l0VmFsdWVcIiwgXCJPL1MgQXVkIERlbHRhXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RW5kVGltZU11bHRpXCIsIFwiVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRWYWx1ZVwiLCBcIkJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c1wiLCBcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRhdGVcIiwgXCJEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBFcSBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIiBBdmcgUmF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFJhdGluZ3NcIiwgXCJQb3N0ZWQgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkSW1wcmVzc2lvbnNcIiwgXCJCb29rZWQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRJbXByZXNzaW9uc1wiLCBcIlBvc3RlZCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgUm91dGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJDYXRlZ29yeVwiLFwiUmV2IENhdGVnb3J5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNhc2hPclRyYWRlXCIsXCJDL1RcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25TdGFydERhdGVcIiwgXCJSZXZpc2lvbiBTdGFydCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm5hbWVcIiwgXCJuYW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJvbGVcIiwgXCJyb2xlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXRpb25Db3VudFwiLCBcInN0YXRpb25Db3VudFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGF0aW9uTGlzdFwiLCBcInN0YXRpb25MaXN0XCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RJbXBzXCIsXCJPRCBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVESW1wc1wiLFwiVUQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJPREdycFwiLFwiT0QgR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVER3JwXCIsXCJVRCBHUlBcIik7IFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVkSW1wc1BlcmNlbnRcIixcIlVEIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEdycFBlcmNlbnRcIixcIlVEIEdSUCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9kSW1wc1BlcmNlbnRcIixcIk9EIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEdycFBlcmNlbnRcIixcIk9EIEdSUCAlXCIpO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvbk51bWJlclwiLFwiUmV2aXNpb24gI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvblR5cGVcIixcIlJldmlzaW9uIFR5cGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiR2VuZXJhdGVkT25cIixcIkdlbmVyYXRlZCBPblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRWYWx1ZUZvckRpc3BsYXlcIixcIiQgQk9PS0VEXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZFZhbHVlXCIsXCIkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRTcG90c1wiLFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkR1JQXCIsXCJSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkSU1QU1JldlRhYlwiLFwiSU1QUycoMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUFBcIixcIkNQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUE1cIixcIkNQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBcHByb3ZlZE1Hc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBBcHByb3ZlZCBNR1NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRNR3NWYWx1ZVwiLFwiJCBBcHByb3ZlZCBNR1NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRBRFVzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIEFwcHJvdmVkIEFEVVNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQXBwcm92ZWRBRFVzVmFsdWVcIixcIiQgQXBwcm92ZWQgQURVU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckNoYW5nZXNWYWx1ZUZvckRpc3BsYXlcIixcIiQgQnV5ZXIgQ2hhbmdlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyQ2hhbmdlc1ZhbHVlXCIsXCIkIEJ1eWVyIENoYW5nZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVc2VyQ2hhbmdlc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBTZWxsZXIgVXNlciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiVXNlckNoYW5nZXNWYWx1ZVwiLFwiJCBTZWxsZXIgVXNlciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU2VsbGVyTGluZVwiLFwiU2VsbGVyIExpbmUgI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckxpbmVcIixcIkJ1eSBMaW5lICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU3BvdFN0YXR1c1wiLFwiU3BvdCBTdGF0dXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiSW52ZW50b3J5Q29kZVwiLFwiSW52ZW50b3J5IENvZGVcIik7IFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyUHJvZ3JhbU5hbWVcIixcIkJ1eWVyIFByb2dyYW0gTmFtZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZlbnVlQ2xhc3NcIixcIlJldmVudWUgQ2xhc3NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiV2Vla2x5QVVSXCIsXCIgQXZnIFJhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkUmF0ZVwiLFwiQm9va2VkIFJhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkUlRHXCIsXCJCb29rZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZElNUFNcIixcIkJvb2tlZCBJTVBTKCcwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFVUlRHXCIsXCJBdmcgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFVSU1QU1wiLFwiQXZnIElNUFMoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUG9zdGVkUmF0aW5nc09ySW1wcmVzc2lvbnNcIixcIlBvc3RlZCBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU2NoZWR1bGVGbGlnaHRXZWVrXCIsXCJTY2hlZHVsZSBXZWVrXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNjaGVkdWxlZERheVwiLFwiU2NoZWR1bGVkIERheVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBaXJTdGF0dXNcIixcIkFpciBTdGF0dXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQWlyRGF0ZUFuZFRpbWVcIixcIkFpciBEYXRlICYgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJOb3JtYWxpemVkT3JkZXJlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBCb29rZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRPcmRlcmVkSW1wcmVzc2lvbnNcIixcIk5vcm1hbGl6ZWQgQm9va2VkIElNUFMoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTm9ybWFsaXplZFBvc3RlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRQb3N0ZWRJbXByZXNzaW9uc1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgSU1QUygnMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBZElkXCIsXCJBZC1JZFwiKTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheWltcHNcIixcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheUdycFwiLFwiR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFNwb3RzRm9yRGlzcGxheVwiLFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGlzcGxheVNwb3RzXCIsXCJTcG90c1wiKTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZXN0aW1hdGVOb1wiLCBcIkVzdGltYXRlI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QnV5ZXJcIiwgXCJQcmltYXJ5IEJ1eWVyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByaW1hcnlCdXllck5hbWVcIiwgXCJQcmltYXJ5IEJ1eWVyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRpbWVvdXREYXRlXCIsIFwiVGltZW91dCBEYXRlXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUYWJsZURhdGFXcmFwcGVyKCkge1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhV3JhcHBlciA9IFtdO1xyXG4gICAgbGV0IHJvd09iamVjdDogYW55O1xyXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZztcclxuICAgIGxldCBjb2x1bW5PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBjb2x1bW5PYmplY3RLZXk7XHJcbiAgICBsZXQga2V5c1VzZWRGb3JUYWJsZURpc3BsYXk6IHN0cmluZ1tdO1xyXG4gICAgbGV0IGtleXNVc2VkRm9yQ29sdW1uOiBzdHJpbmdbXTtcclxuICAgIGxldCBhZGRpdGlvbmFsSW5mb09iamVjdDogeyBbeDogc3RyaW5nXTogYW55OyB9O1xyXG4gICAgbGV0IGFkZGl0aW9uYWxLZXlzO1xyXG4gICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgob2JqOiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHtcclxuICAgICAgcm93T2JqZWN0ID0ge307XHJcbiAgICAgIGtleXNVc2VkRm9yVGFibGVEaXNwbGF5ID0gW107XHJcbiAgICAgIGZvciAodmFyIGNvbE51bSBpbiB0aGlzLnRhYmxlSGVhZGVycykge1xyXG4gICAgICAgIGNvbHVtbk9iamVjdCA9IHt9O1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS52aXNpYmxlKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1uTmFtZSA9IFwiXCI7XHJcbiAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4gPSBbXTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyc1tjb2xOdW1dLmhlYWRlckluZm8uZm9yRWFjaCgoaGVhZGVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIlNUUklOR1wiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci5vYmplY3RLZXk7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2NvbHVtbk9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yVGFibGVEaXNwbGF5LnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChjb2x1bW5PYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIklDT05cIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIudHlwZU9mQm9keURhdGE7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2hlYWRlci5vYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGhlYWRlci5vYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoaGVhZGVyLnR5cGVPZkJvZHlEYXRhID09PSBcIkNIRUNLQk9YXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c1VzZWRGb3JDb2x1bW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbHVtbk5hbWUgKz0ga2V5c1VzZWRGb3JDb2x1bW5baV07XHJcbiAgICAgICAgICBpZiAoaSAhPT0ga2V5c1VzZWRGb3JDb2x1bW4ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lICs9ICcsJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcm93T2JqZWN0W2NvbHVtbk5hbWVdID0gY29sdW1uT2JqZWN0O1xyXG4gICAgICB9XHJcbiAgICAgIGFkZGl0aW9uYWxJbmZvT2JqZWN0ID0ge307XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzID0gT2JqZWN0LmtleXMob2JqKS5maWx0ZXIoa2V5ID0+ICFrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgYWRkaXRpb25hbEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGFkZGl0aW9uYWxJbmZvT2JqZWN0W2tleV0gPSBvYmpba2V5XTtcclxuICAgICAgfSlcclxuICAgICAgcm93T2JqZWN0LkFkZGl0aW9uYWxJbmZvID0gYWRkaXRpb25hbEluZm9PYmplY3Q7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhV3JhcHBlci5wdXNoKHJvd09iamVjdCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YVdyYXBwZXI7XHJcbiAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0Q2hlY2tib3gocm93RGF0YTogYW55LCBjb2x1bW5LZXlzOiBhbnksIGlzQ2hlY2tib3hTZWxlY3RlZDogYW55KSB7XHJcbiAgICByb3dEYXRhW2NvbHVtbktleXNdID0gIXJvd0RhdGFbY29sdW1uS2V5c107XHJcbiAgICB0aGlzLnRvZ2dsZUNoZWNrYm94LmVtaXQoeyByb3dEYXRhLCBjb2x1bW5LZXlzLCBpc0NoZWNrYm94U2VsZWN0ZWQgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdEFsbFJvd3MoKSB7XHJcbiAgICB0aGlzLnRvZ2dsZUhlYWRlckNoZWNrYm94LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0Um93KHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy50b2dnbGVSb3dDaGVja2JveC5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgdW5kb0NyZWRpdGVkU3BvdChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudW5kb0ljb25DbGlja2VkLmVtaXQoeyBkYXRhLCBtZ09yQ3JlZGl0OiBcIkNyZWRpdFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgdW5kb01nU3BvdChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudW5kb0ljb25DbGlja2VkLmVtaXQoeyBkYXRhLCBtZ09yQ3JlZGl0OiBcIk1ha2VHb29kXCIgfSk7XHJcbiAgfVxyXG5cclxuICAvL1NvcnQgYW5kIEZpbHRlciBMb2dpYyBiZWdpbnMhXHJcbiAgY2xvc2VUb29sdGlwKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcCAmJiB0aGlzLnRvb2x0aXAuaXNPcGVuKCkpIHtcclxuICAgICAgdGhpcy50b29sdGlwLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IGZhbHNlO1xyXG4gICAgaWYgKCF0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQpIHtcclxuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJDbG9zZWQuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNUb29sdGlwQWN0aXZlKGhlYWRlcjogYW55W10pIHtcclxuICAgIHJldHVybiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzVG9vbHRpcEFjdGl2ZShoZWFkZXIsdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICB9XHJcblxyXG4gIGJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0b29sdGlwOiBhbnksIGhlYWRlcjogSUhlYWRlckluZm8pIHtcclxuXHJcbiAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSB0cnVlO1xyXG4gICAgLy8gbGV0IGNvbnRhaW5lclRvU2Nyb2xsO1xyXG4gICAgLy8gaWYgKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8IHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJEUlJMSVNUSU5HXCIpIHtcclxuICAgICAgLy8gY29udGFpbmVyVG9TY3JvbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2Nyb2xsYWJsZS1jb250YWluZXJcIilbMF07XHJcbiAgICAgIC8vIHZhciBtZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoXCIobWF4LXdpZHRoOiAxMzY2cHgpXCIpO1xyXG4gICAgICAvLyBpZiAobWVkaWFRdWVyeS5tYXRjaGVzKSB7XHJcbiAgICAgIC8vICAgY29udGFpbmVyVG9TY3JvbGwuc2Nyb2xsKDAsIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLnZlcnRpY2FsU2Nyb2xsT2Zmc2V0Rm9yRmlsdGVyVG9vbHRpcCk7XHJcbiAgICAgIC8vIH1cclxuICAgIC8vIH1cclxuICAgIFxyXG4gICAgLy8gaWYgc2FtZSB0b29sdGlwIG9wZW5lZCBjbG9zZSBpdFxyXG4gICAgaWYgKHRvb2x0aXAgPT0gdGhpcy50b29sdGlwKSB7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBlbmFibGVkSGVhZGVyczogYW55W10gPSBbXTtcclxuICAgICAgdGhpcy5jaGVja0lmVW5pcXVlVmFsdWVQcmVzZW50Rm9yVGhlSGVhZGVyKGhlYWRlcixlbmFibGVkSGVhZGVycyk7XHJcbiAgICAgIHRoaXMub3BlblRvb2x0aXAodG9vbHRpcCwgZW5hYmxlZEhlYWRlcnMsaGVhZGVyKTtcclxuXHJcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE1MDAgJiYgd2luZG93LmlubmVySGVpZ2h0IDwgNzY4ICYmICF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlclNldC5oYXMoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzWzBdKSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1uRmlsdGVyT3BlbmVkLmVtaXQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RmlsdGVyVG9vbHRpcFRhYnMgPSBoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXMubGVuZ3RoID4gMTtcclxuICAgICAgbGV0IGFjdGl2ZVRhYiA9IHRoaXMuZmlsdGVyVGFiT2JqZWN0c1swXTtcclxuICAgICAgdGhpcy5wb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oYWN0aXZlVGFiLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXI6IElIZWFkZXJJbmZvLCBlbmFibGVkSGVhZGVyczogYW55W10pe1xyXG4gICAgaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgZGF0YVRvQ2hlY2sgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSwgaXRlbSk7XHJcbiAgICAgIGlmKGl0ZW0gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OnsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuICAgICAgICAgIGlmKHVuaXFTdGFydERhdGUubGVuZ3RoID4gMSB8fCB1bmlxRW5kRGF0ZS5sZW5ndGggPiAxIHx8IHRoaXMuaXNUb29sdGlwQWN0aXZlKFtpdGVtXSkpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IGRhdGFUb0NoZWNrLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKTtcclxuICAgICAgICAvLyBpZiBsYXN0IGFwcGxpZWQgZmlsdGVyIGlzIHRoaXMgaGVhZGVyLCBwdXNoIGl0IGFsb3MgYXMgZW5hYmxlZEhlYWRlclxyXG4gICAgICAgIGxldCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoLTFdID09IGl0ZW0pe1xyXG4gICAgICAgICAgICBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBpZihoZWFkZXIuZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGhlYWRlci5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlblRvb2x0aXAodG9vbHRpcDogYW55LGhlYWRlcjogYW55LCBjb2x1bW5IZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMudG9vbHRpcC5vcGVuKCk7XHJcbiAgICAvL2NvbnZlcnQga2V5IGludG8gdGhlIGhlYWRlclxyXG4gICAgdGhpcy5maWx0ZXJUYWJPYmplY3RzID0gaGVhZGVyLm1hcCgoa2V5OiBzdHJpbmcsaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuaGFzKGtleSlcclxuICAgICAgICA/IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5nZXQoa2V5KVxyXG4gICAgICAgIDoga2V5OyAvL2NoYW5nZSB0byBkaXNwbGF5IG5hbWVcclxuICAgICAgcmV0dXJuIG5ldyByYWRpb0J1dHRvbk1vZGVsKGtleSwgdmFsdWUsIGNvbHVtbkhlYWRlci5pc1NvcnRSZXF1aXJlZFtpbmRleF0sIGNvbHVtbkhlYWRlci5pc0ZpbHRlclJlcXVpcmVkW2luZGV4XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jbGVhckNvbHVtbkZpbHRlcigpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIikpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgaGVhZGVyID0gYWN0aXZlVGFiLmtleTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IGFjdGl2ZVRhYi5sYWJlbDtcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGZhbHNlOyBcclxuICAgIHRoaXMuc2VhcmNoSXRlbSA9IG51bGw7XHJcbiAgICBcclxuICAgIFxyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG5cclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XHJcbiAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCk7XHJcbiAgICBpZihyZWxvYWQpe1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckRhdGFBbmRDYWxsQ3JlYXRlVG9vbHRpcGRhdGFGdW5jKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgfSwgMTAwKTsgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2V0RmlsdGVyRGF0YUFuZENhbGxDcmVhdGVUb29sdGlwZGF0YUZ1bmMoYWN0aXZlVGFiLCBoZWFkZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyRGF0YUFuZENhbGxDcmVhdGVUb29sdGlwZGF0YUZ1bmMoYWN0aXZlVGFiOnJhZGlvQnV0dG9uTW9kZWwsIGhlYWRlcjpzdHJpbmcpe1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgdGhpcy5jcmVhdGVGaWx0ZXJUb29sdGlwRGF0YShoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FsZW5kYXJEYXRhKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFNsaWRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRpbWVTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGVja2JveERhdGEoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKXtcclxuICAgIGxldCBzZWxlY3RlZEZpbHRlclNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5KTtcclxuXHJcbiAgICBsZXQgY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPSB0aGlzLmdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTtcclxuICAgIGxldCBpc1NvcnRQcmVzZW50ID0gKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSAmJiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2l6ZSA+IDAgJiYgY3VycmVudENvbHVtblNvcnRGaWx0ZXIgIT0gU29ydFR5cGVFbnVtLkRFRkFVTFQpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gc2VsZWN0ZWRGaWx0ZXJTZXQuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgfHwgaXNTb3J0UHJlc2VudCA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldFNsaWRlckRhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlT3B0aW9uc0ZvclNsaWRlcihoZWFkZXIpO1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFJhbmdlRm9yU2xpZGVyKGhlYWRlcik7XHJcbiAgICBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dFbXB0eVNwYWNlRm9yU2xpZGVyID0gZmFsc2U7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG5cclxuICAgIGxldCB0cmFuc2xhdGVGdW5jO1xyXG4gICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0aGlzLmlzTWF4VGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyQ3VycmVuY3lTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwiY3VycmVuY3lcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoaGVhZGVyID09IFwicG9zdGVkQXVkUGVyY2VudFwiKXtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwicGVyY2VudFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcIm5vcm1hbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgdHJ1ZSk7XHJcbiAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKG9wdGlvbnNEYXRhLCBoZWFkZXIsIGZhbHNlKTtcclxuXHJcbiAgICBsZXQgb2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZXRPcHRpb25WYWx1ZXMobWluVmFsdWUsbWF4VmFsdWUpO1xyXG4gICAgXHJcbiAgICBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJub3JtYWxcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLm5vcm1hbFRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVGdW5jID09PSBcInBlcmNlbnRcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnBlcmNlbnRUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJjdXJyZW5jeVwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY3VycmVuY3lUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvYmo7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3RlcCA9IDE7XHJcbiAgICB0aGlzLnNsaWRlckZpbHRlclRleHRCb3hTdGVwID0gXCIxXCI7XHJcbiAgICBpZiAoaGVhZGVyICE9PSBcIldlZWtOdW1iZXJcIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc3RlcCA9IDAuMDE7XHJcbiAgICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjAuMDFcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgdGhpcy5zbGlkZXJNaW5WYWx1ZSA9IHNlbGVjdGVkT2JqLm1pbiA8IHRoaXMub3B0aW9ucy5mbG9vciA/IHRoaXMub3B0aW9ucy5mbG9vciA6IHNlbGVjdGVkT2JqLm1pbjtcclxuICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHNlbGVjdGVkT2JqLm1heCA8IHRoaXMub3B0aW9ucy5jZWlsID8gc2VsZWN0ZWRPYmoubWF4IDogdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlOyAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgIH1cclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGVja2JveERhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgdG9vbHRpcE9wdGlvbnMgPSB0aGlzLmNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXIpOyAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gc29ydEJ5KHRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCksXCJ2YWx1ZVwiKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCksXCJ2YWx1ZVwiKTtcclxuICAgICAgICBcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMgPSBbLi4uc2VsZWN0ZWRJdGVtcywgLi4udW5zZWxlY3RlZEl0ZW1zXTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgXHJcbiAgICBsZXQgbWFyZ2luID0gNTtcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gZGF0YUxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAobWFyZ2luICogZGF0YUxlbmd0aCkgKyBtYXJnaW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCB1bmlxT3B0aW9uRGF0YSA9IHVuaXEob3B0aW9uRGF0YS5tYXAoaXRlbSA9PiBpdGVtW2hlYWRlcl0pKTtcclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHVuaXFPcHRpb25EYXRhLm1hcCgoaXRlbSxpbmRleCkgPT4gbmV3IFRvb2x0aXBNb2RlbChpdGVtLGluZGV4KzEpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zLGhlYWRlcik7XHJcbiAgICBsZXQgaW5kZXggPSB0b29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09IG51bGwpO1xyXG4gICAgXHJcbiAgICBpZihpbmRleCAhPSAtMSl7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zW2luZGV4XS5sYWJlbCA9IFwiKEJsYW5rKVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXSxoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVTZXQuaGFzKGl0ZW0udmFsdWUpID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRhdGEoKSB7XHJcbiAgICBjb25zdCBwYXJzaW5nRm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlLCBwYXJzaW5nRm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpe1xyXG4gICAgXHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIFxyXG4gICAgbGV0IG1pbk1heERhdGU7XHJcbiAgICAvL1doZW4geW91IHdhbnQgdG8gdXNlIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSBjb21iaW5lZCBhcyBzaW5nbGUgY29sdW1uIHRoZW4gdXNlIFBlcmlvZC5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1pbk1heERhdGU7XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YTogYW55W10pe1xyXG4gICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgcmV0dXJuIFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZTogYW55W10sIHBhcnNpbmdGb3JtYXQ6IHN0cmluZyl7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgdGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZU9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMF0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmouZnJvbURhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmoudG9EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVsxXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1pbkRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1heERhdGUpO1xyXG5cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRnJvbVRpbWUgIT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRUb1RpbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5mb3JtYXRUb1R3ZWx2ZUhycyh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRydWUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgfVxyXG5cclxuICAgICBpZih0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiUkFUSU5HXCIpe1xyXG4gICAgICB0aGlzLnNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXIpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vTmVlZCB0byBjaGFuZ2UgdGhpcyBtZXRob2RcclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXI6IHN0cmluZyl7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSA9PSBcIjxtdWx0aT5cIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlTXVsdGk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcblxyXG4gICAgICBpZih0aGlzLnNob3daZXJvVGltZUNoZWNrYm94IHx8IHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94KSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdICE9IFwiPG11bHRpPlwiICYmIG9ialtoZWFkZXJdWzBdICE9IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc2VsZWN0VW5zZWxlY3RDaGVja2JveChkYXRhOiBUb29sdGlwTW9kZWwpIHtcclxuICAgIGRhdGEuaXNTZWxlY3RlZCA9ICFkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT0gZGF0YS5pZCk7XHJcbiAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gZGF0YS5pc1NlbGVjdGVkO1xyXG4gICAgICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuXHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9ICBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBtaW5WYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09ICcwJykge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgbWF4VmFsdWVDaGFuZ2VkKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsIHx8IHZhbCA9PSBcIjBcIikge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikgfHwgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLnNob3dNYXhFcnJvciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpe1xyXG4gICAgICBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5ICYmIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZSBpZih0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yIHx8IHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3Ipe1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZXtcclxuICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgIH1cclxuICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gIH1cclxuXHJcbiAgaXNWYWx1ZUluUmFuZ2UodmFsOiBudW1iZXIpe1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mbG9vciA8PSB2YWwgJiYgdmFsIDw9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZVNsaWRlckFwcGx5QnRuKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICF0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2xpZGVyVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0geyBtaW46IHRoaXMuc2xpZGVyTWluVmFsdWUsIG1heDogdGhpcy5zbGlkZXJNYXhWYWx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2xpZGVyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5hcHBseUxpc3RGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5TGlzdEZpbHRlcnMoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkodGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcclxuXHJcbiAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGJsYW5rSW5kZXggPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5maW5kSW5kZXgoKGl0ZW06IHN0cmluZykgPT4gaXRlbSA9PSBudWxsKTtcclxuICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgXHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRNYXAoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpe1xyXG4gICAgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZyhrZXk6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJBU0NcIil7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVGQVVMVFwiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnQoKSB7XHJcbiAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBUb29sdGlwRGF0YSk7XHJcbiAgICB0aGlzLnRvb2xUaXBkYXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50b29sVGlwZGF0YSkge1xyXG4gICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJbkRhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU29ydE1hcCgpe1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hcHBseURhdGVGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJTZWxlY3Rpb247XHJcbiAgICAgIFxyXG4gICAgICBsZXQgZnJvbURhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5kYXl9O1xyXG4gICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlKSk7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVdlZWtGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGluY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclswXSkgPCAxMikge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pICsgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRIb3VyKGFycjogYW55W10pIHtcclxuICAgIGlmIChhcnJbMF0gPT0gXCJcIikge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA+IDEpIHtcclxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYXJyWzBdKSAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY3JlbWVudE1pbnV0ZShhcnI6IGFueVtdKSB7XHJcbiAgLy8gaW5jcmVtZW50IHRvIG5lYXJlc3QgcHJvcGVyIGludGVydmFsKDE1LDMwLDQ1KVxyXG4gIGxldCBtaW4gPSBwYXJzZUludChhcnJbMV0pXHJcbiAgICBpZiAobWluIDw9IDE0KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMTVcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDE1ICYmIG1pbiA8PSAyOSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjMwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAzMCAmJiBtaW4gPD0gNDQpIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gNDUpIHtcclxuICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgKyAxNTtcclxuICAgIC8vIGlmIChwYXJzZUludChhcnJbMV0pID09IDYwKSB7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgLy8gfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmKHBhcnNlSW50KGFyclsxXSkgPiA2MCl7XHJcbiAgICAvLyAgICAgbGV0IHJlcyA9IHBhcnNlSW50KGFyclsxXSkgLSA2MDtcclxuICAgIC8vICAgICBhcnJbMV0gPSByZXMgPCAxMCA/IGAwJHtyZXN9YCA6IHJlcy50b1N0cmluZygpOyAgICBcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGRlY3JlbWVudE1pbnV0ZShhcnI6IGFueSkge1xyXG4gICAgbGV0IG1pbiA9IHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICBpZiAobWluID4gMCAmJiBtaW4gPD0gMTUpIHtcclxuICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMTYgJiYgbWluIDw9IDMwKSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMTVcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDMxICYmIG1pbiA8PSA0NSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjMwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+IDQ1IHx8IG1pbiA9PSAwKSB7XHJcbiAgICAgIGFyclsxXSA9IFwiNDVcIjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhcnJbMV0gPSBwYXJzZUludChhcnJbMV0pIC0gMTU7XHJcbiAgICAvLyBpZiAocGFyc2VJbnQoYXJyWzFdKSA8IDApIHtcclxuICAgIC8vICAgICBsZXQgcmVzID0gNjAgKyBwYXJzZUludChhcnJbMV0pO1xyXG4gICAgLy8gICAgIGFyclsxXSA9IHJlcztcclxuICAgIC8vIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSAwKSB7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSBpZihhcnJbMV0gPCAxMCl7XHJcbiAgICAvLyAgICAgYXJyWzFdPSBgMCR7YXJyWzFdfWA7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTdGFydFRpbWVIb3VyKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkVG9UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhcnRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6NTlcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiYgIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgKSYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ICYmICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShkYXlqcyhzdGFydFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KS5pc0FmdGVyKGRheWpzKGVuZFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KSkpOyAgICAgICAgXHJcbiAgfVxyXG5cclxuICBzb3J0ZWREYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09IFwibm9uZVwiKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKSB7XHJcbiAgICBmb3IobGV0IFtrZXksdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpe1xyXG4gICAgICBpZih2YWx1ZSA9PSBcIkFTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodmFsdWUgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpIHtcclxuICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgXHJcbiAgICAgIGhlYWRlci5oZWFkZXJJbmZvLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvd1Rvb2x0aXBJY29uKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBpdGVtLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYXRlc3RGaWx0ZXJzID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYobGF0ZXN0RmlsdGVycy5sZW5ndGggPiAwICYmIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uICYmIGxhdGVzdEZpbHRlcnNbbGF0ZXN0RmlsdGVycy5sZW5ndGggLSAxXSA9PSBrZXkpe1xyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIGlmKGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9ICh1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSkgPyBmYWxzZSA6IHRydWU7IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVba2V5XSk7XHJcbiAgICAgICAgICAgICAgICBpZiggKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSkgfHwgKGl0ZW0uZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSkpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgXHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpe1xyXG4gICAgbGV0IGVsZW1lbnRBcnIgPSB0aGlzLnZpZXdDaGlsZFRhYmxlSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICBlbGVtZW50QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGNoaWxkRGl2RWxlbWVudHMgPSBpdGVtLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY2hpbGREaXZFbGVtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgIGxldCBmaXJzdFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblswXTtcclxuICAgICAgICBsZXQgc2Vjb25kUGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggPiBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCl7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGF0YVJvd0NsaWNrZWQocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHJhZGlvQnV0dG9uQ2xpY2tlZChkYXRhOiBhbnksIGFjdGlvbjogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGVkLmVtaXQoeyBkYXRhLCBhY3Rpb24gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXSwgdG9vbHRpcDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUb29sdGlwICYmIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKSB7XHJcbiAgICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxsZXJHcm91cEhpZXJhcmNoeSA9IHNlbGxlckdyb3VwSGllcmFyY2h5O1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWNvbkNsYXNzOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZihcIm9yZGVySWRcIiBpbiByb3dEYXRhICYmIGljb25DbGFzcy5pbmNsdWRlcyhcIm1kaS1zdGFyXCIpICl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFycmVkT3JkZXJJZCA9IHJvd0RhdGEub3JkZXJJZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmd0SWNvbkNsaWNrZWQuZW1pdCh7ZGF0YTogcm93RGF0YSxpY29uQ2xhc3M6IGljb25DbGFzc30pO1xyXG4gIH1cclxuXHJcbiAgc3ZnSWNvbkNsaWNrZWQoZGF0YTogR3RDb2x1bW5JY29uRW1pdHRlZERhdGEpe1xyXG4gICAgdGhpcy5ndFNWR0ljb25DbGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB0ZXh0QWN0aW9uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWQ6IGFueSl7XHJcbiAgICB0aGlzLmd0VGV4dEFjdGlvbkNsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhLCBpZDogaWR9KTtcclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkT25TdHJpbmdJY29uQWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIGlkOiBhbnkpe1xyXG4gICAgdGhpcy5ndFRleHRBY3Rpb25DbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3RGV0YWlsc0NsaWNrZWQocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMuZ3RWaWV3RGV0YWlsQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGF9KTtcclxuICB9XHJcblxyXG4gIC8vIHNldENvbHVtblNvcnRTdGF0ZU1hcCgpe1xyXG4gIC8vICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gIC8vICAgICAgIGNvbHVtbi5oZWFkZXJJbmZvLmZvckVhY2goIChoZWFkZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbiAmJiBoZWFkZXIuaXNTb3J0UmVxdWlyZWQpe1xyXG4gIC8vICAgICAgICAgICAgICAgaGVhZGVyLmlzU29ydFJlcXVpcmVkLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmKGl0ZW0pe1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzW2luZGV4XSwgXCJERUZBVUxUXCIpOyAgXHJcbiAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKXtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1bkNoZWNrQWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpe1xyXG4gICAgICBpZihzdHIpe1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0ci50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmJvbGRTdHJpbmcoZWxlbWVudC5sYWJlbCxzdHIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgYm9sZFN0cmluZyhzdHI6IHN0cmluZywgZmluZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXhlcyA9IHRoaXMuZ2V0SW5kaWNlc09mKGZpbmQsIHN0ciwgZmFsc2UpO1xyXG4gICAgXHJcbiAgICBpbmRleGVzLmZvckVhY2goKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGl0ZW0gKyAoaW5kZXggKiA3KTsgLy9NdWx0aXBseWluZyBieSA3IGFzIHRoZXJlIGFyZSA3Y2hhcjogPGI+PC9iPlxyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmaW5kLmxlbmd0aDtcclxuICAgICAgICBsZXQgc3RyVG9CZVJlcGxhY2VkID0gc3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2Uoc3RyVG9CZVJlcGxhY2VkLCBcIjxiPlwiICsgc3RyVG9CZVJlcGxhY2VkICsgXCI8L2I+XCIpOyBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuZ2V0SW5kaWNlc09mKHNlYXJjaFN0cjogc3RyaW5nLCBzdHI6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdmFyIHNlYXJjaFN0ckxlbiA9IHNlYXJjaFN0ci5sZW5ndGg7XHJcbiAgICBpZiAoc2VhcmNoU3RyTGVuID09IDApIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IDAsIGluZGV4LCBpbmRpY2VzID0gW107XHJcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICgoaW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHIsIHN0YXJ0SW5kZXgpKSA+IC0xKSB7XHJcbiAgICAgICAgaW5kaWNlcy5wdXNoKGluZGV4KTtcclxuICAgICAgICBzdGFydEluZGV4ID0gaW5kZXggKyBzZWFyY2hTdHJMZW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kaWNlcztcclxufVxyXG5cclxuXHJcbiAgcmVtb3ZlQm9sZEVsZW1lbnRGcm9tU3RyaW5nKG9yaWdpbmFsU3RyaW5nOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgZmlyc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCc8Yj4nLCdnJyk7XHJcbiAgICAgIGxldCBzZWNvbmRSZWdFeHAgPSBuZXcgUmVnRXhwKCc8L2I+JywnZycpO1xyXG5cclxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoZmlyc3RSZWdFeHAsJycpO1xyXG4gICAgICByZXR1cm4gcmV0LnJlcGxhY2Uoc2Vjb25kUmVnRXhwLCcnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoZWRJdGVtKCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9yVGhlSXRlbShcIlwiKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyRGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpIHtcclxuXHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgIXRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsb25lZFRhYmxlRGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKG9iaikgPT4gIVtcIlwiLCBcIi1cIiwgbnVsbCwgXCIwXCIsIFwiPG11bHRpPlwiXS5pbmNsdWRlcyhvYmpba2V5XSkpO1xyXG5cclxuICAgIGxldCB0aW1lQXJyID0gbWFwKGRhdGEsIGtleSk7XHJcbiAgICB0aW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBmcm9tVGltZTogdGltZUFyclswXSxcclxuICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIikge1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5KTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgICBsZXQgaW5jbHVkZU11bHRpID1cclxuICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldICE9IFwiMFwiICYmIG9ialtrZXldICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogdGltZUFyclt0aW1lQXJyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgICAgICBpbmNsdWRlTXVsdGk6IGluY2x1ZGVNdWx0aSxcclxuICAgICAgICAgICAgaW5jbHVkZVplcm86IGluY2x1ZGVaZXJvLFxyXG4gICAgICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBpbmNsdWRlVGltZVJhbmdlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KGtleSwgb2JqKTtcclxuICAgIH1cclxufVxyXG5cclxuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5OiBzdHJpbmcpe1xyXG4gIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV1bMF0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XVswXSAhPSBcIjBcIiAmJiBvYmpba2V5XVswXSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG5cclxuICAgICAgICBsZXQgc3RhcnRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0VGltZVwiKTtcclxuICAgICAgICBsZXQgZW5kVGltZUFyciA9IG1hcCh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJlbmRUaW1lXCIpO1xyXG5cclxuICAgICAgICBzdGFydFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVuZFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVEZXNjZW5kaW5nKGEsIGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBzdGFydF90aW1lID0gc3RhcnRUaW1lQXJyW3N0YXJ0VGltZUFyci5maW5kSW5kZXgoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQgIT09IG51bGwgJiYgZWxlbWVudCAhPT0gJyc7XHJcbiAgICAgICAgfSldXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHN0YXJ0X3RpbWUsXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAhKyh2YWwpIHx8IDEgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiAxMil7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggIT0gMiAgfHwgKCErKHZhbCkgJiYgdmFsICE9IFwiMDBcIikgfHwgMCA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDU5KXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lSG91ckNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCA9PSAwIHx8ICErKHZhbCkgfHwgMSA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDEyKXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCAhPSAyICB8fCAoISsodmFsKSAmJiB2YWwgIT0gXCIwMFwiKSB8fCAwID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gNTkpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgICBsZXQgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgICAgaWYoIXRoaXMuc2VhcmNoSXRlbSAmJiBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICAgIGlmKGJsYW5rSW5kZXggIT0gLTEpe1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChjdXJyZW50U2VsZWN0ZWRWYWx1ZSxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyOiB7ZnJvbVRpbWU6IHN0cmluZywgdG9UaW1lOnN0cmluZywgaW5jbHVkZU11bHRpOiBib29sZWFuLCBpbmNsdWRlWmVybzogYm9vbGVhbiwgaW5jbHVkZVRpbWVSYW5nZTogYm9vbGVhbn0gPSB7XHJcbiAgICAgICAgZnJvbVRpbWU6IG51bGwsXHJcbiAgICAgICAgdG9UaW1lOiBudWxsLFxyXG4gICAgICAgIGluY2x1ZGVNdWx0aTogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVplcm86IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXI7XHJcbiAgXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG5cclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIsIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7ICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24pO1xyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZERhdGU6IHtmcm9tRGF0ZTogYW55LCB0b0RhdGU6IGFueX0gPSB7ZnJvbURhdGU6IG51bGwsIHRvRGF0ZTogbnVsbH07XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlICYmIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKXtcclxuICAgICAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUsZnJvbURhdGUpICYmIGlzRXF1YWwodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlLHRvRGF0ZSkgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2VsZWN0ZWREYXRlLGN1cnJlbnRTZWxlY3RlZERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsVmFsdWVNYXBGb3JEYXRlRmlsdGVyKCl7XHJcbiAgICAgICAgbGV0IG1pbk1heERhdGU7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgICAgIGxldCBtaW5TdGFydERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnREYXRlXCIpO1xyXG4gICAgICAgICAgbGV0IG1heEVuZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGUgPSB7ZnJvbURhdGU6IG1pbk1heERhdGVbMF0sIHRvRGF0ZTogbWluTWF4RGF0ZVsxXX07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2VsZWN0ZWREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogbnVsbCAsIG1heDogbnVsbH07XHJcbiAgICAgIGxldCBwcmV2aW91c1NsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBcIlwiLCBtYXg6IFwiXCJ9O1xyXG5cclxuICAgICAgLy8gaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2UgaWYodGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlO1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NsaWRlckRhdGEsY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCl7XHJcbiAgICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdHJ1ZSk7XHJcbiAgICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgZmFsc2UpO1xyXG4gICAgICBsZXQgc2xpZGVyRGF0YSA9IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9O1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBzbGlkZXJEYXRhKTtcclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IHRoaXMuZ2V0Q29sdW1uU29ydFN0YXRlRm9yU2VsZWN0ZWRSYWRpbygpO1xyXG5cclxuICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy50ZW1wU29ydE9yZGVyICE9IG51bGwgJiYgdGhpcy50ZW1wU29ydE9yZGVyICE9IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTogc3RyaW5nIHtcclxuICAgICAgbGV0IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlICYmIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSAmJlxyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPyBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA6IFNvcnRUeXBlRW51bS5ERUZBVUxUO1xyXG4gICAgICByZXR1cm4gY3VycmVudENvbHVtblNvcnRGaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpe1xyXG4gICAgICBsZXQgaGVhZGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCl7XHJcbiAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpIDogW107XHJcbiAgICAgICAgXHJcbiAgICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlUb29sdGlwTW9kZWxJZChpbmRleDogbnVtYmVyICwgaXRlbTogVG9vbHRpcE1vZGVsKXtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlU3RhdGVPYmplY3QoKXtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgPSAgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzXHJcbiAgICAgID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVcclxuICAgICAgOiB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmhlYWRlckluZm8uZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICBoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXMgPSBrZXk7XHJcbiAgICAgICAgICAgICAgLy8gQU5OQS00MTEzIGZpeFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2tleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXNldEZpbHRlclNvcnRBY3RpdmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElzRGlmZmVyZW5jZSh2YWx1ZTogYm9vbGVhbil7XHJcbiAgICAgIHRoaXMuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEluZGV4KCl7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGFibGVDb250YWluZXJTY3JvbGwoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdGFibGVWaWV3SGVpZ2h0ID0gZS50YXJnZXQub2Zmc2V0SGVpZ2h0OyAvLyB2aWV3cG9ydFxyXG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsSGVpZ2h0ID0gZS50YXJnZXQuc2Nyb2xsSGVpZ2h0OyAvLyBsZW5ndGggb2YgYWxsIHRhYmxlXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXBPblNjcm9sbCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMTUwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDE1MDtcclxuICAgICAgICBjb25zdCBsaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gYnVmZmVyO1xyXG4gICAgICAgIGlmIChzY3JvbGxMb2NhdGlvbiA+IGxpbWl0KSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IHRoaXMucmVuZGVyZWREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFibGVEYXRhKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+PSBzdGFydCAmJiBpbmRleCA8IGVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlSW5kZXgoKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMuZW5kO1xyXG4gICAgICAgIHRoaXMuZW5kID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpe1xyXG4gICAgICB0aGlzLnJlc2V0SW5kZXgoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLmdldFRhYmxlRGF0YSh0aGlzLnN0YXJ0LHRoaXMuZW5kKTtcclxuICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKHBhcmVudENoaWxkT3JUb3RhbFJvdzogXCJEQVRBUk9XXCIgfCBcIlRPVEFMUk9XXCIsIHJvd2RhdGE/OiBhbnkgKSB7XHJcbiAgICAgIGlmKHJvd2RhdGEpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gcm93ZGF0YS5pbnZlbnRvcnlDb2RlSWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgPSByb3dkYXRhLmRlbW9ncmFwaGljO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID0gcGFyZW50Q2hpbGRPclRvdGFsUm93O1xyXG4gICAgICB0aGlzLmRvd25sb2FkU3BvdERldGFpbHMuZW1pdCh7XHJcbiAgICAgICAgcGFyZW50Q2hpbGRPclRvdGFsUm93OiBwYXJlbnRDaGlsZE9yVG90YWxSb3csXHJcbiAgICAgICAgaW52ZW50b3J5Q29kZUlkOiB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCxcclxuICAgICAgICBkZW1vZ3JhcGhpYzogdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWR9KVxyXG4gIH1cclxuXHJcbiAgdGFibGVDb250YWluZXJTY3JvbGxlZChldmVudDogYW55KXtcclxuICAgICAgdGhpcy5pc1Njcm9sbGVkTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgICAgdGhpcy5yZW1vdmVUb29sdGlwT25TY3JvbGwoKTtcclxuICAgIH1cclxuICBcclxuICBtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07IFxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25JY29uSG92ZXIuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWVudGVyXCJ9KVxyXG4gIH1cclxuXHJcbiAgbW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGVDb250YWluaW5nVGFibGUocm93RGF0YTogYW55LCB0b29sdGlwS2V5OiBzdHJpbmcgKXtcclxuICAgIHRoaXMudG9vbHRpcENvbnRhaW5pbmdUYWJsZSA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBtb3VzZUxlYXZlVGV4dEFjdGlvblR5cGUocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uSWNvbkhvdmVyTGVhdmUuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWxlYXZlXCJ9KSAgXHJcbiAgfVxyXG5cclxuICBtb3VzZUVudGVyT25UZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrYWJsZURhdGFDbGlja2VkKFJvd2RhdGE6IGFueSwgaWQ6IG51bWJlcil7XHJcbiAgICAgIHRoaXMuY2xpY2thYmxlRGF0YUNsaWNrZWQuZW1pdCh7ZGF0YTogUm93ZGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUb29sdGlwT25TY3JvbGwoKXtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInJlbWFya3MtaW5mby10b29sdGlwXCIpO1xyXG4gICAgLy8gY29uc3QgdG9vbHRpcEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRvb2x0aXBcIik7XHJcbiAgICBjb25zdCBndFRvb2x0aXAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiKTtcclxuICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0b29sdGlwXCIpO1xyXG5cclxuICAgIHdoaWxlIChlbGVtZW50cyAmJiBlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKHRvb2x0aXBFbGVtZW50cyAmJiB0b29sdGlwRWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0b29sdGlwRWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoZ3RUb29sdGlwICYmIGd0VG9vbHRpcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGd0VG9vbHRpcFswXS5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7Z3RHZW5lcmFsQ29uZmlnPy50YWJsZU91dGVyQ29udGFpbmVyTmFtZX19IHt7dGFibGVCb3R0b21Cb3JkZXJDbGFzc319XCIgW25nQ2xhc3NdPVwieyAnc2Nyb2xsLWxlZnQtc2hhZG93LWVmZmVjdCc6IGlzU2Nyb2xsZWRMZWZ0LCAnY2xpY2thYmxlLXJvdyc6IGNsaWNrYWJsZVJvdyB9XCIgKHNjcm9sbCk9XCJvblRhYmxlQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBbY2xhc3NdPVwiZ3RHZW5lcmFsQ29uZmlnLnRhYmxlQ29udGFpbmVyTmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXNjcm9sbC1mb3ItdGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGhlaWdodDpcclxuICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5sZW5ndGggPCBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGxcclxuICAgICAgICAgICAgICAgICAgICA/ICdjYWxjKCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICgoZ3REaW1lbnNpb24ucm93SGVpZ2h0KSAqIHRhYmxlRGF0YS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIXRhYmxlRGF0YS5sZW5ndGggfHwgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0ICsgZ3REaW1lbnNpb24ucm93SGVpZ2h0KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi50YWJsZUhlaWdodFxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImd0XCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZW5kZXJlZERhdGFcIj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJ0YWJsZUNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLmhlYWRlckhlaWdodFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG90YWwtcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLnJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidG90YWxSb3dDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93U2tlbGV0b25Mb2FkaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICF0YWJsZURhdGEubGVuZ3RoICkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAoIXNob3dTa2VsZXRvbkxvYWRpbmcgJiYgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvdylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJyb3dEYXRhLmd0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3JkZXItdHInOiAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3dEYXRhOyBjb2x1bW5zOiB0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIihjbGljayk9XCJkYXRhUm93Q2xpY2tlZChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sTmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdG90YWxSb3dJbmZvOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uY29sc3BhblwiIGNsYXNzPVwie3tjb2x1bW4uY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5bJ2lzQWN0aW9uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGRhdGEgb2YgY29sdW1uLmFjdGlvbkRhdGFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrYWJsZURhdGFDbGlja2VkKHt9LCBkYXRhLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW5bJ2lzQWN0aW9uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjb2x1bW4uZGF0YSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmxvd2VyRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uY29sTmFtZSA9PSAndG90YWwtcG90ZW50aWFsLWJvb2tlZC11bml0JyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY29sdW1uTG93ZXJEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZS1kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3BvdERldGFpbHNEb3dubG9hZENsaWNrZWQoJ1RPVEFMUk9XJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjb2x1bW4ubG93ZXJEYXRhIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZEluUHJvZ3Jlc3MgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZCA9PSAnVE9UQUxST1cnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNpcmN1bGFyUHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uTG93ZXJEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5sb3dlckRhdGEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIGluZm8tbGFiZWxcIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LXRvdGFsLXJvdy10b29sdGlwXCIgcGxhY2VtZW50PVwiYm90dG9tXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNQUlOIFJPVyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleVwiICpuZ0Zvcj1cImxldCBjb2x1bW5EZWYgb2YgdGFibGVIZWFkZXJzOyAgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggI3RhYmxlSGVhZGVyIG5vd3JhcCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW3N0eWxlLndpZHRoXT1cImNvbHVtbkRlZi53aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMFwiICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgY29sdW1uRGVmLmhlYWRlckluZm87IGxldCBqID0gaW5kZXg7XCI+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ1NUUklORydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndXBwZXItbGFiZWwnOiBqID09PSAwLCAnbG93ZXItbGFiZWwnOiBqID09PSAxIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoZWFkZXIubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdpbXBzSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiaW1wc0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRpbmdJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGluZ0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3JhdGVJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGVJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIm9uZ29pbmdSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogZ3RHZW5lcmFsQ29uZmlnLmRpc2FibGVIZWFkZXJDaGVja2JveCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5zaG93QWxsQ29sdW1uRmlsdGVyXCIgY2xhc3M9XCJzb3J0LWZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgdG9vbHRpcCBGdW5jdGlvbmFsaXR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLCAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJmaWx0ZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcCBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtY2hlY2tib3gtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdTTElERVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRlUGlja2VyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LWRhdGVwaWNrZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDI9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDIsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1dFRUsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIndlZWtQaWNrZXJUb29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MywgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnVElNRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC10aW1lLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQ0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGVhZGVyLnNob3dUb29sdGlwSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwibm8tZmlsdGVyLXNwYWNlXCI+PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2x1clZpb2xhdGlvbkluZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwibHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBbc3R5bGUuYmFja2dyb3VuZF09XCJST1dfREFUQS5iYWNrZ3JvdW5kQ29sb3JcIiBcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIlJPV19EQVRBLmJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e1JPV19EQVRBLnJvd0NsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5ICsgJ1Jvd3NwYW4nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNvbWVUZHMgfHwoIGhpZGVTb21lVGRzICYmICFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1za2VsZXRvbi1sb2FkZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dTa2VsZXRvbkxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURhdGEubGVuZ3RoID4gMCAmJiAhKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3ViTGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udHlwZU9mQm9keURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIShzdGFycmVkSW5Qcm9ncmVzcyAmJiBST1dfREFUQS5vcmRlcklkID09IHNlbGVjdGVkU3RhcnJlZE9yZGVySWQpXCIgW2NsYXNzXT1cIlJPV19EQVRBLmljb25DbGFzc1wiIChjbGljayk9XCJpY29uQ2xpY2tlZChST1dfREFUQSxST1dfREFUQS5pY29uQ2xhc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgUk9XX0RBVEEuaWNvblRpdGxlVGV4dCB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LWljb24tY29sdW1uLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhcnJlZEluUHJvZ3Jlc3MgJiYgUk9XX0RBVEEub3JkZXJJZCA9PSBzZWxlY3RlZFN0YXJyZWRPcmRlcklkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWZvci1idXR0b24tZGlyZWN0aXZlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OX0NFTEwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRlYW0tdXNlci10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbbmdiVG9vbHRpcF09XCJ1c2VyTG9nZ2VkSW5EZXRhaWxzXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLCBhY3Rpb24uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIWFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uc2hvd09iamVjdEtleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hUTUxfU1RSSU5HJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiUk9XX0RBVEEubWVzc2FnZVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTVkdfSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YW5uYS1jb3JlLWFubmEtaWNvbi1jb2x1bW4gW2NvbXBvbmVudE5hbWVdPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudFwiIFtkYXRhT2JqZWN0XT1cIlJPV19EQVRBXCIgW2ljb25Ub1Nob3ddPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldIFwiIChvbkNvbHVtbkljb25DbGlja2VkKT1cInN2Z0ljb25DbGlja2VkKCRldmVudClcIj48L2FubmEtY29yZS1hbm5hLWljb24tY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidURVhUX0FDVElPTlMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5hY3Rpb25LZXldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRleHQuc2hvd1Rvb2x0aXBcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3t0ZXh0LmNsYXNzfX1cIiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25UZXh0QWN0aW9uVHlwZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJ0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJndC1pY29uLWNvbHVtbi10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXRleHQuc2hvd1Rvb2x0aXBcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3t0ZXh0LmNsYXNzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGV4dC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmlzRGlzYWJsZWRLZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIVJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0xJQ0tBQkxFX0RBVEEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0ZXh0IG9mIFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uYWN0aW9uS2V5XVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInRleHQuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2thYmxlRGF0YUNsaWNrZWQoUk9XX0RBVEEsIHRleHQuaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRVbml0cycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZS1kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1jbGlja2FibGUtZGF0YSc6IGRvd25sb2FkSW5Qcm9ncmVzcyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBST1dfREFUQS5kaXNwbGF5Qm9va2VkVW5pdHN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkSW5Qcm9ncmVzcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuaW52ZW50b3J5Q29kZUlkID09IHNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTVFJJTkdfX19JQ09OX09SX1RFWFRfQUNUSU9OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5hY3Rpb25LZXldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7IGFjdGlvbi5hZGRpdGlvbmFsVGV4dEJlZm9yZUxpbmsgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJndC1pY29uLWNvbHVtbi10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbZGlzYWJsZVRvb2x0aXBdPVwiIWFjdGlvbi5lbmFibGVUb29sdGlwRm9yQWRkaXRpb25hbFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24uYWRkaXRpb25hbFRleHRCZWZvcmVMaW5rIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbiAmJiBhY3Rpb24udHlwZU9mRGF0YT09ICdTVFJJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24uZGF0YSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtpZF09XCJhY3Rpb24uaWRcIiAqbmdJZj1cImFjdGlvbi5zaG93TGlua1wiIChjbGljayk9XCJ0ZXh0QWN0aW9uQ2xpY2tlZChST1dfREFUQSwgYWN0aW9uLmlkKVwiIFtjbGFzc109XCJhY3Rpb24ubGlua0NsYXNzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkTGlua31cIj57e2FjdGlvbi5kYXRhfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnNob3dUb29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHkgJiYgYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHkubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0aW9uLnNob3dJY29uXCIgW2NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkSWNvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZUNvbnRhaW5pbmdUYWJsZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRvb2x0aXAtY29udGFpbmluZy10YWJsZSByZW1vdmUtb24tc2Nyb2xsLWNsYXNzXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcENvbnRhaW5pbmdUYWJsZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uLnRvb2x0aXBEYXRhLnRvb2x0aXBUYWJsZUJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRJY29ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpY29uQ2xpY2tlZE9uU3RyaW5nSWNvbkFjdGlvblR5cGUoUk9XX0RBVEEsIGFjdGlvbi5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJhY3Rpb24udG9vbHRpcFBsYWNlbWVudCA/IGFjdGlvbi50b29sdGlwUGxhY2VtZW50IDogJ2JvdHRvbSBhdXRvJ1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIiB0b29sdGlwQ2xhc3M9XCJ0ZWFtLXVzZXItdG9vbHRpcCByZW1vdmUtb24tc2Nyb2xsLWNsYXNzIHt7IGFjdGlvblsndG9vbHRpcENsYXNzJ10gfX1cIiBbbmdiVG9vbHRpcF09XCJ1c2VyTG9nZ2VkSW5EZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRJY29ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaWNvbkNsaWNrZWRPblN0cmluZ0ljb25BY3Rpb25UeXBlKFJPV19EQVRBLCBhY3Rpb24uaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSFRNTCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSQURJTydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyByYWRpb0J1dHRvbi5jbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvQnV0dG9uLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgKm5nSWY9XCIhbGFzdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSAhPSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2ludmVudG9yeUNvZGUnICYmIFJPV19EQVRBWydpc1NlbGxlckdyb3VwJ10gJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHNlbGxlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNlbGxlckhpZXJhcmNoeVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5mbz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiaGllcmFyY2h5LXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChST1dfREFUQS5zZWxsZXJHcm91cEhpZXJhcmNoeSwgaW5mbylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZEF2ZXJhZ2VSYXRpbmcnICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgJiYgUk9XX0RBVEFbJ3Nob3dSYXRpbmdBdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRJbXBEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBSZWY6IHt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdQREYnIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdFWENFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5Eb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5hY3Rpdml0eW5hbWUudG9Mb3dlckNhc2UoKSA9PSAnb3JkZXIgb25ib2FyZGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnTElOSydcIiAoY2xpY2spPVwidmlld0RldGFpbHNDbGlja2VkKFJPV19EQVRBKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG4gb3JkZXItb25ib2FyZGVkXCI+VmlldyBkZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gdmlld0RldGFpbHNBbmRFbWFpbEJ0blwiPlZpZXcgZW1haWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tudWxsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YW5uYS1jb3JlLW5vLWRhdGEtbGliIFt3aWR0aF09XCJub0RhdGFXaWR0aFwiIFttYXJnaW5Ub3BdPVwibWFyZ2luVG9wXCIgKm5nSWY9XCIoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKVwiPiA8L2FubmEtY29yZS1uby1kYXRhLWxpYj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENoZWNrYm94IHRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2x0aXA+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydmdWxsLXdpZHRoJzogZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPT0gMX1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJUYWJPYmplY3RzXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXNvcnRcIiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCI+XHJcbiAgICAgICAgPGFubmEtY29yZS1zb3J0LWxpYiAgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgICAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVDbGVhckFsbFwiIChjbGljayk9XCJ1bkNoZWNrQWxsQ2hlY2tib3goKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVTZWxlY3RBbGxcIiAoY2xpY2spPVwic2VsZWN0QWxsQ2hlY2tib3goKVwiPlNlbGVjdCBhbGw8L2J1dHRvbj5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzZWFyY2gtYm94XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLXNlYXJjaCBzZWFyY2gtaWNvbiBzZWFyY2gtaWNvbi1wb3NpdGlvblwiPjwvaT5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hGb3JUaGVJdGVtKCRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktY2xvc2Ugc2VhcmNoLWJhci1jbG9zZVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1jbG9zZS1pY29uJzogKCFzZWFyY2hJdGVtIHx8IHNlYXJjaEl0ZW0ubGVuZ3RoID09IDApIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hlZEl0ZW0oKVwiPjwvaT5cclxuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRyYWNrIEJ5IGZ1bmMgLS0+XHJcbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIxOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXJcIiBjbGFzcz1cImRyb3Bkb3duLWRhdGEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8cCAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2YgdG9vbHRpcE9wdGlvbnNcIiBjbGFzcz1cImlucHV0IGV4YW1wbGUtaXRlbVwiIChjbGljayk9XCJzZWxlY3RVbnNlbGVjdENoZWNrYm94KG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveCBjaGVjay1ib3hcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhb3B0aW9uLmlzU2VsZWN0ZWRcIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJtaSBtZGktY2hlY2stYm94LW91dGxpbmUtYmxhbmsgY2hlY2stYm94IHVuY2hlY2tlZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIiB0aXRsZT1cInt7IG9wdGlvbi52YWx1ZSB9fVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmxhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHBvaW50ZXItZXZlbnRzOm5vbmVcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lciBjaGVja2JveC1maWx0ZXItYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPnt7IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPT0gdG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRvb2x0aXBPcHRpb25zLmxlbmd0aCAhPSAwICYmICFzZWFyY2hJdGVtPyAnQWxsICgnKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknOiAnKCcgKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknIH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzaG93LW1pbic6IHNsaWRlck1pblZhbHVlICE9IG9wdGlvbnMuZmxvb3IsICdzaG93LW1heCc6IHNsaWRlck1heFZhbHVlICE9IG9wdGlvbnMuY2VpbH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJFbnRlcmVkTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2hpZ2hWYWx1ZV09XCJzbGlkZXJFbnRlcmVkTWF4VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgICAgID48L25neC1zbGlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTcGFjZUZvclNsaWRlclwiIGNsYXNzPVwic2xpZGVyLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlsxLTEyXSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cih0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lTWluRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsxXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlswLTU5XSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiAuMjVweDtcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+VG88L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzBdXCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBlbmRUaW1lSG91ckVycn1cIiAobmdNb2RlbENoYW5nZSk9XCJlbmRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMS0xMl0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogZW5kVGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzFdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZU1pbkNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMC01OV0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogLjI1cHg7XCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwiY29sb3I6IGJsYWNrO3doaXRlLXNwYWNlOiBub3dyYXA7XCI+VGhpcyBwcmVlbXB0aW9uIGlzIHJlamVjdGVkIGFuZCBub3QgbWFya2VkIGZvciBjcmVkaXQuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRpbmdJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwiZmlyc3Qtcm93XCI+U2hvd3MgJ0Jvb2tlZCBSYXRpbmcnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIj5TaG93cyAnUHJvamVjdGVkIFJhdGluZycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbXBzSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBJTVBTJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgSU1QUycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXA+XHJcbiAgICA8cCBjbGFzcz1cInNwb3QtY29sdW1uLXRvb2x0aXAtbWVzc2FnZVwiID5UaGlzIGNvbnNpc3RzIG9mIGVxdWl2YWxpemVkIHNwb3RzIGFuZCB1bi1lcXVpdmFsaXplZCBQYWlkIFByb2dyYW1zICYgdW4tZXF1aXZhbGl6ZWQgTm9uLXNwb3RzLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmF0ZUluZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3MgPVwiZmlyc3Qtcm93XCIgPlNob3dzICdCb29rZWQgUmF0ZScgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiID5TaG93cyAnUHJvamVjdGVkICQgVmFsdWUnIGZvciBBRFUgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VsbGVySGllcmFyY2h5VG9vbHRpcD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3MgPSBcImhpZXJhcmNoeS10YWJsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzZWxsZXItaGllcmFyY2h5LXRhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+IzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkludmVudG9yeSBDb2RlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPlByb2dyYW0vRGVzY3JpcHRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGxlckdyb3VwSGllcmFyY2h5OyBsZXQgdG9vbHRpcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdG9vbHRpcEluZGV4ICsgMSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzaG93RWxsaXBzaXNUZXh0T25Ib3Zlcj57eyBkYXRhLkludmVudG9yeUNvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHNob3dFbGxpcHNpc1RleHRPbkhvdmVyPnt7IGRhdGEuUHJvZ3JhbSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsbGVyR3JvdXBIaWVyYXJjaHkubGVuZ3RoID09IDBcIj5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMDAwXCI+U2VsbGVyIGdyb3VwIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgaW52ZW50b3J5IGNvZGU8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+VGhlIHZhbHVlcyBhcmUgZm9yIHRoZSBlbnRpcmUgd2Vlay48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bvc3RlZFJhdGluZ0RpZmZlcmVuY2U+XHJcbiAgICA8cCBjbGFzcz1cImRpZmZlcmVuY2UtdGV4dFwiPlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zdGVkIGFuZCBib29rZWQgYXZlcmFnZSByYXRpbmcgaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkSW1wRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIGltcHJlc3Npb24gaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUsIFNwb3RzLCBHUlAsIENQUCwgSU1QUywgQ1BNIGNvcnJlc3BvbmRzIG9uIHRoZSBsYXN0IHBlcm1hbmVudCByZXZpc2lvbiBnZW5lcmF0ZWQ8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUgY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2lyY3VsYXJQcm9ncmVzc0Jhcj5cclxuICAgIDxjaXJjbGUtcHJvZ3Jlc3NcclxuICAgICAgICBbcGVyY2VudF09XCJwZXJjZW50RG9uZVwiXHJcbiAgICAgICAgW3JhZGl1c109XCI1XCJcclxuICAgICAgICBbc2hvd1RpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCJcclxuICAgICAgICBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICBbc3BhY2VdPVwiLTNcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjMjY4YmZmJ1wiXHJcbiAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJyNkNWQ1ZDUnXCJcclxuICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMTBcIlxyXG4gICAgPjwvY2lyY2xlLXByb2dyZXNzPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdXNlckxvZ2dlZEluRGV0YWlscz5cclxuICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1kaXYtY29udGFpbmVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmtleSAhPSAncmVhZCdcIj4gICAgICAgIFxyXG4gICAgICB7eyBkYXRhLmtleSB9fSA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5rZXkgPT0gJ3JlYWQnXCI+ICAgICAgICBcclxuICAgICAgICAgICA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWFya0FzUmVhZFRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWRpdi1jb250YWluZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0ZXh0QWN0aW9uVG9vbHRpcFwiPlxyXG4gICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGV4dEFjdGlvblRvb2x0aXBcIj5cclxuICAgICB7eyBkYXRhLmtleSB9fSA8Yj4ge3tkYXRhLnZhbHVlfX08L2I+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250YWluaW5nVGFibGVUZW1wbGF0ZT5cclxuICA8ZGl2ICpuZ0lmPVwidG9vbHRpcENvbnRhaW5pbmdUYWJsZVwiIGNsYXNzPVwidG9vbHRpcC1kaXYtY29udGFpbmVyXCI+XHJcbiAgICA8dWw+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaGVhZGVyTXNnIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudGFibGVIZWFkZXJNc2dcIj5cclxuICAgICAgICA8Yj4ge3toZWFkZXJNc2d9fSAgPC9iPlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0b29sdGlwLXRhYmxlXCI+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0b29sdGlwQ29udGFpbmluZ1RhYmxlLnRvb2x0aXBUYWJsZUhlYWRlclwiPlxyXG4gICAgICAgICAgICB7eyBoZWFkZXJ9fVxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG4gICAgICA8dGJvZHk+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3dzIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudG9vbHRpcFRhYmxlQm9keVwiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJvd3NcIj5cclxuICAgICAgICAgICAge3sgZGF0YSB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8dWw+XHJcbiAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbjowOyBwYWRkaW5nOjBcIiAqbmdGb3I9XCJsZXQgZm9vdGVyTXNnIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudGFibGVGb290ZXJNc2dcIj5cclxuICAgICAgICB7eyBmb290ZXJNc2cgfX0gXHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgIHt7IGRhdGEua2V5IH19IDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==