vcomply-workflow-engine 6.1.52 → 6.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -1
- package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +15 -17
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +112 -150
- package/esm2022/lib/constants/xlsx.constant.mjs +61 -0
- package/esm2022/lib/pipes/responsibility-checked.pipe.mjs +4 -4
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -3
- package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +1 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +3 -5
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +3 -5
- package/esm2022/lib/workflow-engine.module.mjs +2 -2
- package/fesm2022/vcomply-workflow-engine.mjs +197 -181
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +52 -0
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +57 -0
- package/lib/constants/xlsx.constant.d.ts +52 -0
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -2
- package/package.json +1 -1
|
@@ -241,6 +241,7 @@ export class AddMultipleResponsibilityComponent {
|
|
|
241
241
|
this.fileUpload();
|
|
242
242
|
}
|
|
243
243
|
const responsibilityData = this.data.filter((dataElement) => dataElement.length > 0);
|
|
244
|
+
console.log(responsibilityData, 'responsibilityData');
|
|
244
245
|
responsibilityData.forEach((report) => {
|
|
245
246
|
let validDate;
|
|
246
247
|
const validFields = this.checkValidity(report);
|
|
@@ -905,4 +906,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
905
906
|
}], feature: [{
|
|
906
907
|
type: Input
|
|
907
908
|
}] } });
|
|
908
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBZTdCLE1BQU0sT0FBTyxrQ0FBa0M7SUF5QjdDLElBQTJCLGdCQUFnQixDQUFDLElBQVM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBeURELFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QixFQUN6QixhQUE0QjtRQUw1QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGtCQUFhLEdBQWIsYUFB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QixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLGtHQUFrRyxFQUNsRyxPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0E5OEJVLGtDQUFrQzttR0FBbEMsa0NBQWtDLHlhQzFCL0MsODZFQTJDQTs7NEZEakJhLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxpQ0FBaUM7Z1FBS2pDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRSxXQUFXO3NCQUFuQixLQUFLO2dCQUlJLDhCQUE4QjtzQkFBdkMsTUFBTTtnQkFnQm9CLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxjQUFjO2dCQUdaLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5QnVsa1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5cbnR5cGUgQU9BID0gYW55W11bXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZmVhdHVyZWZsYWc6IGFueTtcbiAgdXJsID1cbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XG4gIGlzTm90aWZpY2F0aW9uUGVuZGluZyA9IDA7XG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICcnO1xuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1xuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxuICAgIGJ5U3RhdHVzOiB7IHR5cGU6IFtdLCBzdWJUeXBlOiBbXSB9LFxuICAgIGZpbHRlck9iamVjdDoge1xuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICB9LFxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcbiAgICBzdGF0dXM6ICcnLFxuICB9O1xuXG4gIEBJbnB1dCgndXBsb2FkZWRGaWxlJykgc2V0IHVwbG9hZGVkRmlsZURhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy51cGxvYWRlZEZpbGUoZGF0YSk7XG4gIH1cbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcblxuICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ6IGFueSA9IHtcbiAgICBoZWFkZXI6IFtdLFxuICAgIHJlcG9ydHM6IFtdLFxuICB9O1xuXG4gIHRlbXBsYXRlSW5mbzogYW55ID0ge1xuICAgIGNhdGVnb3J5TGlzdDogW10sXG4gICAgcmNMaXN0OiBbXSxcbiAgICBhc3NpZ25vcnNMaXN0OiBbXSxcbiAgICBhc3NpZ25lZXNMaXN0OiBbXSxcbiAgICBtZW1iZXJJZDogJycsXG4gIH07XG4gIGlzTG9hZGVyID0gZmFsc2U7XG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XG4gIGRvd25sb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgaXNGaWxlRW1wdHkgPSBmYWxzZTtcbiAgaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICBmaWxlTmFtZTogYW55O1xuICBkYXRhOiBhbnk7XG4gIHNob3dFeGNlbCA9IGZhbHNlO1xuICB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcbiAgZmlsZVJlc3BvbnNlOiBhbnkgPSBbXTtcbiAgZmlsZVZhbHVlOiBhbnk7XG4gIG1lbWJlcklkID0gMDtcbiAgb3JnYW5pemF0aW9uSWQgPSAwO1xuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XG4gIGRvd25sb2FkU3RhdHVzOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcbiAgZG93bmxvYWRQZXJjZW50ID0gMDtcbiAgZGVmYXVsdE93bmVyID0gJyc7XG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhIFdlJ3JlIHByb2Nlc3NpbmcgeW91ciByZXF1ZXN0IGFuZCB5b3Ugd2lsbCBiZSBub3RpZmllZCB2aWEgZW1haWwgdXBvbiBjb21wbGV0aW9uLmA7XG4gIGFjdGlvbkJ1dHRvbnMgPSBbXG4gICAge1xuICAgICAgYnV0dG9uVGV4dDogJ0VudHJ1c3QgTW9yZSBSZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGNsYXNzOiAnd2hpdGUtYnRuJyxcbiAgICAgIGlkOiAnYWRkTW9yZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBidXR0b25UZXh0OiB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xuICAgICAgICA/ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMgSW4gUXVldWUnXG4gICAgICAgIDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcbiAgICAgIGlkOiAndmlldycsXG4gICAgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIHJpc2tDbGFzc0VuYWJsZWQ6IGFueTtcbiAgdXNlckluZm8hOiBhbnk7XG4gIHJlc3BvbnNpYmlsaXR5RGF0YSE6IGFueTtcbiAgZmZCdWxrVXBsb2FkT3B0aW1pemF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHt9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcblxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xuICAgIHRoaXMudXNlckluZm8gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcjtcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudXNlckluZm9cbiAgICAgID8gdGhpcy51c2VySW5mby5uYW1lICsgJyAoJyArIHRoaXMudXNlckluZm8uZW1haWwgKyAnKSdcbiAgICAgIDogJyc7XG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucmlza0NsYXNzRW5hYmxlZCA9IHJlcy5lbmFibGVfcmlza2NsYXNzO1xuICAgIH0pO1xuICAgIHRoaXMuZmZCdWxrVXBsb2FkT3B0aW1pemF0aW9uID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfYnVsa191cGxvYWRfb3B0aW1pemF0aW9uJ1xuICAgICk7XG4gIH1cblxuICB0cmlnZ2VyQnJvd3NlRmlsZSgpIHtcbiAgICBjb25zdCBnZXRGaWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVJbnB1dCcpO1xuICAgIGlmIChnZXRGaWxlKSB7XG4gICAgICBnZXRGaWxlLmNsaWNrKCk7XG4gICAgfVxuICB9XG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnkpIHtcbiAgICAvLyB0aGlzLnRlc3RhcnJheT1bXTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHJlcG9ydHM6IFtdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIGNhdGVnb3J5TGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxuICAgICAgICBhc3NpZ25lZXNMaXN0OiBbXSxcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxuICAgICAgfTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Njcm9sbFJlZmVyZW5jZScpO1xuICAgICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgICByZWZlcmVuY2Uuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXS5uYW1lO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZlbnQudGFyZ2V0IGFzIERhdGFUcmFuc2ZlcjtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY3VybHlcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcbiAgICAgICAgY29uc3Qgd3NuYW1lMTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1sxXTtcbiAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XG4gICAgICAgIGNvbnN0IHRlbXBEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWUxXTtcblxuICAgICAgICB0aGlzLmRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MsIHtcbiAgICAgICAgICBoZWFkZXI6IDEsXG4gICAgICAgICAgcmF3OiBmYWxzZSxcbiAgICAgICAgfSkgYXMgQU9BO1xuXG4gICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7IGhlYWRlcjogMSB9KSBhcyBBT0E7XG4gICAgICAgIGNvbnN0IHRlbXBMaXN0ID0gdERhdGEuZmlsdGVyKFxuICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmZpbGVOYW1lLnN1YnN0cigtNSkgIT09ICcueGxzeCcpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXG4gICAgICAgICAgICAnIFJFVFJZJztcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAoXG4gICAgICAgICAgdGhpcy5kYXRhWzBdLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyLnNwbGljZShcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIubGVuZ3RoIC0gMSxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKDIpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzBdICE9PVxuICAgICAgICAgICdFbnRlciBSZXNwb25zaWJpbGl0eSBOYW1lKidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV07XG5cbiAgICAgICAgaWYgKHRoaXMubWVtYmVyX29ial9pZCAhPSB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wTGlzdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnRbMl0gJiYgZWxlbWVudFsyXSAhPSAnICcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzJdLFxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogZWxlbWVudFszXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3QucHVzaChjYXRlZ29yeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50WzldICYmIGVsZW1lbnRbOV0gIT0gJyAnKSB7XG4gICAgICAgICAgICBjb25zdCByYyA9IHtcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFs5XSxcbiAgICAgICAgICAgICAgcmNfaWQ6IGVsZW1lbnRbMTBdLFxuICAgICAgICAgICAgICBwYXJlbnRJZHM6IEpTT04ucGFyc2UoZWxlbWVudFsxM10pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTFdICYmIGVsZW1lbnRbMTFdICE9ICcgJykge1xuICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSB7XG4gICAgICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxMV0sXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTFdLnNwbGl0KCcgKCcpWzBdLFxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcbiAgICAgICAgICAgICAgZW1wbG95ZWVfaWQ6IGVsZW1lbnRbMTJdLFxuICAgICAgICAgICAgICBteV9tZW1iZXJfaWQ6IGVsZW1lbnRbMTZdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QucHVzaChhc3NpZ25lZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50WzE0XSAmJiBlbGVtZW50WzE0XSAhPSAnICcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9yID0ge1xuICAgICAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMTRdLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzE0XS5zcGxpdCgnICgnKVswXSxcbiAgICAgICAgICAgICAgZW1haWw6IGVsZW1lbnRbMTRdLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJyksXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFsxNV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWdub3JzTGlzdC5wdXNoKGFzc2lnbm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0VtcHR5ID0gdGhpcy5jaGVja0VtcHR5RmlsZSgpO1xuICAgICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdZb3UgaGF2ZSB1cGxvYWRlZCBhIGJsYW5rIHRlbXBsYXRlLiBQbGVhc2UgYWRkIGRldGFpbHMgZm9yIGFsbCBtYW5kYXRvcnkgZmllbGRzLiBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5RGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcbiAgICAgICAgcmVzcG9uc2liaWxpdHlEYXRhLmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkRGF0ZTtcbiAgICAgICAgICBjb25zdCB2YWxpZEZpZWxkcyA9IHRoaXMuY2hlY2tWYWxpZGl0eShyZXBvcnQpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkVXNlciA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydFsyXSwgJ2VudHJ1c3RlZF90bycpXG4gICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgbGV0IG9iajogYW55O1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gIT09ICdTZWxlY3QgYSBQcm9ncmFtJykge1xuICAgICAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcbiAgICAgICAgICAgIG9iaiA9IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXG4gICAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0gPz8gJycsXG4gICAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzNdID8/ICcnLFxuICAgICAgICAgICAgICBkYXk6IHJlcG9ydFs0XSA/PyAnJyxcbiAgICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs1XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs2XSA/PyAnJyxcbiAgICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs3XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs4XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFs5XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMF0gPz8gJycsXG4gICAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMV0gPz8gJycsXG4gICAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTJdID8/ICcnLFxuICAgICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzEzXSA/PyAnJyxcbiAgICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0/LnRvU3RyaW5nKCkgPz8gJycsXG4gICAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE1XSA/PyAnJyxcbiAgICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTZdID8/ICcnLFxuICAgICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxN10gPz8gJycsXG4gICAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMThdID8/ICcnLFxuICAgICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxOV0/LnRvU3RyaW5nKCkgPz8gJycsXG5cbiAgICAgICAgICAgICAgaXNWYWxpZER1ZURhdGU6IHZhbGlkRGF0ZSxcbiAgICAgICAgICAgICAgaXNQYXN0RGF0ZTogdGhpcy5pc1Bhc3REYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKSxcbiAgICAgICAgICAgICAgY2hlY2tWYWxpZGl0eTogdmFsaWRGaWVsZHMsXG4gICAgICAgICAgICAgIGlzVmFsaWQ6IHZhbGlkRGF0ZSAmJiB2YWxpZEZpZWxkcyxcbiAgICAgICAgICAgICAgaXNWYWxpZFVzZXI6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xuICAgICAgICAgICAgb2JqID0ge1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSA/PyAnJyxcbiAgICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSA/PyAnJyxcbiAgICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogcmVwb3J0WzNdID8/ICcnLFxuICAgICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs0XSA/PyAnJyxcbiAgICAgICAgICAgICAgZGF5OiByZXBvcnRbNV0gPz8gJycsXG4gICAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbNl0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbN10gPz8gJycsXG4gICAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbOF0gPz8gJycsXG4gICAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbOV0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTBdID8/ICcnLFxuICAgICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzExXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzEyXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxM10gPz8gJycsXG4gICAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTRdID8/ICcnLFxuICAgICAgICAgICAgICBub3RlczogcmVwb3J0WzE1XT8udG9TdHJpbmcoKSA/PyAnJyxcbiAgICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTZdID8/ICcnLFxuICAgICAgICAgICAgICBhbHdheXNOb3RpZnk6IHJlcG9ydFsxN10gPz8gJycsXG4gICAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzE4XSA/PyAnJyxcbiAgICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOV0gPz8gJycsXG4gICAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzIwXT8udG9TdHJpbmcoKSA/PyAnJyxcblxuICAgICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxuICAgICAgICAgICAgICBpc1Bhc3REYXRlOiB0aGlzLmlzUGFzdERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pLFxuICAgICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcbiAgICAgICAgICAgICAgaXNWYWxpZDogdmFsaWREYXRlICYmIHZhbGlkRmllbGRzLFxuICAgICAgICAgICAgICBpc1ZhbGlkVXNlcjogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMucHVzaChvYmopO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tFbXB0eUZpbGUoKSB7XG4gICAgbGV0IGlzRW1wdHkgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKTtcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDEpIHtcbiAgICAgIGlzRW1wdHkgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eTtcbiAgfVxuXG4gIC8vIHRlc3RhcnJheTphbnlbXT1bXVxuXG4gIGNoZWNrVmFsaWRpdHkocmVwb3J0OiBhbnkpIHtcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xuICAgIGlmIChyZXBvcnRbMF0pIHtcbiAgICAgIHZhciB0cmltbWVkTmFtZSA9IHJlcG9ydFswXS50b1N0cmluZygpLnJlcGxhY2UocmUsICcnKS50cmltKCk7XG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBpbmRleCAgICAgICAgICAga2V5IGZvciAgICAgICAgICAgICAgIGNvbmRpdGlvblxuICAgICAqXG4gICAgICogIHJlcG9ydFsxXSAgICAgICBPbiBCZWhhbGYgb2YgdXNlclxuICAgICAqICByZXBvcnRbMTFdICAgICAgUmV2aWV3ZXIgICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyAnU2VsZWN0IGEgUHJvZ3JhbSdcbiAgICAgKiAgcmVwb3J0WzEwXSAgICAgIFJldmlld2VyICAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xuICAgICAqICByZXBvcnRbMTZdICAgICAgQWx3YXlzIE5vdGlmeSAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyBub3QgJ1NlbGVjdCBhIFByb2dyYW0nKGRpc2FibGVkIGZvciB1c2VycyB3aXRob3V0IHByb2dyYW0gcGVybWlzc2lvbilcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXG4gICAgICogIHJlcG9ydFsxN10gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxuICAgICAqICByZXBvcnRbMTddICAgICAgQWx3YXlzIE5vdGlmeVxuICAgICAqICByZXBvcnRbMThdICAgICAgTm90aWZ5IE9uIEZhaWx1cmVcbiAgICAgKiAgcmVwb3J0WzJdICAgICAgIEFzc2lnbmVlXG4gICAgICogIHJlcG9ydFs0XSAgICAgICBmcmVxdWVuY3kgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xuICAgICAqICByZXBvcnRbM10gICAgICAgZnJlcXVlbmN5ICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyBub3QgJ1NlbGVjdCBhIFByb2dyYW0nKGRpc2FibGVkIGZvciB1c2VycyB3aXRob3V0IHByb2dyYW0gcGVybWlzc2lvbilcbiAgICAgKiAgdHJpbW1lZE5hbWUgICAgIFJlcG9ydCBuYW1lXG4gICAgICogIGRlZmF1bHRPd25lciAgICBEZWZhdWx0IEFzc2lnbm9yXG4gICAgICovXG4gICAgY29uc3QgZnJlcXVlbmN5ID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpID09XG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcbiAgICAgICAgPyByZXBvcnRbNF1cbiAgICAgICAgOiByZXBvcnRbM107XG4gICAgY29uc3QgcmV2aWV3ZXIgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cbiAgICAgICdzZWxlY3QgYSBwcm9ncmFtJ1xuICAgICAgICA/IHJlcG9ydFsxMV1cbiAgICAgICAgOiByZXBvcnRbMTBdO1xuICAgIGNvbnN0IE5vdGlmeUFsd2F5cyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXG4gICAgICAgID8gcmVwb3J0WzE3XVxuICAgICAgICA6IHJlcG9ydFsxNl07XG4gICAgY29uc3QgTm90aWZ5T25GYWlsdXJlID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpID09XG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcbiAgICAgICAgPyByZXBvcnRbMThdXG4gICAgICAgIDogcmVwb3J0WzE3XTtcblxuICAgIGlmIChcbiAgICAgICFmcmVxdWVuY3kgfHxcbiAgICAgICF0cmltbWVkTmFtZSB8fFxuICAgICAgKHJlcG9ydFsxXSAmJlxuICAgICAgICAocmVwb3J0WzFdID09IE5vdGlmeUFsd2F5cyB8fCByZXBvcnRbMV0gPT0gTm90aWZ5T25GYWlsdXJlKSkgfHxcbiAgICAgICghcmVwb3J0WzFdICYmXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMgfHxcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgKHJlcG9ydFsyXSAmJlxuICAgICAgICAocmVwb3J0WzJdID09IHJldmlld2VyIHx8XG4gICAgICAgICAgcmVwb3J0WzJdID09IE5vdGlmeUFsd2F5cyB8fFxuICAgICAgICAgIHJlcG9ydFsyXSA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgKCFyZXBvcnRbMl0gJiZcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeUFsd2F5cyB8fFxuICAgICAgICAgIHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XG4gICAgICAocmV2aWV3ZXIgJiYgKHJldmlld2VyID09IE5vdGlmeUFsd2F5cyB8fCByZXZpZXdlciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgIXJlcG9ydFsyXVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcbiAgICAgIHsgdmFsdWU6IDMsIG1vbnRoOiAnTWFyJyB9LFxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcbiAgICAgIHsgdmFsdWU6IDYsIG1vbnRoOiAnSnVuJyB9LFxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcbiAgICAgIHsgdmFsdWU6IDksIG1vbnRoOiAnU2VwJyB9LFxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxuICAgICAgeyB2YWx1ZTogMTIsIG1vbnRoOiAnRGVjJyB9LFxuICAgIF07XG5cbiAgICBpZiAoIShkYXkgfHwgbW9udGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb250aEFuZFllYXIgPSBtb250aC5zcGxpdChcIidcIik7XG5cbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcbiAgICAgICAgZGF5ICsgJy0nICsgbW9udGhBbmRZZWFyWzBdICsgJy0nICsgMjAgKyBtb250aEFuZFllYXJbMV0gKyAnIDAwOjAwOjAwJyxcbiAgICAgICAgJ0RELU1NTU0tWVlZWSBISDptbTpzcydcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XG4gICAgICBpZiAoc3RhcnREYXRlID09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7fSwgNSk7XG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcblxuICAgICAgZGF0ZV92YWx1ZS5zZXRNb250aChcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXG4gICAgICAgICAgICAgID8udmFsdWUgLSAxXG4gICAgICAgICAgOiBtb250aFxuICAgICAgKTtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoTnVtYmVyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKSk7XG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50RGF0ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICE9XG4gICAgICAgICAgZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICYmXG4gICAgICAgIGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxuICAgICAgeyB2YWx1ZTogMiwgbW9udGg6ICdGZWInIH0sXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxuICAgICAgeyB2YWx1ZTogNSwgbW9udGg6ICdNYXknIH0sXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxuICAgICAgeyB2YWx1ZTogOCwgbW9udGg6ICdBdWcnIH0sXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcbiAgICAgIHsgdmFsdWU6IDExLCBtb250aDogJ05vdicgfSxcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcbiAgICBdO1xuXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnN0IHJlcG9ydERhdGUgPSBuZXcgRGF0ZShkYXkgKyBtb250aC5zcGxpdChcIidcIikpO1xuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxuICAgICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cbiAgICAgICAgICAgICAgPy52YWx1ZSAtIDFcbiAgICAgICAgICA6IG1vbnRoXG4gICAgICApO1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShOdW1iZXIoZGF5KSk7XG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IGRvd25sb2FkRGF0ZSA9IG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XG5cbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmRvd25sb2FkUmVzcG9uc2liaWxpdHlUZW1wbGF0ZSgpLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAxMDAgKiAoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXG4gICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3hsc3gnLFxuICAgICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGF5bG9hZDogYW55ID0gW107XG4gICAgY29uc3QgZnJlcXVlbmN5VHlwZUFycmF5ID0gWycxJywgJzInLCAnMycsICc0JywgJzcnLCAnMCddO1xuICAgIGNvbnN0IGRlZmF1bHRXaW5kb3cgPSBbMCwgMiwgNywgMzAsIDcsIDE1XTtcbiAgICBjb25zdCBkZWZhdWx0RmFpbGVkRGF5ID0gWzEsIDIsIDUsIDUsIDUsIDVdO1xuICAgIGxldCB2YWxpZFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xuICAgIGlmICh0aGlzLmZmQnVsa1VwbG9hZE9wdGltaXphdGlvbikge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHMuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcG9ydD8uaXNWYWxpZCkge1xuICAgICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdGllcyArPSAxO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHBheWxvYWQgPSB7XG4gICAgICAgIG9yaWdpbmFsRmlsZW5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5vcmlnaW5hbF9maWxlbmFtZSxcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlbmFtZSxcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlcGF0aCxcbiAgICAgICAgdG90YWxSZXNwb25zaWJpbGl0eUNvdW50OlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5yZXBvcnRzPy5sZW5ndGgsXG4gICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdHlDb3VudDogdmFsaWRSZXNwb25zaWJpbGl0aWVzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVwb3J0LmlzVmFsaWQpIHtcbiAgICAgICAgICBpZiAocmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAncmNfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCByZXZpZXdlckRldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgcmVwb3J0LnJldmlld2VyLFxuICAgICAgICAgICAgJ3Jldmlld2VyJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYXNzaWdub3JEZXRhaWxzOiBhbnkgPSByZXBvcnQuYXNzaWdub3JcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFzc2lnbm9yLCAnYXNzaWdub3InKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICBjb25zdCBjY0RldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hbHdheXNOb3RpZnksICdjYycpO1xuICAgICAgICAgIGNvbnN0IGNjRmFpbHVyZURldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgcmVwb3J0Lm5vdGlmeU9uRmFpbHVyZSxcbiAgICAgICAgICAgICdjY0ZhaWx1cmUnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuXG4gICAgICAgICAgY29uc3QgY2F0ZWdvcnlOYW1lID0gcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkuaW5jbHVkZXMoXG4gICAgICAgICAgICAnW1dJVEhJTl0nXG4gICAgICAgICAgKVxuICAgICAgICAgICAgPyByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeS5zcGxpdCgnIFsnKVswXVxuICAgICAgICAgICAgOiByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeTtcbiAgICAgICAgICBjb25zdCBmcmVxdWVuY3lWYWx1ZSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgICAgICAgIHJlcG9ydC5mcmVxdWVuY3ksXG4gICAgICAgICAgICByZXBvcnQuZGF5LFxuICAgICAgICAgICAgcmVwb3J0Lm1vbnRoXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBkYXRlQW5kTW9udGggPSByZXBvcnQubW9udGguc3BsaXQoXCInXCIpO1xuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcbiAgICAgICAgICAgIHJlcG9ydC5kYXkgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBkYXRlQW5kTW9udGhbMF0gK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAyMCArXG4gICAgICAgICAgICAgIGRhdGVBbmRNb250aFsxXSArXG4gICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxuICAgICAgICAgICAgJ0RELU1NTU0tWVlZWSBISDptbTpzcydcbiAgICAgICAgICApLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xuXG4gICAgICAgICAgbGV0IGNvbXBsZXRlRGF5cztcbiAgICAgICAgICBsZXQgbm90Q29tcGxldGVEYXlzO1xuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdO1xuICAgICAgICAgIGlmIChyZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgIT09ICcnKSB7XG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSByZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3c7XG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheS5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xuICAgICAgICAgICAgY29tcGxldGVEYXlzID0gZGVmYXVsdFdpbmRvd1tpbmRleE9mQXJyYXldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVwb3J0LmZhaWxlZEFmdGVyICE9PSAnJykge1xuICAgICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gcmVwb3J0LmZhaWxlZEFmdGVyO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleE9mQXJyYXkgPSBmcmVxdWVuY3lUeXBlQXJyYXkuaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcbiAgICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyA9IGRlZmF1bHRGYWlsZWREYXlbaW5kZXhPZkFycmF5XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICAgICAgdXNlcklkOiB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXNzaWdub3JEZXRhaWxzXG4gICAgICAgICAgICAgID8gYXNzaWdub3JEZXRhaWxzLm1lbWJlcklkXG4gICAgICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICAgIG1lbWJlcl9uYW1lOiBhc3NpZ25vckRldGFpbHNcbiAgICAgICAgICAgICAgPyByZXBvcnQuYXNzaWdub3JcbiAgICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vci5zcGxpdCgnICgnKVswXVxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgOiB0aGlzLmRlZmF1bHRPd25lclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyLnNwbGl0KCcgKCcpWzBdXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBtZW1iZXJfZW1haWw6IGFzc2lnbm9yRGV0YWlsc1xuICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vclxuICAgICAgICAgICAgICAgID8gcmVwb3J0LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJylcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lci5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBjcmVhdGVkX2J5OiBhc3NpZ25vckRldGFpbHMgPyB0aGlzLm1lbWJlcklkIDogMCxcbiAgICAgICAgICAgIHJlcG9ydF9uYW1lOiByZXBvcnQucmVzcG9uc2liaWxpdHlOYW1lID8/ICcnLFxuICAgICAgICAgICAgZW50cnVzdGVkX3RvOiByZXBvcnQuYXNzaWduZWUuc3BsaXQoJyAoJylbMF0gPz8gJycsXG4gICAgICAgICAgICBlbnRydXN0ZWRfdG9faWQ6IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpLFxuICAgICAgICAgICAgZW1haWxfYWRkcmVzczpcbiAgICAgICAgICAgICAgcmVwb3J0LmFzc2lnbmVlLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJykgPz8gJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiBjYXRlZ29yeU5hbWUsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lX3dpdGhfdHJlZTogJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LFxuICAgICAgICAgICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmNfbmFtZTogcmNEZXRhaWxzID8gcmNEZXRhaWxzLm5hbWUgOiAnJyxcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHMucmNJZCA6IDAsXG4gICAgICAgICAgICBlbnRpdHlfdHJlZTpcbiAgICAgICAgICAgICAgcmNEZXRhaWxzICYmIHJjRGV0YWlscy5yY0lkXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHMucGFyZW50SWRzIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgZnJlcXVlbmN5X2hhbmRsZXI6IGZyZXF1ZW5jeVZhbHVlLFxuICAgICAgICAgICAgY29tcGxpYW5jZV90eXBlOiBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdLFxuICAgICAgICAgICAgZnJlcXVlbmN5X2Rlc2NyaXB0aW9uOiByZXBvcnQuZnJlcXVlbmN5LFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogcmVwb3J0LmRheSA/IHN0YXJ0RGF0ZSA6IGN1cnJlbnREYXRlICsgJyAwMDowMDowMCcsXG4gICAgICAgICAgICByaXNrX2NsYXNzOiByZXBvcnQucmVwb3J0Q2xhc3MgPz8gJycsXG4gICAgICAgICAgICByaXNrX2NsYXNzSWQ6IHJlcG9ydC5yZXBvcnRDbGFzc1xuICAgICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5yZXBvcnRDbGFzcywgJ3Jpc2tfY2xhc3MnKVxuICAgICAgICAgICAgICA6IHRoaXMucmlza0NsYXNzRW5hYmxlZFxuICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgOiAyLFxuICAgICAgICAgICAgZG9jX3V0YzogMCxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHJlcG9ydC5ub3RlcyA/PyAnJyxcbiAgICAgICAgICAgIGNjX21haWw6IGNjRGV0YWlscyA/IGNjRGV0YWlscy5lbWFpbCA6ICcnLFxuICAgICAgICAgICAgY2NfbWFpbF9pZDogY2NEZXRhaWxzID8gY2NEZXRhaWxzLmVtcGxveWVlSWQgOiAnJyxcbiAgICAgICAgICAgIGNjX2ZhaWxlZF9tYWlsOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscy5lbWFpbCA6ICcnLFxuICAgICAgICAgICAgY2NfZmFpbHVyZV9pZDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHMuZW1wbG95ZWVJZCA6IDAsXG4gICAgICAgICAgICBzZW5kX3JlbWluZGVyOiAnJyxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiBmcmVxdWVuY3lUeXBlID09PSAnMScgPyAwIDogY29tcGxldGVEYXlzLFxuICAgICAgICAgICAgZmFpbGVkX2FmdGVyOiBub3RDb21wbGV0ZURheXMsXG4gICAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiAnJyxcbiAgICAgICAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzpcbiAgICAgICAgICAgICAgcmVwb3J0LmRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZCA9PT0gJ1llcycgPyAxIDogMCxcbiAgICAgICAgICAgIHJlcG9ydF9pZDogMCxcbiAgICAgICAgICAgIGlzX2Fzc2lnbmVkX2ZsYWc6IDAsXG4gICAgICAgICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXG4gICAgICAgICAgICBrZXljb21wbGlhbmNlOiByZXBvcnQua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICAga2V5X2NvbXBsaWFuY2U6IHJlcG9ydC5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycgPyAxIDogMCxcbiAgICAgICAgICAgIHJldmlld2VySWQ6IHJldmlld2VyRGV0YWlscyA/IHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkIDogMCxcbiAgICAgICAgICAgIHJldmlld2VyX2FycjpcbiAgICAgICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzICYmIHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGxldmVsMToge1xuICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IHJldmlld2VyRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyX2FjY2VwdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU0VRVUVOVElBTCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgICAgIHJldmlld2VyV2luZG93OlxuICAgICAgICAgICAgICByZXBvcnQucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiA9PT0gJydcbiAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICA6IHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluLFxuICAgICAgICAgICAgcmV2aWV3ZXJGYWlsdXJlOlxuICAgICAgICAgICAgICByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIgPT09ICcnXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIsXG4gICAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtYWlsIDogJycsXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgID8gcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBkb2N1bWVudGFyeUV2aWRlbmNlOiByZXBvcnQubm90ZXMgPz8gJycsXG4gICAgICAgICAgICBpc2RvY3VtZW50YXJ5RXZpZGVuY2U6XG4gICAgICAgICAgICAgIHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnID8gMSA6IDAsXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydC5vYmplY3RpdmUgPz8gJycsXG4gICAgICAgICAgICBleGNlbF9zaGVldF9pbmZvOiB0aGlzLmZpbGVSZXNwb25zZSxcbiAgICAgICAgICAgIHNob3dMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgIGN1c3RvbV90YWdzOiAnW10nLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcGF5bG9hZC5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5hZGRCdWxrUmVzcG9uc2liaWxpdHkocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3VibWl0V29ya2Zsb3coKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFdvcmtmbG93KCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB7IHR5cGU6ICdzdWJtaXQnIH07XG4gICAgY29uc3QgdGFyZ2V0T3JpZ2luID0gdGhpcy5nZXRPcmlnaW4oKTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7XG4gIH1cblxuICBwcml2YXRlIGdldE9yaWdpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICB9XG5cbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAncmNfaWQnOlxuICAgICAgICBsZXQgcmNPYmogPSB7IG5hbWU6ICcnLCByY0lkOiAwLCBwYXJlbnRJZHM6IFtdIH07XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lO1xuICAgICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZS5pbmNsdWRlcygnW1dJVEhJTl0nKSkge1xuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lLnNwbGl0KCcgW1dJVEhJTl0gJylbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmNPYmogPSB7XG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHJjSWQ6IHJjX2VsZW1lbnQucmNfaWQsXG4gICAgICAgICAgICAgIHBhcmVudElkczogcmNfZWxlbWVudC5wYXJlbnRJZHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByY09iajtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGxldCByZXZpZXdlck9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKHJldmlld2VyRWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJldmlld2VyRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xuICAgICAgICAgICAgcmV2aWV3ZXJPYmogPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHJldmlld2VyRWxlbWVudC5uYW1lLFxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiByZXZpZXdlckVsZW1lbnQubXlfbWVtYmVyX2lkLFxuICAgICAgICAgICAgICBlbWFpbDogcmV2aWV3ZXJFbGVtZW50LmVtYWlsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmV2aWV3ZXJPYmo7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcic6XG4gICAgICAgIGxldCBhc3NpZ25vck9iaiA9IHsgbmFtZTogJycsIG1lbWJlcklkOiAwLCBlbWFpbDogJycgfTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWdub3JzTGlzdC5mb3JFYWNoKChhc3NpZ25vckVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChhc3NpZ25vckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGFzc2lnbm9yT2JqID0ge1xuICAgICAgICAgICAgICBuYW1lOiBhc3NpZ25vckVsZW1lbnQubmFtZSxcbiAgICAgICAgICAgICAgZW1haWw6IGFzc2lnbm9yRWxlbWVudC5lbWFpbCxcbiAgICAgICAgICAgICAgbWVtYmVySWQ6IGFzc2lnbm9yRWxlbWVudC5tZW1iZXJfaWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhc3NpZ25vck9iajtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgbGV0IGNjT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoY2NFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoY2NFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XG4gICAgICAgICAgICBjY09iaiA9IHtcbiAgICAgICAgICAgICAgbmFtZTogY2NFbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjRWxlbWVudC5lbXBsb3llZV9pZCxcbiAgICAgICAgICAgICAgZW1haWw6IGNjRWxlbWVudC5lbWFpbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNjT2JqO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbHVyZSc6XG4gICAgICAgIGxldCBjY2ZPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChjY2ZFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoY2NmRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xuICAgICAgICAgICAgY2NmT2JqID0ge1xuICAgICAgICAgICAgICBuYW1lOiBjY2ZFbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjZkVsZW1lbnQuZW1wbG95ZWVfaWQsXG4gICAgICAgICAgICAgIGVtYWlsOiBjY2ZFbGVtZW50LmVtYWlsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2NmT2JqO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZW50cnVzdGVkX3RvJzpcbiAgICAgICAgbGV0IGVtcElkID0gMDtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGVtcElkID0gZW5FbGVtZW50LmVtcGxveWVlX2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbXBJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeV9pZCc6XG4gICAgICAgIGxldCBjYXRJZCA9IDA7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChjYXRlZ29yeTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGNhdGVnb3J5Lm5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgY2F0SWQgPSBjYXRlZ29yeS5jYXRlZ29yeV9pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2F0SWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyaXNrX2NsYXNzJzpcbiAgICAgICAgaWYgKGl0ZW0gPT0gJ0xvdycpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdMb3ctTWVkaXVtJykge1xuICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ01lZGl1bS1IaWdoJykge1xuICAgICAgICAgIHJldHVybiAzO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0hpZ2gnKSB7XG4gICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XG4gICAgICBoZWFkZXI6IFtdLFxuICAgICAgcmVwb3J0czogW10sXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcbiAgICAgIHJjTGlzdDogW10sXG4gICAgICBhc3NpZ25vcnNMaXN0OiBbXSxcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgICAgbWVtYmVySWQ6ICcnLFxuICAgIH07XG5cbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkuZW1pdCgpO1xuICB9XG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnYWRkTW9yZSc6XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcpIHtcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT8nICsgdGhpcy51cmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmxTdWJzdHJpbmcgPVxuICAgICAgICAgICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzL3Jlc3BvbnNpYmlsaXRpZXMtcXVldWUnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW0gPSBKU09OPy5zdHJpbmdpZnkodGhpcy5yZWNlbnRSZXNwb25zaWJpbGl0eVVybCk7XG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScgKyB0aGlzLnF1ZXJ5UGFyYW07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLmlmcmFtZVNlcnZpY2UucmVkaXJlY3RJZkluSWZyYW1lKHVybCwgdHJ1ZSk7XG4gIH1cblxuICAvLyBVcGxvYWQgRmlsZSB0byB0aGUgc2VydmVyXG4gIGZpbGVVcGxvYWQoKSB7XG4gICAgdGhpcy5maWxlUmVzcG9uc2UgPSBbXTtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBmaWxlID0gdGhpcy51cGxvYWRlZEZpbGVzWzBdWzBdO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnc291cmNlZmlsZScsIGZpbGUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVzdGluYXRpb24nLCAnYnVsa3VwbG9hZC9lbnRydXN0LycgKyB0aGlzLnVzZXJJbmZvLmVtYWlsKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5maWxlVXBsb2FkKGZvcm1EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8uZmlsZW5hbWUpIHtcbiAgICAgICAgICB0aGlzLmZpbGVSZXNwb25zZS5wdXNoKHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxuICAgICAgICAgICdhbGVydCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCIgPlxuICAgIDwhLSAtIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0gLT5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zcHJlYWRzaGVldC1tdWx0aXBsZS1jYXRlZ29yeS5zdmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGU8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cbiAgICAgICAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xuICAgICAgICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXNXcm9uZ0ZpbGUgfHwgaXNXcm9uZ0Zvcm1hdHx8IGlzRmlsZUVtcHR5XCJcbiAgICAgICAgICAgID57e2Vycm9yTWVzc2FnZX19PC9wPiAgXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+IC0tPlxuPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXcgKm5nSWY9XCJzaG93RXhjZWxcIlxuW3Jlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZF09XCJyZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWRcIlxuW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcbltsb2FkZXJdPVwibG9hZGVyXCJcbltkZWZhdWx0T3duZXJdPVwiZGVmYXVsdE93bmVyXCJcbihzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQpPVwic3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKClcIlxuKGNhbmNlbCk9XCJyZXNldCgpXCJcbltyZXNwb25zaWJpbGl0eVR5cGVdPVwiJ3NpbmdsZVRhYidcIj48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+XG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiIChjaGFuZ2UpPVwidXBsb2FkZWRGaWxlKCRldmVudClcIiBtdWx0aXBsZSAvPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZSAqbmdJZj1cInNob3dTbWlsZXlcIiBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCIgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuIl19
|
|
909
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBZTdCLE1BQU0sT0FBTyxrQ0FBa0M7SUF5QjdDLElBQTJCLGdCQUFnQixDQUFDLElBQVM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBeURELFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QixFQUN6QixhQUE0QjtRQUw1QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGtCQUFhLEdBQWIsYUFB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LENBQUMsQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsa0dBQWtHLEVBQ2xHLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOytHQS84QlUsa0NBQWtDO21HQUFsQyxrQ0FBa0MseWFDMUIvQyw4NkVBMkNBOzs0RkRqQmEsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGlDQUFpQztnUUFLakMsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUksOEJBQThCO3NCQUF2QyxNQUFNO2dCQWdCb0IsZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGNBQWM7Z0JBR1osT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBGcmVxdWVuY3lCdWxrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcblxudHlwZSBBT0EgPSBhbnlbXVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmZWF0dXJlZmxhZzogYW55O1xuICB1cmwgPVxuICAgICdxPXtcImJ5UmVzcG9uc2liaWxpdGllc1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltcIkNDXCJdfSxcImJ5U3RhdHVzXCI6e1widHlwZVwiOltcInJlc3BvbnNpYmlsaXRpZXNfaW5fcXVldWVcIl0sXCJzdWJUeXBlXCI6W119LFwiZmlsdGVyT2JqZWN0XCI6e1wicmVzcG9uc2liaWxpdHlDZW50ZXJcIjpbXSxcImVudHJ1c3RlZEJ5XCI6W10sXCJlbnRydXN0ZWRUb1wiOltdLFwicmlza0lkc1wiOltdLFwicmVzcG9uc2liaWxpdHlDYXRlZ29yeVwiOltdfSxcInRpbWVQZXJpb2REZXRhaWxzXCI6e1widHlwZVwiOlwiXCIsXCJzZWxlY3RlZFBlcmlvZFwiOlwiXCIsXCJzZWxlY3RlZFllYXJcIjpcIlwifSxcInN0YXR1c1wiOlwiXCJ9JztcbiAgaXNOb3RpZmljYXRpb25QZW5kaW5nID0gMDtcbiAgQE91dHB1dCgpIGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XG4gIHJlY2VudFJlc3BvbnNpYmlsaXR5VXJsOiBhbnkgPSB7XG4gICAgYnlSZXNwb25zaWJpbGl0aWVzOiB7IHR5cGU6IFsncmVjZW50X3Jlc3BvbnNpYmlsaXRpZXMnXSwgc3ViVHlwZTogWydDQyddIH0sXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXG4gICAgZmlsdGVyT2JqZWN0OiB7XG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXG4gICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICBlbnRydXN0ZWRUbzogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgIH0sXG4gICAgdGltZVBlcmlvZERldGFpbHM6IHsgdHlwZTogJycsIHNlbGVjdGVkUGVyaW9kOiAnJywgc2VsZWN0ZWRZZWFyOiAnJyB9LFxuICAgIHN0YXR1czogJycsXG4gIH07XG5cbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnVwbG9hZGVkRmlsZShkYXRhKTtcbiAgfVxuICBASW5wdXQoKSBmZWF0dXJlITogYW55O1xuXG4gIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZDogYW55ID0ge1xuICAgIGhlYWRlcjogW10sXG4gICAgcmVwb3J0czogW10sXG4gIH07XG5cbiAgdGVtcGxhdGVJbmZvOiBhbnkgPSB7XG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcbiAgICByY0xpc3Q6IFtdLFxuICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxuICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgIG1lbWJlcklkOiAnJyxcbiAgfTtcbiAgaXNMb2FkZXIgPSBmYWxzZTtcbiAgc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcbiAgZG93bmxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gIGxvYWRlciA9IGZhbHNlO1xuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xuICBpc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gIGZpbGVOYW1lOiBhbnk7XG4gIGRhdGE6IGFueTtcbiAgc2hvd0V4Y2VsID0gZmFsc2U7XG4gIHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xuICBmaWxlUmVzcG9uc2U6IGFueSA9IFtdO1xuICBmaWxlVmFsdWU6IGFueTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xuICBkZWZhdWx0T3duZXIgPSAnJztcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCEgV2UncmUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QgYW5kIHlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlbWFpbCB1cG9uIGNvbXBsZXRpb24uYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7XG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgY2xhc3M6ICd3aGl0ZS1idG4nLFxuICAgICAgaWQ6ICdhZGRNb3JlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGJ1dHRvblRleHQ6IHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nXG4gICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBJbiBRdWV1ZSdcbiAgICAgICAgOiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGNsYXNzOiAnYmx1ZS1idG4nLFxuICAgICAgaWQ6ICd2aWV3JyxcbiAgICB9LFxuICBdO1xuICBzaG93U21pbGV5ID0gZmFsc2U7XG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcbiAgcmlza0NsYXNzRW5hYmxlZDogYW55O1xuICB1c2VySW5mbyE6IGFueTtcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xuICBmZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge31cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuXG4gICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XG4gICAgdGhpcy51c2VySW5mbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS51c2VyO1xuICAgIHRoaXMuZGVmYXVsdE93bmVyID0gdGhpcy51c2VySW5mb1xuICAgICAgPyB0aGlzLnVzZXJJbmZvLm5hbWUgKyAnICgnICsgdGhpcy51c2VySW5mby5lbWFpbCArICcpJ1xuICAgICAgOiAnJztcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yaXNrQ2xhc3NFbmFibGVkID0gcmVzLmVuYWJsZV9yaXNrY2xhc3M7XG4gICAgfSk7XG4gICAgdGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24gPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9idWxrX3VwbG9hZF9vcHRpbWl6YXRpb24nXG4gICAgKTtcbiAgfVxuXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XG4gICAgaWYgKGdldEZpbGUpIHtcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcbiAgICB9XG4gIH1cbiAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nID0gcmVzLm5vdGlmaWNhdGlvbl9wZW5kaW5nX2ZsYWc7XG4gICAgfSk7XG4gIH1cblxuICB1cGxvYWRlZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIC8vIHRoaXMudGVzdGFycmF5PVtdO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcbiAgICAgICAgaGVhZGVyOiBbXSxcbiAgICAgICAgcmVwb3J0czogW10sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcbiAgICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcbiAgICAgICAgcmNMaXN0OiBbXSxcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXG4gICAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgICAgICBtZW1iZXJJZDogJycsXG4gICAgICB9O1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XG4gICAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgIHJlZmVyZW5jZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChldmVudC50YXJnZXQuZmlsZXMpO1xuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcbiAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZTFdO1xuXG4gICAgICAgIHRoaXMuZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cywge1xuICAgICAgICAgIGhlYWRlcjogMSxcbiAgICAgICAgICByYXc6IGZhbHNlLFxuICAgICAgICB9KSBhcyBBT0E7XG5cbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbMF0uZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIuc3BsaWNlKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlci5sZW5ndGggLSAxLFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc2xpY2UoMik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbMF0gIT09XG4gICAgICAgICAgJ0VudGVyIFJlc3BvbnNpYmlsaXR5IE5hbWUqJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXG4gICAgICAgICAgICAnIFJFVFJZJztcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdWzI1XTtcblxuICAgICAgICBpZiAodGhpcy5tZW1iZXJfb2JqX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRlbXBMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBpZiAoZWxlbWVudFsyXSAmJiBlbGVtZW50WzJdICE9ICcgJykge1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMl0sXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBlbGVtZW50WzNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKGNhdGVnb3J5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbOV0gJiYgZWxlbWVudFs5XSAhPSAnICcpIHtcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzldLFxuICAgICAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXG4gICAgICAgICAgICAgIHBhcmVudElkczogSlNPTi5wYXJzZShlbGVtZW50WzEzXSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LnB1c2gocmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsxMV0gJiYgZWxlbWVudFsxMV0gIT0gJyAnKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHtcbiAgICAgICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzExXSxcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMF0sXG4gICAgICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpLFxuICAgICAgICAgICAgICBlbXBsb3llZV9pZDogZWxlbWVudFsxMl0sXG4gICAgICAgICAgICAgIG15X21lbWJlcl9pZDogZWxlbWVudFsxNl0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5wdXNoKGFzc2lnbmVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTRdICYmIGVsZW1lbnRbMTRdICE9ICcgJykge1xuICAgICAgICAgICAgY29uc3QgYXNzaWdub3IgPSB7XG4gICAgICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxNF0sXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTRdLnNwbGl0KCcgKCcpWzBdLFxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcbiAgICAgICAgICAgICAgbWVtYmVyX2lkOiBlbGVtZW50WzE1XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LnB1c2goYXNzaWdub3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKCk7XG4gICAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcbiAgICAgICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzcG9uc2liaWxpdHlEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zaWJpbGl0eURhdGEsICdyZXNwb25zaWJpbGl0eURhdGEnKTtcbiAgICAgICAgcmVzcG9uc2liaWxpdHlEYXRhLmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkRGF0ZTtcbiAgICAgICAgICBjb25zdCB2YWxpZEZpZWxkcyA9IHRoaXMuY2hlY2tWYWxpZGl0eShyZXBvcnQpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkVXNlciA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydFsyXSwgJ2VudHJ1c3RlZF90bycpXG4gICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgbGV0IG9iajogYW55O1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gIT09ICdTZWxlY3QgYSBQcm9ncmFtJykge1xuICAgICAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcbiAgICAgICAgICAgIG9iaiA9IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXG4gICAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0gPz8gJycsXG4gICAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzNdID8/ICcnLFxuICAgICAgICAgICAgICBkYXk6IHJlcG9ydFs0XSA/PyAnJyxcbiAgICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs1XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs2XSA/PyAnJyxcbiAgICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs3XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs4XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFs5XSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMF0gPz8gJycsXG4gICAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMV0gPz8gJycsXG4gICAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTJdID8/ICcnLFxuICAgICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzEzXSA/PyAnJyxcbiAgICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0/LnRvU3RyaW5nKCkgPz8gJycsXG4gICAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE1XSA/PyAnJyxcbiAgICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTZdID8/ICcnLFxuICAgICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxN10gPz8gJycsXG4gICAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMThdID8/ICcnLFxuICAgICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxOV0/LnRvU3RyaW5nKCkgPz8gJycsXG5cbiAgICAgICAgICAgICAgaXNWYWxpZER1ZURhdGU6IHZhbGlkRGF0ZSxcbiAgICAgICAgICAgICAgaXNQYXN0RGF0ZTogdGhpcy5pc1Bhc3REYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKSxcbiAgICAgICAgICAgICAgY2hlY2tWYWxpZGl0eTogdmFsaWRGaWVsZHMsXG4gICAgICAgICAgICAgIGlzVmFsaWQ6IHZhbGlkRGF0ZSAmJiB2YWxpZEZpZWxkcyxcbiAgICAgICAgICAgICAgaXNWYWxpZFVzZXI6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xuICAgICAgICAgICAgb2JqID0ge1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSA/PyAnJyxcbiAgICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSA/PyAnJyxcbiAgICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogcmVwb3J0WzNdID8/ICcnLFxuICAgICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs0XSA/PyAnJyxcbiAgICAgICAgICAgICAgZGF5OiByZXBvcnRbNV0gPz8gJycsXG4gICAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbNl0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbN10gPz8gJycsXG4gICAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbOF0gPz8gJycsXG4gICAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbOV0gPz8gJycsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTBdID8/ICcnLFxuICAgICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzExXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzEyXSA/PyAnJyxcbiAgICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxM10gPz8gJycsXG4gICAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTRdID8/ICcnLFxuICAgICAgICAgICAgICBub3RlczogcmVwb3J0WzE1XT8udG9TdHJpbmcoKSA/PyAnJyxcbiAgICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTZdID8/ICcnLFxuICAgICAgICAgICAgICBhbHdheXNOb3RpZnk6IHJlcG9ydFsxN10gPz8gJycsXG4gICAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzE4XSA/PyAnJyxcbiAgICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOV0gPz8gJycsXG4gICAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzIwXT8udG9TdHJpbmcoKSA/PyAnJyxcblxuICAgICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxuICAgICAgICAgICAgICBpc1Bhc3REYXRlOiB0aGlzLmlzUGFzdERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pLFxuICAgICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcbiAgICAgICAgICAgICAgaXNWYWxpZDogdmFsaWREYXRlICYmIHZhbGlkRmllbGRzLFxuICAgICAgICAgICAgICBpc1ZhbGlkVXNlcjogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMucHVzaChvYmopO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tFbXB0eUZpbGUoKSB7XG4gICAgbGV0IGlzRW1wdHkgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKTtcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDEpIHtcbiAgICAgIGlzRW1wdHkgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eTtcbiAgfVxuXG4gIC8vIHRlc3RhcnJheTphbnlbXT1bXVxuXG4gIGNoZWNrVmFsaWRpdHkocmVwb3J0OiBhbnkpIHtcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xuICAgIGlmIChyZXBvcnRbMF0pIHtcbiAgICAgIHZhciB0cmltbWVkTmFtZSA9IHJlcG9ydFswXS50b1N0cmluZygpLnJlcGxhY2UocmUsICcnKS50cmltKCk7XG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBpbmRleCAgICAgICAgICAga2V5IGZvciAgICAgICAgICAgICAgIGNvbmRpdGlvblxuICAgICAqXG4gICAgICogIHJlcG9ydFsxXSAgICAgICBPbiBCZWhhbGYgb2YgdXNlclxuICAgICAqICByZXBvcnRbMTFdICAgICAgUmV2aWV3ZXIgICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyAnU2VsZWN0IGEgUHJvZ3JhbSdcbiAgICAgKiAgcmVwb3J0WzEwXSAgICAgIFJldmlld2VyICAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xuICAgICAqICByZXBvcnRbMTZdICAgICAgQWx3YXlzIE5vdGlmeSAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyBub3QgJ1NlbGVjdCBhIFByb2dyYW0nKGRpc2FibGVkIGZvciB1c2VycyB3aXRob3V0IHByb2dyYW0gcGVybWlzc2lvbilcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXG4gICAgICogIHJlcG9ydFsxN10gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxuICAgICAqICByZXBvcnRbMTddICAgICAgQWx3YXlzIE5vdGlmeVxuICAgICAqICByZXBvcnRbMThdICAgICAgTm90aWZ5IE9uIEZhaWx1cmVcbiAgICAgKiAgcmVwb3J0WzJdICAgICAgIEFzc2lnbmVlXG4gICAgICogIHJlcG9ydFs0XSAgICAgICBmcmVxdWVuY3kgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xuICAgICAqICByZXBvcnRbM10gICAgICAgZnJlcXVlbmN5ICAgICAgICAgICAgIHdoZW4gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXSBpcyBub3QgJ1NlbGVjdCBhIFByb2dyYW0nKGRpc2FibGVkIGZvciB1c2VycyB3aXRob3V0IHByb2dyYW0gcGVybWlzc2lvbilcbiAgICAgKiAgdHJpbW1lZE5hbWUgICAgIFJlcG9ydCBuYW1lXG4gICAgICogIGRlZmF1bHRPd25lciAgICBEZWZhdWx0IEFzc2lnbm9yXG4gICAgICovXG4gICAgY29uc3QgZnJlcXVlbmN5ID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpID09XG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcbiAgICAgICAgPyByZXBvcnRbNF1cbiAgICAgICAgOiByZXBvcnRbM107XG4gICAgY29uc3QgcmV2aWV3ZXIgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCkgPT1cbiAgICAgICdzZWxlY3QgYSBwcm9ncmFtJ1xuICAgICAgICA/IHJlcG9ydFsxMV1cbiAgICAgICAgOiByZXBvcnRbMTBdO1xuICAgIGNvbnN0IE5vdGlmeUFsd2F5cyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKSA9PVxuICAgICAgJ3NlbGVjdCBhIHByb2dyYW0nXG4gICAgICAgID8gcmVwb3J0WzE3XVxuICAgICAgICA6IHJlcG9ydFsxNl07XG4gICAgY29uc3QgTm90aWZ5T25GYWlsdXJlID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpID09XG4gICAgICAnc2VsZWN0IGEgcHJvZ3JhbSdcbiAgICAgICAgPyByZXBvcnRbMThdXG4gICAgICAgIDogcmVwb3J0WzE3XTtcblxuICAgIGlmIChcbiAgICAgICFmcmVxdWVuY3kgfHxcbiAgICAgICF0cmltbWVkTmFtZSB8fFxuICAgICAgKHJlcG9ydFsxXSAmJlxuICAgICAgICAocmVwb3J0WzFdID09IE5vdGlmeUFsd2F5cyB8fCByZXBvcnRbMV0gPT0gTm90aWZ5T25GYWlsdXJlKSkgfHxcbiAgICAgICghcmVwb3J0WzFdICYmXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMgfHxcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgKHJlcG9ydFsyXSAmJlxuICAgICAgICAocmVwb3J0WzJdID09IHJldmlld2VyIHx8XG4gICAgICAgICAgcmVwb3J0WzJdID09IE5vdGlmeUFsd2F5cyB8fFxuICAgICAgICAgIHJlcG9ydFsyXSA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgKCFyZXBvcnRbMl0gJiZcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeUFsd2F5cyB8fFxuICAgICAgICAgIHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpIHx8XG4gICAgICAocmV2aWV3ZXIgJiYgKHJldmlld2VyID09IE5vdGlmeUFsd2F5cyB8fCByZXZpZXdlciA9PSBOb3RpZnlPbkZhaWx1cmUpKSB8fFxuICAgICAgIXJlcG9ydFsyXVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcbiAgICAgIHsgdmFsdWU6IDMsIG1vbnRoOiAnTWFyJyB9LFxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcbiAgICAgIHsgdmFsdWU6IDYsIG1vbnRoOiAnSnVuJyB9LFxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcbiAgICAgIHsgdmFsdWU6IDksIG1vbnRoOiAnU2VwJyB9LFxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxuICAgICAgeyB2YWx1ZTogMTIsIG1vbnRoOiAnRGVjJyB9LFxuICAgIF07XG5cbiAgICBpZiAoIShkYXkgfHwgbW9udGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb250aEFuZFllYXIgPSBtb250aC5zcGxpdChcIidcIik7XG5cbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcbiAgICAgICAgZGF5ICsgJy0nICsgbW9udGhBbmRZZWFyWzBdICsgJy0nICsgMjAgKyBtb250aEFuZFllYXJbMV0gKyAnIDAwOjAwOjAwJyxcbiAgICAgICAgJ0RELU1NTU0tWVlZWSBISDptbTpzcydcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XG4gICAgICBpZiAoc3RhcnREYXRlID09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7fSwgNSk7XG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcblxuICAgICAgZGF0ZV92YWx1ZS5zZXRNb250aChcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXG4gICAgICAgICAgICAgID8udmFsdWUgLSAxXG4gICAgICAgICAgOiBtb250aFxuICAgICAgKTtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoTnVtYmVyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKSk7XG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50RGF0ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICE9XG4gICAgICAgICAgZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICYmXG4gICAgICAgIGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxuICAgICAgeyB2YWx1ZTogMiwgbW9udGg6ICdGZWInIH0sXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxuICAgICAgeyB2YWx1ZTogNSwgbW9udGg6ICdNYXknIH0sXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxuICAgICAgeyB2YWx1ZTogOCwgbW9udGg6ICdBdWcnIH0sXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcbiAgICAgIHsgdmFsdWU6IDExLCBtb250aDogJ05vdicgfSxcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcbiAgICBdO1xuXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnN0IHJlcG9ydERhdGUgPSBuZXcgRGF0ZShkYXkgKyBtb250aC5zcGxpdChcIidcIikpO1xuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxuICAgICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cbiAgICAgICAgICAgICAgPy52YWx1ZSAtIDFcbiAgICAgICAgICA6IG1vbnRoXG4gICAgICApO1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShOdW1iZXIoZGF5KSk7XG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IGRvd25sb2FkRGF0ZSA9IG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XG5cbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmRvd25sb2FkUmVzcG9uc2liaWxpdHlUZW1wbGF0ZSgpLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAxMDAgKiAoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXG4gICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3hsc3gnLFxuICAgICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGF5bG9hZDogYW55ID0gW107XG4gICAgY29uc3QgZnJlcXVlbmN5VHlwZUFycmF5ID0gWycxJywgJzInLCAnMycsICc0JywgJzcnLCAnMCddO1xuICAgIGNvbnN0IGRlZmF1bHRXaW5kb3cgPSBbMCwgMiwgNywgMzAsIDcsIDE1XTtcbiAgICBjb25zdCBkZWZhdWx0RmFpbGVkRGF5ID0gWzEsIDIsIDUsIDUsIDUsIDVdO1xuICAgIGxldCB2YWxpZFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xuICAgIGlmICh0aGlzLmZmQnVsa1VwbG9hZE9wdGltaXphdGlvbikge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHMuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcG9ydD8uaXNWYWxpZCkge1xuICAgICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdGllcyArPSAxO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHBheWxvYWQgPSB7XG4gICAgICAgIG9yaWdpbmFsRmlsZW5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5vcmlnaW5hbF9maWxlbmFtZSxcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlbmFtZSxcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlcGF0aCxcbiAgICAgICAgdG90YWxSZXNwb25zaWJpbGl0eUNvdW50OlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5yZXBvcnRzPy5sZW5ndGgsXG4gICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdHlDb3VudDogdmFsaWRSZXNwb25zaWJpbGl0aWVzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVwb3J0LmlzVmFsaWQpIHtcbiAgICAgICAgICBpZiAocmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAncmNfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCByZXZpZXdlckRldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgcmVwb3J0LnJldmlld2VyLFxuICAgICAgICAgICAgJ3Jldmlld2VyJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYXNzaWdub3JEZXRhaWxzOiBhbnkgPSByZXBvcnQuYXNzaWdub3JcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFzc2lnbm9yLCAnYXNzaWdub3InKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICBjb25zdCBjY0RldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hbHdheXNOb3RpZnksICdjYycpO1xuICAgICAgICAgIGNvbnN0IGNjRmFpbHVyZURldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgcmVwb3J0Lm5vdGlmeU9uRmFpbHVyZSxcbiAgICAgICAgICAgICdjY0ZhaWx1cmUnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuXG4gICAgICAgICAgY29uc3QgY2F0ZWdvcnlOYW1lID0gcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkuaW5jbHVkZXMoXG4gICAgICAgICAgICAnW1dJVEhJTl0nXG4gICAgICAgICAgKVxuICAgICAgICAgICAgPyByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeS5zcGxpdCgnIFsnKVswXVxuICAgICAgICAgICAgOiByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeTtcbiAgICAgICAgICBjb25zdCBmcmVxdWVuY3lWYWx1ZSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgICAgICAgIHJlcG9ydC5mcmVxdWVuY3ksXG4gICAgICAgICAgICByZXBvcnQuZGF5LFxuICAgICAgICAgICAgcmVwb3J0Lm1vbnRoXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBkYXRlQW5kTW9udGggPSByZXBvcnQubW9udGguc3BsaXQoXCInXCIpO1xuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcbiAgICAgICAgICAgIHJlcG9ydC5kYXkgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBkYXRlQW5kTW9udGhbMF0gK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAyMCArXG4gICAgICAgICAgICAgIGRhdGVBbmRNb250aFsxXSArXG4gICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxuICAgICAgICAgICAgJ0RELU1NTU0tWVlZWSBISDptbTpzcydcbiAgICAgICAgICApLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xuXG4gICAgICAgICAgbGV0IGNvbXBsZXRlRGF5cztcbiAgICAgICAgICBsZXQgbm90Q29tcGxldGVEYXlzO1xuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdO1xuICAgICAgICAgIGlmIChyZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgIT09ICcnKSB7XG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSByZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3c7XG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheS5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xuICAgICAgICAgICAgY29tcGxldGVEYXlzID0gZGVmYXVsdFdpbmRvd1tpbmRleE9mQXJyYXldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVwb3J0LmZhaWxlZEFmdGVyICE9PSAnJykge1xuICAgICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gcmVwb3J0LmZhaWxlZEFmdGVyO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleE9mQXJyYXkgPSBmcmVxdWVuY3lUeXBlQXJyYXkuaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcbiAgICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyA9IGRlZmF1bHRGYWlsZWREYXlbaW5kZXhPZkFycmF5XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICAgICAgdXNlcklkOiB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXNzaWdub3JEZXRhaWxzXG4gICAgICAgICAgICAgID8gYXNzaWdub3JEZXRhaWxzLm1lbWJlcklkXG4gICAgICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICAgIG1lbWJlcl9uYW1lOiBhc3NpZ25vckRldGFpbHNcbiAgICAgICAgICAgICAgPyByZXBvcnQuYXNzaWdub3JcbiAgICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vci5zcGxpdCgnICgnKVswXVxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgOiB0aGlzLmRlZmF1bHRPd25lclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyLnNwbGl0KCcgKCcpWzBdXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBtZW1iZXJfZW1haWw6IGFzc2lnbm9yRGV0YWlsc1xuICAgICAgICAgICAgICA/IHJlcG9ydC5hc3NpZ25vclxuICAgICAgICAgICAgICAgID8gcmVwb3J0LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJylcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lci5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBjcmVhdGVkX2J5OiBhc3NpZ25vckRldGFpbHMgPyB0aGlzLm1lbWJlcklkIDogMCxcbiAgICAgICAgICAgIHJlcG9ydF9uYW1lOiByZXBvcnQucmVzcG9uc2liaWxpdHlOYW1lID8/ICcnLFxuICAgICAgICAgICAgZW50cnVzdGVkX3RvOiByZXBvcnQuYXNzaWduZWUuc3BsaXQoJyAoJylbMF0gPz8gJycsXG4gICAgICAgICAgICBlbnRydXN0ZWRfdG9faWQ6IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpLFxuICAgICAgICAgICAgZW1haWxfYWRkcmVzczpcbiAgICAgICAgICAgICAgcmVwb3J0LmFzc2lnbmVlLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJykgPz8gJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiBjYXRlZ29yeU5hbWUsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lX3dpdGhfdHJlZTogJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LFxuICAgICAgICAgICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmNfbmFtZTogcmNEZXRhaWxzID8gcmNEZXRhaWxzLm5hbWUgOiAnJyxcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHMucmNJZCA6IDAsXG4gICAgICAgICAgICBlbnRpdHlfdHJlZTpcbiAgICAgICAgICAgICAgcmNEZXRhaWxzICYmIHJjRGV0YWlscy5yY0lkXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHMucGFyZW50SWRzIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgZnJlcXVlbmN5X2hhbmRsZXI6IGZyZXF1ZW5jeVZhbHVlLFxuICAgICAgICAgICAgY29tcGxpYW5jZV90eXBlOiBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdLFxuICAgICAgICAgICAgZnJlcXVlbmN5X2Rlc2NyaXB0aW9uOiByZXBvcnQuZnJlcXVlbmN5LFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogcmVwb3J0LmRheSA/IHN0YXJ0RGF0ZSA6IGN1cnJlbnREYXRlICsgJyAwMDowMDowMCcsXG4gICAgICAgICAgICByaXNrX2NsYXNzOiByZXBvcnQucmVwb3J0Q2xhc3MgPz8gJycsXG4gICAgICAgICAgICByaXNrX2NsYXNzSWQ6IHJlcG9ydC5yZXBvcnRDbGFzc1xuICAgICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5yZXBvcnRDbGFzcywgJ3Jpc2tfY2xhc3MnKVxuICAgICAgICAgICAgICA6IHRoaXMucmlza0NsYXNzRW5hYmxlZFxuICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgOiAyLFxuICAgICAgICAgICAgZG9jX3V0YzogMCxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHJlcG9ydC5ub3RlcyA/PyAnJyxcbiAgICAgICAgICAgIGNjX21haWw6IGNjRGV0YWlscyA/IGNjRGV0YWlscy5lbWFpbCA6ICcnLFxuICAgICAgICAgICAgY2NfbWFpbF9pZDogY2NEZXRhaWxzID8gY2NEZXRhaWxzLmVtcGxveWVlSWQgOiAnJyxcbiAgICAgICAgICAgIGNjX2ZhaWxlZF9tYWlsOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscy5lbWFpbCA6ICcnLFxuICAgICAgICAgICAgY2NfZmFpbHVyZV9pZDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHMuZW1wbG95ZWVJZCA6IDAsXG4gICAgICAgICAgICBzZW5kX3JlbWluZGVyOiAnJyxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiBmcmVxdWVuY3lUeXBlID09PSAnMScgPyAwIDogY29tcGxldGVEYXlzLFxuICAgICAgICAgICAgZmFpbGVkX2FmdGVyOiBub3RDb21wbGV0ZURheXMsXG4gICAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiAnJyxcbiAgICAgICAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzpcbiAgICAgICAgICAgICAgcmVwb3J0LmRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZCA9PT0gJ1llcycgPyAxIDogMCxcbiAgICAgICAgICAgIHJlcG9ydF9pZDogMCxcbiAgICAgICAgICAgIGlzX2Fzc2lnbmVkX2ZsYWc6IDAsXG4gICAgICAgICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXG4gICAgICAgICAgICBrZXljb21wbGlhbmNlOiByZXBvcnQua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICAga2V5X2NvbXBsaWFuY2U6IHJlcG9ydC5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycgPyAxIDogMCxcbiAgICAgICAgICAgIHJldmlld2VySWQ6IHJldmlld2VyRGV0YWlscyA/IHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkIDogMCxcbiAgICAgICAgICAgIHJldmlld2VyX2FycjpcbiAgICAgICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzICYmIHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGxldmVsMToge1xuICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IHJldmlld2VyRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyX2FjY2VwdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU0VRVUVOVElBTCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgICAgIHJldmlld2VyV2luZG93OlxuICAgICAgICAgICAgICByZXBvcnQucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiA9PT0gJydcbiAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICA6IHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluLFxuICAgICAgICAgICAgcmV2aWV3ZXJGYWlsdXJlOlxuICAgICAgICAgICAgICByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIgPT09ICcnXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIsXG4gICAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtYWlsIDogJycsXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgID8gcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBkb2N1bWVudGFyeUV2aWRlbmNlOiByZXBvcnQubm90ZXMgPz8gJycsXG4gICAgICAgICAgICBpc2RvY3VtZW50YXJ5RXZpZGVuY2U6XG4gICAgICAgICAgICAgIHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnID8gMSA6IDAsXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydC5vYmplY3RpdmUgPz8gJycsXG4gICAgICAgICAgICBleGNlbF9zaGVldF9pbmZvOiB0aGlzLmZpbGVSZXNwb25zZSxcbiAgICAgICAgICAgIHNob3dMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgIGN1c3RvbV90YWdzOiAnW10nLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcGF5bG9hZC5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5hZGRCdWxrUmVzcG9uc2liaWxpdHkocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3VibWl0V29ya2Zsb3coKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFdvcmtmbG93KCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB7IHR5cGU6ICdzdWJtaXQnIH07XG4gICAgY29uc3QgdGFyZ2V0T3JpZ2luID0gdGhpcy5nZXRPcmlnaW4oKTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7XG4gIH1cblxuICBwcml2YXRlIGdldE9yaWdpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICB9XG5cbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAncmNfaWQnOlxuICAgICAgICBsZXQgcmNPYmogPSB7IG5hbWU6ICcnLCByY0lkOiAwLCBwYXJlbnRJZHM6IFtdIH07XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lO1xuICAgICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZS5pbmNsdWRlcygnW1dJVEhJTl0nKSkge1xuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lLnNwbGl0KCcgW1dJVEhJTl0gJylbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmNPYmogPSB7XG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHJjSWQ6IHJjX2VsZW1lbnQucmNfaWQsXG4gICAgICAgICAgICAgIHBhcmVudElkczogcmNfZWxlbWVudC5wYXJlbnRJZHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByY09iajtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGxldCByZXZpZXdlck9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKHJldmlld2VyRWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJldmlld2VyRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xuICAgICAgICAgICAgcmV2aWV3ZXJPYmogPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHJldmlld2VyRWxlbWVudC5uYW1lLFxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiByZXZpZXdlckVsZW1lbnQubXlfbWVtYmVyX2lkLFxuICAgICAgICAgICAgICBlbWFpbDogcmV2aWV3ZXJFbGVtZW50LmVtYWlsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmV2aWV3ZXJPYmo7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcic6XG4gICAgICAgIGxldCBhc3NpZ25vck9iaiA9IHsgbmFtZTogJycsIG1lbWJlcklkOiAwLCBlbWFpbDogJycgfTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWdub3JzTGlzdC5mb3JFYWNoKChhc3NpZ25vckVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChhc3NpZ25vckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGFzc2lnbm9yT2JqID0ge1xuICAgICAgICAgICAgICBuYW1lOiBhc3NpZ25vckVsZW1lbnQubmFtZSxcbiAgICAgICAgICAgICAgZW1haWw6IGFzc2lnbm9yRWxlbWVudC5lbWFpbCxcbiAgICAgICAgICAgICAgbWVtYmVySWQ6IGFzc2lnbm9yRWxlbWVudC5tZW1iZXJfaWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhc3NpZ25vck9iajtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgbGV0IGNjT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoY2NFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoY2NFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XG4gICAgICAgICAgICBjY09iaiA9IHtcbiAgICAgICAgICAgICAgbmFtZTogY2NFbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjRWxlbWVudC5lbXBsb3llZV9pZCxcbiAgICAgICAgICAgICAgZW1haWw6IGNjRWxlbWVudC5lbWFpbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNjT2JqO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbHVyZSc6XG4gICAgICAgIGxldCBjY2ZPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChjY2ZFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoY2NmRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xuICAgICAgICAgICAgY2NmT2JqID0ge1xuICAgICAgICAgICAgICBuYW1lOiBjY2ZFbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjZkVsZW1lbnQuZW1wbG95ZWVfaWQsXG4gICAgICAgICAgICAgIGVtYWlsOiBjY2ZFbGVtZW50LmVtYWlsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2NmT2JqO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZW50cnVzdGVkX3RvJzpcbiAgICAgICAgbGV0IGVtcElkID0gMDtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcbiAgICAgICAgICAgIGVtcElkID0gZW5FbGVtZW50LmVtcGxveWVlX2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbXBJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeV9pZCc6XG4gICAgICAgIGxldCBjYXRJZCA9IDA7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChjYXRlZ29yeTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGNhdGVnb3J5Lm5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgY2F0SWQgPSBjYXRlZ29yeS5jYXRlZ29yeV9pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2F0SWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyaXNrX2NsYXNzJzpcbiAgICAgICAgaWYgKGl0ZW0gPT0gJ0xvdycpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdMb3ctTWVkaXVtJykge1xuICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ01lZGl1bS1IaWdoJykge1xuICAgICAgICAgIHJldHVybiAzO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0hpZ2gnKSB7XG4gICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XG4gICAgICBoZWFkZXI6IFtdLFxuICAgICAgcmVwb3J0czogW10sXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcbiAgICAgIHJjTGlzdDogW10sXG4gICAgICBhc3NpZ25vcnNMaXN0OiBbXSxcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgICAgbWVtYmVySWQ6ICcnLFxuICAgIH07XG5cbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkuZW1pdCgpO1xuICB9XG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnYWRkTW9yZSc6XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcpIHtcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT8nICsgdGhpcy51cmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmxTdWJzdHJpbmcgPVxuICAgICAgICAgICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzL3Jlc3BvbnNpYmlsaXRpZXMtcXVldWUnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW0gPSBKU09OPy5zdHJpbmdpZnkodGhpcy5yZWNlbnRSZXNwb25zaWJpbGl0eVVybCk7XG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScgKyB0aGlzLnF1ZXJ5UGFyYW07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLmlmcmFtZVNlcnZpY2UucmVkaXJlY3RJZkluSWZyYW1lKHVybCwgdHJ1ZSk7XG4gIH1cblxuICAvLyBVcGxvYWQgRmlsZSB0byB0aGUgc2VydmVyXG4gIGZpbGVVcGxvYWQoKSB7XG4gICAgdGhpcy5maWxlUmVzcG9uc2UgPSBbXTtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBmaWxlID0gdGhpcy51cGxvYWRlZEZpbGVzWzBdWzBdO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnc291cmNlZmlsZScsIGZpbGUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVzdGluYXRpb24nLCAnYnVsa3VwbG9hZC9lbnRydXN0LycgKyB0aGlzLnVzZXJJbmZvLmVtYWlsKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5maWxlVXBsb2FkKGZvcm1EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8uZmlsZW5hbWUpIHtcbiAgICAgICAgICB0aGlzLmZpbGVSZXNwb25zZS5wdXNoKHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxuICAgICAgICAgICdhbGVydCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCIgPlxuICAgIDwhLSAtIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0gLT5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zcHJlYWRzaGVldC1tdWx0aXBsZS1jYXRlZ29yeS5zdmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGU8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cbiAgICAgICAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xuICAgICAgICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXNXcm9uZ0ZpbGUgfHwgaXNXcm9uZ0Zvcm1hdHx8IGlzRmlsZUVtcHR5XCJcbiAgICAgICAgICAgID57e2Vycm9yTWVzc2FnZX19PC9wPiAgXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+IC0tPlxuPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXcgKm5nSWY9XCJzaG93RXhjZWxcIlxuW3Jlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZF09XCJyZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWRcIlxuW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcbltsb2FkZXJdPVwibG9hZGVyXCJcbltkZWZhdWx0T3duZXJdPVwiZGVmYXVsdE93bmVyXCJcbihzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQpPVwic3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKClcIlxuKGNhbmNlbCk9XCJyZXNldCgpXCJcbltyZXNwb25zaWJpbGl0eVR5cGVdPVwiJ3NpbmdsZVRhYidcIj48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+XG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiIChjaGFuZ2UpPVwidXBsb2FkZWRGaWxlKCRldmVudClcIiBtdWx0aXBsZSAvPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZSAqbmdJZj1cInNob3dTbWlsZXlcIiBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCIgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuIl19
|