@gsp-svc/formdoc-upload 0.1.14 → 0.1.18
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/bundles/gsp-svc-formdoc-upload.umd.js +4 -4
- package/bundles/gsp-svc-formdoc-upload.umd.js.map +1 -1
- package/bundles/gsp-svc-formdoc-upload.umd.min.js +1 -1
- package/bundles/gsp-svc-formdoc-upload.umd.min.js.map +1 -1
- package/esm2015/lib/upload/file-upload/file-upload.component.js +6 -5
- package/esm5/lib/upload/file-upload/file-upload.component.js +6 -5
- package/fesm2015/gsp-svc-formdoc-upload.js +4 -4
- package/fesm2015/gsp-svc-formdoc-upload.js.map +1 -1
- package/fesm5/gsp-svc-formdoc-upload.js +5 -5
- package/fesm5/gsp-svc-formdoc-upload.js.map +1 -1
- package/package.json +1 -1
|
@@ -106,7 +106,8 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
106
106
|
function (res) {
|
|
107
107
|
if (res != null && res.error == null) {
|
|
108
108
|
_this.uploadedFileInfoList = res;
|
|
109
|
-
_this.oldUploadedFileList = res;
|
|
109
|
+
_this.oldUploadedFileList = JSON.parse(JSON.stringify(res));
|
|
110
|
+
;
|
|
110
111
|
}
|
|
111
112
|
}));
|
|
112
113
|
}
|
|
@@ -202,11 +203,11 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
202
203
|
function (x) { return x.fileName == selectedFile.name; })).metadataId;
|
|
203
204
|
_this.uploadFile(uuid, selectedFile, selectedFile.name);
|
|
204
205
|
_this.uploadedFileTotal--;
|
|
205
|
-
if (_this.oldUploadedFileList.
|
|
206
|
+
if (_this.oldUploadedFileList.find((/**
|
|
206
207
|
* @param {?} x
|
|
207
208
|
* @return {?}
|
|
208
209
|
*/
|
|
209
|
-
function (x) { return x.fileName == selectedFile.name; }))
|
|
210
|
+
function (x) { return x.fileName == selectedFile.name; }))) {
|
|
210
211
|
_this.uploadedFileTotal++;
|
|
211
212
|
_this.uploadedFileInfoList.splice(_this.uploadedFileInfoList.indexOf(_this.uploadedFileInfoList.filter((/**
|
|
212
213
|
* @param {?} x
|
|
@@ -443,7 +444,7 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
443
444
|
index = _this.files.indexOf(x);
|
|
444
445
|
}
|
|
445
446
|
}));
|
|
446
|
-
if (index != this.files.length - 1) {
|
|
447
|
+
if (index != -1 && index != this.files.length - 1) {
|
|
447
448
|
this.files.splice(index, 1);
|
|
448
449
|
this.uploadFileInfoList.splice(index, 1);
|
|
449
450
|
this.uploadedFileInfoList.splice(index, 1);
|
|
@@ -1039,4 +1040,4 @@ if (false) {
|
|
|
1039
1040
|
*/
|
|
1040
1041
|
FileUploadComponent.prototype.injector;
|
|
1041
1042
|
}
|
|
1042
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpEO0lBMkRFLDZCQUFvQixVQUEyQixFQUFVLGFBQTRCLEVBQVUsV0FBMkIsRUFBVSxRQUFtQjtRQUFuSSxlQUFVLEdBQVYsVUFBVSxD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O0lBQzlCLGlEQUEwQzs7SUFDMUMsMENBQTJCOztJQUMzQiwwQ0FBMkI7O0lBQzNCLDJDQUE0Qjs7SUFDNUIsdUNBQXFCOztJQUNyQixzQ0FBeUI7O0lBQ3pCLHlDQUF5Qjs7SUFDekIsNENBQW1COztJQUVuQixnREFBOEI7O0lBRTlCLGdEQUE4RDs7SUFDOUQsc0RBQXdFOztJQUV4RSw4Q0FBaUM7O0lBRWpDLDhDQUFpQzs7SUFFakMsNENBQWdDOztJQUVoQyw2Q0FBK0M7O0lBRy9DLDJDQUFpRDs7SUFFakQsK0NBQXlEOztJQUV6RCw0Q0FBOEM7O0lBQzlDLDhDQUFnRDs7SUFHaEQsK0NBQW1DOztJQUVuQyxrREFBaUM7O0lBQ2pDLDhDQUF1Qzs7SUFFdkMsNkNBQW9DOztJQUVwQyw0Q0FBMkI7O0lBRTNCLGdEQUE4Qjs7SUFFOUIsb0RBQXVDOztJQUV2QyxtREFBMEI7O0lBQzFCLGtEQUF5Qjs7SUFHekIsOENBQXVCOztJQUd2QixxQ0FBd0I7O0lBQ3hCLHFDQUF3Qjs7SUFDeEIsdUNBQWdDOztJQUNoQyx3Q0FBK0I7O0lBQy9CLHdDQUFrQzs7SUFJbEMscUNBQThDOztJQTJkOUMsZ0RBQTRDOzs7OztJQXBlaEMseUNBQW1DOzs7OztJQUFFLDRDQUFvQzs7Ozs7SUFBRSwwQ0FBbUM7Ozs7O0lBQUUsdUNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2ZpbGVpbmZvJztcbmltcG9ydCB7IERvY1R5cGUgfSBmcm9tICcuLi9lbnRpdHkvZG9jdHlwZSc7XG5pbXBvcnQgeyBHc3BGb3JtRG9jSW5mbyB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtZG9jaW5mbyc7XG5pbXBvcnQgeyBPcGVyYXRpbmdNb2RlcyB9IGZyb20gJy4uL2VudGl0eS9vcGVyYXRpbmdtb2Rlcyc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvdXBsb2FkZmlsZWluZm8nO1xuaW1wb3J0IHsgTWVzc2FnZXJTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1tZXNzYWdlcic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3NwRm9ybVVwbG9hZEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtdXBsb2FkZW50aXR5JztcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFN0b3JhZ2VFeHRlbnNpb24gfSBmcm9tICcuLi9lbnRpdHkvc3RvcmFnZWV4dGVuc2lvbic7XG5pbXBvcnQgeyBFeFN0b3JhZ2VGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9leHRlbnNpb25zdG9yYWdlZmlsZWluZm8nO1xuaW1wb3J0IHsgRHJvcExpc3RFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZHJvcGxpc3RlbnRpdHknO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWxsUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvc3JjL3V0aWwvcHJvcGVydHknO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICBzZWxlY3RlZEZpbGVzOiBhbnk7XG5cbiAgc2VsZWN0ZWRGaWxlQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdXBsb2FkSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWQuc3ZnJztcbiAgdXBsb2FkTGl0dGxlSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWRJY29uLnN2Zyc7XG5cbiAgaGFzU2VsZWN0ZWRGaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkUHJvY2VzcyA9IHsgd2lkdGg6ICcwJScgfTtcblxuICBmaWxlVG90YWxDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAvL2ZpbGVVcGxvYWRTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLy9mbGFnOiBudW1iZXIgPSAwO1xuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBxdWV1ZUxpc3RTdHlsZSA9IHsgd2lkdGg6ICc0ODBweCcgfTtcblxuICBkcm9wTGlzdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHVwbG9hZGVkRmlsZVRvdGFsOiBudW1iZXIgPSAwO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIG9sZFVwbG9hZGVkRmlsZUxpc3QgPSBbXTtcbiAgLy91cGxvYWRlZE5hbWVMaXN0ID0gW107XG5cbiAgc2FtZU5hbWVBbGxvd2VkID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VyU2VydmljZSwgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLCBwcml2YXRlIGxvYWRTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSwgcHJpdmF0ZSBpbmplY3Rvcj86IEluamVjdG9yKSB7IH1cbiAgQElucHV0KCkgZm9ybUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvb3RJZDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlVHlwZTogc3RyaW5nID0gXCIqXCI7XG4gIEBJbnB1dCgpIGZpbGVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgb2xkSWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vQE91dHB1dCgpIG9uQ3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ29wQ2VsbCcpIG9wQ2VsbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL2lmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICE9IG51bGwpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0U3RvcmFnZUV4dGVuc2lvbkluZm8oKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPSByZXM7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lID0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiBcIjBcIiwgbmFtZTogdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgfSk7XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIC8vIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goLi4uKHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0KSk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogKCsraSkudG9TdHJpbmcoKSwgbmFtZTogZWxlbWVudCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXVlTGlzdFN0eWxlLndpZHRoID0gJzM4MHB4JztcbiAgICAgICAgICB0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSA9IHRydWU7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRSb290U2V0dGluZyh0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zYW1lTmFtZUFsbG93ZWQgPSByZXMuc2FtZU5hbWVBbGxvd2VkO1xuICAgICAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRVcGxvYWRlZEZpbGVJbmZvTGlzdCh0aGlzLmZvcm1JZCwgdGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSByZXM7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QgPSByZXM7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICAgIGlmICh0aGlzLm9sZElkTGlzdCAhPSBudWxsICYmIHRoaXMub2xkSWRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5yZW1vdmVMaXN0KHRoaXMub2xkSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cblxuICBmaWxlU2VsZWN0ZWQoJGV2ZW50KSB7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbGUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG5cbiAgICBpZiAodGhpcy5maWxlQ291bnQgPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCArIHRoaXMuZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlQ291bnQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkTnVtOiBudW1iZXIgPSAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCBhcyBudW1iZXIpICsgdGhpcy5maWxlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCflt7LpgInmi6knICsgc2VsZWN0ZWROdW0gKyAn5Liq5paH5Lu277yM6LaF6L+H57O757uf6K6+572u55qE5pWw6YeP6ZmQ5Yi2JyArIHRoaXMuZmlsZUNvdW50ICsgJ+S4qu+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy90aGlzLmZsYWcgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc2VsZWN0ZWRGaWxlID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzW2ldO1xuICAgICAgLy9zZWxlY3RlZEZpbGUuc2xpY2VcbiAgICAgIGxldCB1dWlkID0gVVVJRC5VVUlEKCk7XG4gICAgICBpZiAoIXRoaXMuc2FtZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gdGhpcy51cGxvYWRlZE5hbWVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICAgIC8vIHRoaXMubXNnU2VydmljZS5xdWVzdGlvbign5LmL5YmN5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgc2VsZWN0ZWRGaWxlLm5hbWUgKyAn77yM6ZyA6KaB5pu/5o2i5LmI77yfJywgKCkgPT4ge1xuICAgICAgICAgIC8vICAgdXVpZCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpLm1ldGFkYXRhSWQ7XG4gICAgICAgICAgLy8gICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlKTtcbiAgICAgICAgICAvLyB9KVxuICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMubXNnU2VydmljZS5zaG93KCd3YXJuaW5nJywgJ+W3suS4iuS8oOi/h+WQjOWQjeaWh+S7tjogJyArIHNlbGVjdGVkRmlsZS5uYW1lLCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfph43lkb3lkI0nLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvbGROYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld05hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChmbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3TmFtZSA9IG9sZE5hbWUuc3Vic3RyaW5nKDAsIG9sZE5hbWUubGFzdEluZGV4T2YoJy4nKSkgKyAnKCcgKyBpICsgJyknICsgb2xkTmFtZS5zdWJzdHJpbmcob2xkTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBuZXdOYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIG5ld05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfmm7/mjaInLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHV1aWQgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5tZXRhZGF0YUlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdC5tYXAoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpWzBdKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn5Y+W5raIJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGlmICh0aGlzLmZpbGVzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgIC8vICAgdGhpcy5lcnJGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgIC8vICAgY29udGludWU7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA9PSAwKSB7XG4gICAgICAgIHRoaXMubnVsbEZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy90aGlzLmZsYWcgKz0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICAgIC8vbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG5cbiAgICB9XG4gICAgLy8gaWYgKHRoaXMudXBsb2FkZWROYW1lTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy51cGxvYWRlZE5hbWVMaXN0KTtcbiAgICAvLyAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBuYW1lICsgJ+ivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgIC8vICAgdGhpcy51cGxvYWRlZE5hbWVMaXN0ID0gW107XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuZXJyRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyRmlsZUxpc3QpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3suS4iuS8oOWQjOWQjeaWh+S7tjogJyArIG5hbWUgKyAn6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICB0aGlzLmVyckZpbGVMaXN0ID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnVsbEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLm51bGxGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfmlofku7Y6ICAnICsgbmFtZSArICcg5aSn5bCP5Li6MO+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgdGhpcy5udWxsRmlsZUxpc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuZXJyVHlwZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgbGV0IHR5cGU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyVHlwZUxpc3QpO1xuICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+S4jeaUr+aMgeS4iuS8oOexu+Wei+S4uiAnICsgdHlwZSArICfnmoTmlofku7bor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAvLyAgIHRoaXMuZXJyVHlwZUxpc3QgPSBbXTtcbiAgICAvLyB9XG4gICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuc2xpY2UoKTtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICRldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHNob3dFcnJvck1lc3NhZ2UoZmlsZSkge1xuICAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5LiK5Lyg6ZmE5Lu25aSx6LSl44CCJyArIGZpbGUuZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG5cbiAgdXBsb2FkRmlsZSh1dWlkOiBzdHJpbmcsIHNlbGVjdGVkRmlsZSwgZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGxldCBmaWxlSW5mbzogRmlsZUluZm87XG4gICAgLy8gbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcbiAgICAvL3JlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoc2VsZWN0ZWRGaWxlKTtcbiAgICAvL3JlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgIGZpbGVJbmZvID0ge1xuICAgICAgaWQ6IHV1aWQsXG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIHR5cGU6IHNlbGVjdGVkRmlsZS50eXBlLFxuICAgICAgc291cmNlOiBcIlwiLFxuICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZShzZWxlY3RlZEZpbGUuc2l6ZSksXG4gICAgICBmaWxlU2l6ZTogc2VsZWN0ZWRGaWxlLnNpemUsXG4gICAgICBwaWNMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lKSxcbiAgICAgIHF1ZXVlTGlzdERpc3BsYXlOYW1lOiB0aGlzLmdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgLy9jb250ZW50OiByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCksXG4gICAgICBoYXNVcGxvYWRlZDogZmFsc2UsXG4gICAgICBtb3VzZU9uOiBmYWxzZSxcbiAgICAgIHNlbGVjdGQ6IGZhbHNlLFxuICAgICAgaXNVcGxvYWRpbmc6IHRydWUsXG4gICAgICB1cGxvYWRSZXN1bHQ6IGZhbHNlLFxuICAgICAgdXBsb2FkUHJvY2VzczogMCxcbiAgICAgIGVycm9yTWVzc2FnZTogXCJcIixcbiAgICAgIGV4dGVuc2lvbkRyb3BMaXN0SWQ6IDAsXG4gICAgICBleHRlbnNpb25OYW1lOiBcIlwiXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZUV4dGVuc2lvbiAhPSBudWxsKVxuICAgICAgZmlsZUluZm8uZXh0ZW5zaW9uTmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICBsZXQgY2h1bmtUb3RhbDogbnVtYmVyID0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICBsZXQgY2h1bmtJbmRleDogbnVtYmVyID0gMDtcblxuXG4gICAgdGhpcy5maWxlVG90YWxDaHVua1t1dWlkXSA9IGNodW5rVG90YWw7XG5cbiAgICBsZXQgdXBsb2FkRmlsZUluZm8gPSBuZXcgVXBsb2FkRmlsZUluZm8oKTtcblxuICAgIHVwbG9hZEZpbGVJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVOYW1lID0gZmlsZUluZm8ubmFtZTtcbiAgICB1cGxvYWRGaWxlSW5mby5maWxlU2l6ZSA9IGZpbGVJbmZvLnNpemU7XG5cblxuICAgIHdoaWxlIChjaHVua0luZGV4IDwgY2h1bmtUb3RhbCkge1xuICAgICAgbGV0IHVwbG9hZEluZm8gPSBuZXcgR3NwRm9ybVVwbG9hZEVudGl0eTtcbiAgICAgIHVwbG9hZEluZm8uZm9ybUlkID0gdGhpcy5mb3JtSWQ7XG4gICAgICB1cGxvYWRJbmZvLm1vZGUgPSBPcGVyYXRpbmdNb2Rlcy5UZW1wO1xuICAgICAgdXBsb2FkSW5mby5yb290SWQgPSB0aGlzLnJvb3RJZDtcblxuICAgICAgbGV0IGRvY0luZm86IEdzcEZvcm1Eb2NJbmZvID0gbmV3IEdzcEZvcm1Eb2NJbmZvO1xuXG4gICAgICBkb2NJbmZvLmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICBkb2NJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgICAgZG9jSW5mby50b3RhbCA9IGNodW5rVG90YWw7XG5cbiAgICAgIHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID0gMDtcblxuICAgICAgbGV0IG5leHRTaXplID0gTWF0aC5taW4oKGNodW5rSW5kZXggKyAxKSAqIHRoaXMuYnVmZmVyU2l6ZSwgc2VsZWN0ZWRGaWxlLnNpemUpO1xuICAgICAgbGV0IGZpbGVEYXRhID0gc2VsZWN0ZWRGaWxlLnNsaWNlKGNodW5rSW5kZXggKiB0aGlzLmJ1ZmZlclNpemUsIG5leHRTaXplKTtcbiAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlRGF0YSk7XG4gICAgICBsZXQgaW5uZXJJbmRleCA9IGNodW5rSW5kZXg7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBkb2NJbmZvLmZpbGVDb250ZW50ID0gYnRvYShyZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGRvY0luZm8uaW5kZXggPSBpbm5lckluZGV4O1xuICAgICAgICAvL2NodW5rSW5kZXgrKztcbiAgICAgICAgaWYgKHRoaXMuaGF2ZUV4dGVuc2lvblByb3BlcnR5KVxuICAgICAgICAgIGRvY0luZm8uZXhQcm9wZXJ0eU5hbWUgPSB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgIC8vZG9jSW5mby5pc0xhc3QgPSB0cnVlO1xuICAgICAgICB1cGxvYWRJbmZvLmRvY0luZm8gPSBkb2NJbmZvO1xuXG4gICAgICAgIGxldCBpbmZvID0gdXBsb2FkSW5mbztcblxuICAgICAgICAvLyB0aGlzLnJlcXVlc3RBcnJheS5wdXNoKHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRGaWxlKHVwbG9hZEluZm8pKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0Qm9keUFycmF5LnB1c2goaW5mbyk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGUoaW5mbykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5lcnJvck1lc3NhZ2UgPSByZXMuZXJyb3IuTWVzc2FnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0rKztcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUHJvY2VzcyA9IE51bWJlci5wYXJzZUludCgodGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gLyB0aGlzLmZpbGVUb3RhbENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gKiAxMDApLnRvRml4ZWQoMCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID09IHRoaXMuZmlsZVRvdGFsQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vY29uc29sZS5sb2coY2h1bmtJbmRleCArIDEpO1xuICAgICAgY2h1bmtJbmRleCA9IGNodW5rSW5kZXggKyAxO1xuICAgIH1cblxuICAgIGxldCB0eXBlOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUudHlwZTtcbiAgICBpZiAodHlwZS5pbmNsdWRlcyhcImltYWdlXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5JbWFnZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJ3b3JkXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Xb3JkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBkZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUGRmKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBsYWluXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5UeHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwic2hlZXRcIikgfHwgdHlwZS5pbmNsdWRlcyhcImV4Y2VsXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5FeGNlbClcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBvd2VycG9pbnRcIikgfHwgdHlwZS5pbmNsdWRlcyhcInByZXNlbnRhdGlvblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUG93ZXJwb2ludCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgICAgLy8gbGV0IG5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgLy8gbGV0IGVyclR5cGUgPSBuYW1lLnN1YnN0cmluZyhzZWxlY3RlZEZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIC8vIHRoaXMuZXJyVHlwZUxpc3QucHVzaChlcnJUeXBlKTtcbiAgICB9XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHgubmFtZSA9PSBmaWxlSW5mby5uYW1lKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcbiAgICAgICAgICBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZih4KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChpbmRleCAhPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RBbGxGaWxlKCkge1xuXG4gICAgaWYgKCF0aGlzLmZpbGVBbGxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgICAvLyBvYmouY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IHRydWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSB0aGlzLmZpbGVzLmxlbmd0aDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIC8vIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQubmFtZSk7XG4gICAgICAgIC8vIG9iai5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cblxuICBjaGVja291dFNlbGVjdEZpbGUoZmlsZTogRmlsZUluZm8pIHtcbiAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWxlTmFtZSk7XG4gICAgZmlsZS5zZWxlY3RkID0gIWZpbGUuc2VsZWN0ZDtcbiAgICBpZiAoZmlsZS5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCsrO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgLy90aGlzLmlzRmlsZUFsbFNlbGVjdGVkKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdERlbGV0ZUZpbGUoZmlsZUluZm86IEZpbGVJbmZvKSB7XG4gICAgaWYgKGZpbGVJbmZvLnNlbGVjdGQpXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgLy9jb25zb2xlLmxvZyhmaWxlTmFtZSk7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKSwgMSk7XG4gICAgaWYgKGZpbGVJbmZvLnVwbG9hZFJlc3VsdCkge1xuICAgICAgbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwoaWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gMClcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBsaXN0TXVsdGlwbGVEZWxldGVGaWxlKCkge1xuICAgIGxldCBzZWxlY3RlZEZpbGU6IEZpbGVJbmZvW10gPSBbXTtcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgaWYgKG9iai5jaGVja2VkKVxuICAgICAgICBzZWxlY3RlZEZpbGUucHVzaChlbGVtZW50KTtcbiAgICB9KVxuICAgIGxldCBtZXRhZGF0YUxpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWRGaWxlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBtZXRhZGF0YUxpc3QucHVzaChlbGVtZW50LmlkKTtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICBpZiAoZWxlbWVudC51cGxvYWRSZXN1bHQpIHtcbiAgICAgICAgLy8gbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgLy8gaWRMaXN0LnB1c2goZmlsZUluZm8uaWQpO1xuICAgICAgICAvLyB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZWxlbWVudC5uYW1lKVswXSksIDEpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChtZXRhZGF0YUxpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBhbGxCb3g6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWxsQ2hlY2tCb3hcIik7XG4gICAgaWYgKGFsbEJveCAhPSBudWxsKVxuICAgICAgYWxsQm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cblxuICBnZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPD0gMTApXG4gICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgaGVhZENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgMik7XG4gICAgICBsZXQgdGFpbENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSAtIDIpO1xuICAgICAgcmV0dXJuIGhlYWRDb250ZW50ICsgXCLigKZcIiArIHRhaWxDb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIGdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWxlTmFtZTtcbiAgfVxuXG4gIGFkZERvY0luZm8oc2VsZWN0ZEZpbGUsIGZpbGVJbmZvOiBGaWxlSW5mbywgZG9jVHlwZTogRG9jVHlwZSkge1xuICAgIHN3aXRjaCAoZG9jVHlwZSkge1xuICAgICAgY2FzZSBEb2NUeXBlLldvcmQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3dvcmQucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5QZGY6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3BkZi5wbmdcIlxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkV4Y2VsOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9leGNlbC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5UeHQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3R4dC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5Qb3dlcnBvaW50OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wcHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuT3RoZXI6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL2ZpbGUucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuSW1hZ2U6XG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHNlbGVjdGRGaWxlKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChfZXZlbnQpID0+IHtcbiAgICAgICAgICBsZXQgaW1nVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICBpZiAodGhpcy5pbmplY3RvciAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2FuaXRpemVyID0gdGhpcy5pbmplY3Rvci5nZXQoRG9tU2FuaXRpemVyKTtcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaW1nVXJsKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IGltZ1VybDtcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdFRvU3RyaW5nKHN0ckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBuYW1lICs9IHN0ckxpc3RbaV0gKyBcIixcIjtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuXG4gIGV4U3RvcmFnZUZpbGVMaXN0OiBFeFN0b3JhZ2VGaWxlSW5mb1tdID0gW107XG5cbiAgdHlwZUNoYW5nZSgkZXZlbnQ6IGFueSwgZmlsZTogRmlsZUluZm8pIHtcbiAgICBmaWxlLmV4dGVuc2lvbk5hbWUgPSAkZXZlbnQuZGF0YS5uYW1lO1xuICAgIGxldCBleFN0b3JhZ2VGaWxlSW5mbzogRXhTdG9yYWdlRmlsZUluZm8gPSBuZXcgRXhTdG9yYWdlRmlsZUluZm87XG4gICAgaWYgKGZpbGUuZXh0ZW5zaW9uTmFtZSA9PSB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZSkge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3Quc3BsaWNlKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmluZEluZGV4KHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLCAxKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mbyA9IHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpWzBdO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLm1ldGFkYXRhSWQgPSBmaWxlLmlkO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5wdXNoKGV4U3RvcmFnZUZpbGVJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVUb3RhbCAhPSB0aGlzLmZpbGVzLmZpbHRlcih4ID0+IHguaXNVcGxvYWRpbmcgfHwgeC51cGxvYWRSZXN1bHQpLmxlbmd0aCkge1xuICAgICAgLy8gdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoPE5vdGlmeU9wdGlvbnM+e1xuICAgICAgLy8gICBtc2c6ICfkv53lrZjmiJDlip/vvIEnLCB0aW1lb3V0OiAzMDAwXG4gICAgICAvLyB9KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfnrYnkuIDkuIvvvIzmlofmoaPmraPlnKjkuIrkvKDjgIInKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPT0gbnVsbClcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy5sb2FkU2VydmljZS5zaG93KHtcbiAgICAgICAgICBtZXNzYWdlOiAn5q2j5Zyo5bCG5paH5Lu25L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmNoYW5nZVN0b3JhZ2VJbnN0YW5jZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LCB0aGlzLnJvb3RJZCkucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbClcbiAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKCfkv53lrZjliLAnICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvbk5hbWUgKyBcIuWksei0pe+8jOS4iuS8oOaWh+S7tuiHquWKqOS/neWtmOWIsFwiICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgKyBcIuWtmOWCqOOAglwiICsgcmVzLmVycm9yLk1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICAgICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QubGVuZ3RoID09IDApXG4gICAgICByZXR1cm47XG4gICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMubWV0YWRhdGFJZExpc3QucHVzaChlbGVtZW50Lm1ldGFkYXRhSWQpO1xuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbCh0aGlzLm1ldGFkYXRhSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgfVxuXG4gIGdldFVwbG9hZEZpbGVJbmZvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Q7XG4gIH1cblxuICBkZWxldGUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKSwgMSk7XG4gICAgaWYgKGZpbGUudXBsb2FkUmVzdWx0KVxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSk7XG4gICAgfVxuICAgIC8vIHZhciBvYmo6YW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZpbGUnKTtcbiAgICAvLyBvYmouZmlsZXMucmVtb3ZlKCk7XG4gICAgLy9vYmoudmFsdWU9Jyc7XG4gIH1cblxuICBnZXRGaWxlU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICBpZiAoc2l6ZSA8IDEwMjQwMClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIktcIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1cIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMCkgKyBcIk1cIjtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIkdcIjtcbiAgfVxuICBzaG93QnlHcm91cCgpIHtcbiAgICB0aGlzLnNob3dUeXBlID0gMDtcbiAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgfVxuXG4gIHNob3dCeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDE7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgIT0gMCAmJiB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW91c2VPdmVyKGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSB0cnVlO1xuICB9XG4gIG1vdXNlT3V0KGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSBmYWxzZTtcbiAgfVxuXG59XG5cblxuIl19
|
|
1043
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpEO0lBMkRFLDZCQUFvQixVQUEyQixFQUFVLGFBQTRCLEVBQVUsV0FBMkIsRUFBVSxRQUFtQjtRQUFuSSxlQUFVLEdBQVYsVUFBVSxD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QUFDO0NBQUEsQUF6b0JELElBeW9CQztTQXBvQlksbUJBQW1COzs7SUFFOUIsb0NBQXVCOztJQUN2Qiw2Q0FBOEI7O0lBQzlCLGlEQUEwQzs7SUFDMUMsMENBQTJCOztJQUMzQiwwQ0FBMkI7O0lBQzNCLDJDQUE0Qjs7SUFDNUIsdUNBQXFCOztJQUNyQixzQ0FBeUI7O0lBQ3pCLHlDQUF5Qjs7SUFDekIsNENBQW1COztJQUVuQixnREFBOEI7O0lBRTlCLGdEQUE4RDs7SUFDOUQsc0RBQXdFOztJQUV4RSw4Q0FBaUM7O0lBRWpDLDhDQUFpQzs7SUFFakMsNENBQWdDOztJQUVoQyw2Q0FBK0M7O0lBRy9DLDJDQUFpRDs7SUFFakQsK0NBQXlEOztJQUV6RCw0Q0FBOEM7O0lBQzlDLDhDQUFnRDs7SUFHaEQsK0NBQW1DOztJQUVuQyxrREFBaUM7O0lBQ2pDLDhDQUF1Qzs7SUFFdkMsNkNBQW9DOztJQUVwQyw0Q0FBMkI7O0lBRTNCLGdEQUE4Qjs7SUFFOUIsb0RBQXVDOztJQUV2QyxtREFBMEI7O0lBQzFCLGtEQUF5Qjs7SUFHekIsOENBQXVCOztJQUd2QixxQ0FBd0I7O0lBQ3hCLHFDQUF3Qjs7SUFDeEIsdUNBQWdDOztJQUNoQyx3Q0FBK0I7O0lBQy9CLHdDQUFrQzs7SUFJbEMscUNBQThDOztJQTJkOUMsZ0RBQTRDOzs7OztJQXBlaEMseUNBQW1DOzs7OztJQUFFLDRDQUFvQzs7Ozs7SUFBRSwwQ0FBbUM7Ozs7O0lBQUUsdUNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2ZpbGVpbmZvJztcbmltcG9ydCB7IERvY1R5cGUgfSBmcm9tICcuLi9lbnRpdHkvZG9jdHlwZSc7XG5pbXBvcnQgeyBHc3BGb3JtRG9jSW5mbyB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtZG9jaW5mbyc7XG5pbXBvcnQgeyBPcGVyYXRpbmdNb2RlcyB9IGZyb20gJy4uL2VudGl0eS9vcGVyYXRpbmdtb2Rlcyc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvdXBsb2FkZmlsZWluZm8nO1xuaW1wb3J0IHsgTWVzc2FnZXJTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1tZXNzYWdlcic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3NwRm9ybVVwbG9hZEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtdXBsb2FkZW50aXR5JztcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFN0b3JhZ2VFeHRlbnNpb24gfSBmcm9tICcuLi9lbnRpdHkvc3RvcmFnZWV4dGVuc2lvbic7XG5pbXBvcnQgeyBFeFN0b3JhZ2VGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9leHRlbnNpb25zdG9yYWdlZmlsZWluZm8nO1xuaW1wb3J0IHsgRHJvcExpc3RFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZHJvcGxpc3RlbnRpdHknO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWxsUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvc3JjL3V0aWwvcHJvcGVydHknO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICBzZWxlY3RlZEZpbGVzOiBhbnk7XG5cbiAgc2VsZWN0ZWRGaWxlQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdXBsb2FkSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWQuc3ZnJztcbiAgdXBsb2FkTGl0dGxlSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWRJY29uLnN2Zyc7XG5cbiAgaGFzU2VsZWN0ZWRGaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkUHJvY2VzcyA9IHsgd2lkdGg6ICcwJScgfTtcblxuICBmaWxlVG90YWxDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAvL2ZpbGVVcGxvYWRTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLy9mbGFnOiBudW1iZXIgPSAwO1xuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBxdWV1ZUxpc3RTdHlsZSA9IHsgd2lkdGg6ICc0ODBweCcgfTtcblxuICBkcm9wTGlzdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHVwbG9hZGVkRmlsZVRvdGFsOiBudW1iZXIgPSAwO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIG9sZFVwbG9hZGVkRmlsZUxpc3QgPSBbXTtcbiAgLy91cGxvYWRlZE5hbWVMaXN0ID0gW107XG5cbiAgc2FtZU5hbWVBbGxvd2VkID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VyU2VydmljZSwgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLCBwcml2YXRlIGxvYWRTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSwgcHJpdmF0ZSBpbmplY3Rvcj86IEluamVjdG9yKSB7IH1cbiAgQElucHV0KCkgZm9ybUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvb3RJZDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlVHlwZTogc3RyaW5nID0gXCIqXCI7XG4gIEBJbnB1dCgpIGZpbGVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgb2xkSWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vQE91dHB1dCgpIG9uQ3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ29wQ2VsbCcpIG9wQ2VsbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL2lmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICE9IG51bGwpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0U3RvcmFnZUV4dGVuc2lvbkluZm8oKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPSByZXM7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lID0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiBcIjBcIiwgbmFtZTogdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgfSk7XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIC8vIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goLi4uKHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0KSk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogKCsraSkudG9TdHJpbmcoKSwgbmFtZTogZWxlbWVudCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXVlTGlzdFN0eWxlLndpZHRoID0gJzM4MHB4JztcbiAgICAgICAgICB0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSA9IHRydWU7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRSb290U2V0dGluZyh0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zYW1lTmFtZUFsbG93ZWQgPSByZXMuc2FtZU5hbWVBbGxvd2VkO1xuICAgICAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRVcGxvYWRlZEZpbGVJbmZvTGlzdCh0aGlzLmZvcm1JZCwgdGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSByZXM7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpOztcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICAgaWYgKHRoaXMub2xkSWRMaXN0ICE9IG51bGwgJiYgdGhpcy5vbGRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnJlbW92ZUxpc3QodGhpcy5vbGRJZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIGZpbGVTZWxlY3RlZCgkZXZlbnQpIHtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsZSA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZpbGUnKTtcblxuICAgIGlmICh0aGlzLmZpbGVDb3VudCA+IDApIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoICsgdGhpcy5maWxlcy5sZW5ndGggPiB0aGlzLmZpbGVDb3VudCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWROdW06IG51bWJlciA9ICh0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoIGFzIG51bWJlcikgKyB0aGlzLmZpbGVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3sumAieaLqScgKyBzZWxlY3RlZE51bSArICfkuKrmlofku7bvvIzotoXov4fns7vnu5/orr7nva7nmoTmlbDph4/pmZDliLYnICsgdGhpcy5maWxlQ291bnQgKyAn5Liq77yM6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL3RoaXMuZmxhZyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzZWxlY3RlZEZpbGUgPSB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXNbaV07XG4gICAgICAvL3NlbGVjdGVkRmlsZS5zbGljZVxuICAgICAgbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcbiAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgICAgICAvLyB0aGlzLnVwbG9hZGVkTmFtZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgLy8gdGhpcy5tc2dTZXJ2aWNlLnF1ZXN0aW9uKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBzZWxlY3RlZEZpbGUubmFtZSArICfvvIzpnIDopoHmm7/mjaLkuYjvvJ8nLCAoKSA9PiB7XG4gICAgICAgICAgLy8gICB1dWlkID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkubWV0YWRhdGFJZDtcbiAgICAgICAgICAvLyAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUpO1xuICAgICAgICAgIC8vIH0pXG4gICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5tc2dTZXJ2aWNlLnNob3coJ3dhcm5pbmcnLCAn5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgc2VsZWN0ZWRGaWxlLm5hbWUsIHtcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogJ+mHjeWRveWQjScsXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9sZE5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3TmFtZVxuICAgICAgICAgICAgICAgICAgICBsZXQgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZsYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOYW1lID0gb2xkTmFtZS5zdWJzdHJpbmcoMCwgb2xkTmFtZS5sYXN0SW5kZXhPZignLicpKSArICcoJyArIGkgKyAnKScgKyBvbGROYW1lLnN1YnN0cmluZyhvbGROYW1lLmxhc3RJbmRleE9mKCcuJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IG5ld05hbWUpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgbmV3TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogJ+abv+aNoicsXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpLm1ldGFkYXRhSWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vbGRVcGxvYWRlZEZpbGVMaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwrKztcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKVswXSksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogJ+WPlua2iCcsXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBpZiAodGhpcy5maWxlcy5maW5kKHggPT4geC5uYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSAhPSBudWxsKSB7XG4gICAgICAvLyAgIHRoaXMuZXJyRmlsZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAvLyAgIGNvbnRpbnVlO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAoc2VsZWN0ZWRGaWxlLnNpemUgPT0gMCkge1xuICAgICAgICB0aGlzLm51bGxGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vdGhpcy5mbGFnICs9IE1hdGguY2VpbChzZWxlY3RlZEZpbGUuc2l6ZSAvIHRoaXMuYnVmZmVyU2l6ZSk7XG4gICAgICAvL2xldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgc2VsZWN0ZWRGaWxlLm5hbWUpO1xuXG4gICAgfVxuICAgIC8vIGlmICh0aGlzLnVwbG9hZGVkTmFtZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMudXBsb2FkZWROYW1lTGlzdCk7XG4gICAgLy8gICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn5LmL5YmN5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgbmFtZSArICfor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAvLyAgIHRoaXMudXBsb2FkZWROYW1lTGlzdCA9IFtdO1xuICAgIC8vIH1cblxuICAgIGlmICh0aGlzLmVyckZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLmVyckZpbGVMaXN0KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCflt7LkuIrkvKDlkIzlkI3mlofku7Y6ICcgKyBuYW1lICsgJ+ivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgdGhpcy5lcnJGaWxlTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm51bGxGaWxlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy5udWxsRmlsZUxpc3QpO1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn5paH5Lu2OiAgJyArIG5hbWUgKyAnIOWkp+Wwj+S4ujDvvIzor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAgIHRoaXMubnVsbEZpbGVMaXN0ID0gW107XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLmVyclR5cGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGxldCB0eXBlOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLmVyclR5cGVMaXN0KTtcbiAgICAvLyAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfkuI3mlK/mjIHkuIrkvKDnsbvlnovkuLogJyArIHR5cGUgKyAn55qE5paH5Lu26K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgLy8gICB0aGlzLmVyclR5cGVMaXN0ID0gW107XG4gICAgLy8gfVxuICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLnNsaWNlKCk7XG4gICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gIH1cblxuICBzaG93RXJyb3JNZXNzYWdlKGZpbGUpIHtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuZXJyb3IoJ+S4iuS8oOmZhOS7tuWksei0peOAgicgKyBmaWxlLmVycm9yTWVzc2FnZSk7XG4gIH1cblxuXG4gIHVwbG9hZEZpbGUodXVpZDogc3RyaW5nLCBzZWxlY3RlZEZpbGUsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgZmlsZUluZm86IEZpbGVJbmZvO1xuICAgIC8vIGxldCB1dWlkID0gVVVJRC5VVUlEKCk7XG4gICAgLy9yZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHNlbGVjdGVkRmlsZSk7XG4gICAgLy9yZWFkZXIub25sb2FkID0gKGUpID0+IHtcbiAgICBmaWxlSW5mbyA9IHtcbiAgICAgIGlkOiB1dWlkLFxuICAgICAgbmFtZTogZmlsZU5hbWUsXG4gICAgICB0eXBlOiBzZWxlY3RlZEZpbGUudHlwZSxcbiAgICAgIHNvdXJjZTogXCJcIixcbiAgICAgIHNpemU6IHRoaXMuZ2V0RmlsZVNpemUoc2VsZWN0ZWRGaWxlLnNpemUpLFxuICAgICAgZmlsZVNpemU6IHNlbGVjdGVkRmlsZS5zaXplLFxuICAgICAgcGljTGlzdERpc3BsYXlOYW1lOiB0aGlzLmdldFBpY0xpc3REaXNwbGF5TmFtZShmaWxlTmFtZSksXG4gICAgICBxdWV1ZUxpc3REaXNwbGF5TmFtZTogdGhpcy5nZXRRdWV1ZURpc3BsYXlOYW1lKGZpbGVOYW1lKSxcbiAgICAgIC8vY29udGVudDogcmVhZGVyLnJlc3VsdC50b1N0cmluZygpLFxuICAgICAgaGFzVXBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW91c2VPbjogZmFsc2UsXG4gICAgICBzZWxlY3RkOiBmYWxzZSxcbiAgICAgIGlzVXBsb2FkaW5nOiB0cnVlLFxuICAgICAgdXBsb2FkUmVzdWx0OiBmYWxzZSxcbiAgICAgIHVwbG9hZFByb2Nlc3M6IDAsXG4gICAgICBlcnJvck1lc3NhZ2U6IFwiXCIsXG4gICAgICBleHRlbnNpb25Ecm9wTGlzdElkOiAwLFxuICAgICAgZXh0ZW5zaW9uTmFtZTogXCJcIlxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gIT0gbnVsbClcbiAgICAgIGZpbGVJbmZvLmV4dGVuc2lvbk5hbWUgPSB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgbGV0IGNodW5rVG90YWw6IG51bWJlciA9IE1hdGguY2VpbChzZWxlY3RlZEZpbGUuc2l6ZSAvIHRoaXMuYnVmZmVyU2l6ZSk7XG4gICAgbGV0IGNodW5rSW5kZXg6IG51bWJlciA9IDA7XG5cblxuICAgIHRoaXMuZmlsZVRvdGFsQ2h1bmtbdXVpZF0gPSBjaHVua1RvdGFsO1xuXG4gICAgbGV0IHVwbG9hZEZpbGVJbmZvID0gbmV3IFVwbG9hZEZpbGVJbmZvKCk7XG5cbiAgICB1cGxvYWRGaWxlSW5mby5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICB1cGxvYWRGaWxlSW5mby5maWxlTmFtZSA9IGZpbGVJbmZvLm5hbWU7XG4gICAgdXBsb2FkRmlsZUluZm8uZmlsZVNpemUgPSBmaWxlSW5mby5zaXplO1xuXG5cbiAgICB3aGlsZSAoY2h1bmtJbmRleCA8IGNodW5rVG90YWwpIHtcbiAgICAgIGxldCB1cGxvYWRJbmZvID0gbmV3IEdzcEZvcm1VcGxvYWRFbnRpdHk7XG4gICAgICB1cGxvYWRJbmZvLmZvcm1JZCA9IHRoaXMuZm9ybUlkO1xuICAgICAgdXBsb2FkSW5mby5tb2RlID0gT3BlcmF0aW5nTW9kZXMuVGVtcDtcbiAgICAgIHVwbG9hZEluZm8ucm9vdElkID0gdGhpcy5yb290SWQ7XG5cbiAgICAgIGxldCBkb2NJbmZvOiBHc3BGb3JtRG9jSW5mbyA9IG5ldyBHc3BGb3JtRG9jSW5mbztcblxuICAgICAgZG9jSW5mby5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgZG9jSW5mby5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICAgIGRvY0luZm8udG90YWwgPSBjaHVua1RvdGFsO1xuXG4gICAgICB0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSA9IDA7XG5cbiAgICAgIGxldCBuZXh0U2l6ZSA9IE1hdGgubWluKChjaHVua0luZGV4ICsgMSkgKiB0aGlzLmJ1ZmZlclNpemUsIHNlbGVjdGVkRmlsZS5zaXplKTtcbiAgICAgIGxldCBmaWxlRGF0YSA9IHNlbGVjdGVkRmlsZS5zbGljZShjaHVua0luZGV4ICogdGhpcy5idWZmZXJTaXplLCBuZXh0U2l6ZSk7XG4gICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZURhdGEpO1xuICAgICAgbGV0IGlubmVySW5kZXggPSBjaHVua0luZGV4O1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgZG9jSW5mby5maWxlQ29udGVudCA9IGJ0b2EocmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcblxuICAgICAgICBkb2NJbmZvLmluZGV4ID0gaW5uZXJJbmRleDtcbiAgICAgICAgLy9jaHVua0luZGV4Kys7XG4gICAgICAgIGlmICh0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSlcbiAgICAgICAgICBkb2NJbmZvLmV4UHJvcGVydHlOYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgICAgICAvL2RvY0luZm8uaXNMYXN0ID0gdHJ1ZTtcbiAgICAgICAgdXBsb2FkSW5mby5kb2NJbmZvID0gZG9jSW5mbztcblxuICAgICAgICBsZXQgaW5mbyA9IHVwbG9hZEluZm87XG5cbiAgICAgICAgLy8gdGhpcy5yZXF1ZXN0QXJyYXkucHVzaCh0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZSh1cGxvYWRJbmZvKSk7XG4gICAgICAgIHRoaXMucmVxdWVzdEJvZHlBcnJheS5wdXNoKGluZm8pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRGaWxlKGluZm8pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uZXJyb3JNZXNzYWdlID0gcmVzLmVycm9yLk1lc3NhZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdKys7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFByb2Nlc3MgPSBOdW1iZXIucGFyc2VJbnQoKHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdIC8gdGhpcy5maWxlVG90YWxDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdICogMTAwKS50b0ZpeGVkKDApKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGVkQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSA9PSB0aGlzLmZpbGVUb3RhbENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0pIHtcbiAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvL2NvbnNvbGUubG9nKGNodW5rSW5kZXggKyAxKTtcbiAgICAgIGNodW5rSW5kZXggPSBjaHVua0luZGV4ICsgMTtcbiAgICB9XG5cbiAgICBsZXQgdHlwZTogc3RyaW5nID0gc2VsZWN0ZWRGaWxlLnR5cGU7XG4gICAgaWYgKHR5cGUuaW5jbHVkZXMoXCJpbWFnZVwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuSW1hZ2UpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwid29yZFwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuV29yZCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwZGZcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlBkZik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwbGFpblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuVHh0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInNoZWV0XCIpIHx8IHR5cGUuaW5jbHVkZXMoXCJleGNlbFwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuRXhjZWwpXG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJwb3dlcnBvaW50XCIpIHx8IHR5cGUuaW5jbHVkZXMoXCJwcmVzZW50YXRpb25cIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlBvd2VycG9pbnQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLk90aGVyKTtcbiAgICAgIC8vIGxldCBuYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgIC8vIGxldCBlcnJUeXBlID0gbmFtZS5zdWJzdHJpbmcoc2VsZWN0ZWRGaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSk7XG4gICAgICAvLyB0aGlzLmVyclR5cGVMaXN0LnB1c2goZXJyVHlwZSk7XG4gICAgfVxuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmICh4Lm5hbWUgPT0gZmlsZUluZm8ubmFtZSkge1xuICAgICAgICBpZiAoaW5kZXggPT0gLTEpXG4gICAgICAgICAgaW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoeCk7XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoaW5kZXggIT0gLTEgJiYgaW5kZXggIT0gdGhpcy5maWxlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG5cbiAgc2VsZWN0QWxsRmlsZSgpIHtcblxuICAgIGlmICghdGhpcy5maWxlQWxsU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgICAgLy8gb2JqLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gdGhpcy5maWxlcy5sZW5ndGg7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgICAvLyBvYmouY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIH1cbiAgfVxuXG5cbiAgY2hlY2tvdXRTZWxlY3RGaWxlKGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsZU5hbWUpO1xuICAgIGZpbGUuc2VsZWN0ZCA9ICFmaWxlLnNlbGVjdGQ7XG4gICAgaWYgKGZpbGUuc2VsZWN0ZClcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQrKztcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAvL3RoaXMuaXNGaWxlQWxsU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgfVxuXG4gIGxpc3REZWxldGVGaWxlKGZpbGVJbmZvOiBGaWxlSW5mbykge1xuICAgIGlmIChmaWxlSW5mby5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudC0tO1xuICAgIC8vY29uc29sZS5sb2coZmlsZU5hbWUpO1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyksIDEpO1xuICAgIGlmIChmaWxlSW5mby51cGxvYWRSZXN1bHQpIHtcbiAgICAgIGxldCBpZExpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgICBpZExpc3QucHVzaChmaWxlSW5mby5pZCk7XG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IDApXG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgbGlzdE11bHRpcGxlRGVsZXRlRmlsZSgpIHtcbiAgICBsZXQgc2VsZWN0ZWRGaWxlOiBGaWxlSW5mb1tdID0gW107XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgIGlmIChvYmouY2hlY2tlZClcbiAgICAgICAgc2VsZWN0ZWRGaWxlLnB1c2goZWxlbWVudCk7XG4gICAgfSlcbiAgICBsZXQgbWV0YWRhdGFMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHNlbGVjdGVkRmlsZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbWV0YWRhdGFMaXN0LnB1c2goZWxlbWVudC5pZCk7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgaWYgKGVsZW1lbnQudXBsb2FkUmVzdWx0KSB7XG4gICAgICAgIC8vIGxldCBpZExpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgICAgIC8vIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgICAgLy8gdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChpZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBlbGVtZW50Lm5hbWUpWzBdKSwgMSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwobWV0YWRhdGFMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgYWxsQm94OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFsbENoZWNrQm94XCIpO1xuICAgIGlmIChhbGxCb3ggIT0gbnVsbClcbiAgICAgIGFsbEJveC5jaGVja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG5cbiAgZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoZmlsZU5hbWUubGVuZ3RoIDw9IDEwKVxuICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIGVsc2Uge1xuICAgICAgbGV0IGhlYWRDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgbGV0IHRhaWxDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgLSAyKTtcbiAgICAgIHJldHVybiBoZWFkQ29udGVudCArIFwi4oCmXCIgKyB0YWlsQ29udGVudDtcbiAgICB9XG4gIH1cblxuICBnZXRRdWV1ZURpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmlsZU5hbWU7XG4gIH1cblxuICBhZGREb2NJbmZvKHNlbGVjdGRGaWxlLCBmaWxlSW5mbzogRmlsZUluZm8sIGRvY1R5cGU6IERvY1R5cGUpIHtcbiAgICBzd2l0Y2ggKGRvY1R5cGUpIHtcbiAgICAgIGNhc2UgRG9jVHlwZS5Xb3JkOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy93b3JkLnBuZ1wiXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUGRmOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wZGYucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5FeGNlbDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvZXhjZWwucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuVHh0OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy90eHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUG93ZXJwb2ludDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvcHB0LnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLk90aGVyOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9maWxlLnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkltYWdlOlxuICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChzZWxlY3RkRmlsZSk7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoX2V2ZW50KSA9PiB7XG4gICAgICAgICAgbGV0IGltZ1VybCA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICAgICAgaWYgKHRoaXMuaW5qZWN0b3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHNhbml0aXplciA9IHRoaXMuaW5qZWN0b3IuZ2V0KERvbVNhbml0aXplcik7XG4gICAgICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGltZ1VybCk7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBpbWdVcmw7XG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGxpc3RUb1N0cmluZyhzdHJMaXN0OiBzdHJpbmdbXSkge1xuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgbmFtZSArPSBzdHJMaXN0W2ldICsgXCIsXCI7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xuICB9XG5cblxuICBleFN0b3JhZ2VGaWxlTGlzdDogRXhTdG9yYWdlRmlsZUluZm9bXSA9IFtdO1xuXG4gIHR5cGVDaGFuZ2UoJGV2ZW50OiBhbnksIGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgZmlsZS5leHRlbnNpb25OYW1lID0gJGV2ZW50LmRhdGEubmFtZTtcbiAgICBsZXQgZXhTdG9yYWdlRmlsZUluZm86IEV4U3RvcmFnZUZpbGVJbmZvID0gbmV3IEV4U3RvcmFnZUZpbGVJbmZvO1xuICAgIGlmIChmaWxlLmV4dGVuc2lvbk5hbWUgPT0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8gPSB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKVswXTtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5tZXRhZGF0YUlkID0gZmlsZS5pZDtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QucHVzaChleFN0b3JhZ2VGaWxlSW5mbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlVG90YWwgIT0gdGhpcy5maWxlcy5maWx0ZXIoeCA9PiB4LmlzVXBsb2FkaW5nIHx8IHgudXBsb2FkUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoaXMubm90aWZ5U2VydmljZS5zdWNjZXNzKDxOb3RpZnlPcHRpb25zPntcbiAgICAgIC8vICAgbXNnOiAn5L+d5a2Y5oiQ5Yqf77yBJywgdGltZW91dDogMzAwMFxuICAgICAgLy8gfSk7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZygn562J5LiA5LiL77yM5paH5qGj5q2j5Zyo5LiK5Lyg44CCJyk7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9yYWdlRXh0ZW5zaW9uID09IG51bGwpXG4gICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QpO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbG9hZGluZyA9IHRoaXMubG9hZFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgbWVzc2FnZTogJ+ato+WcqOWwhuaWh+S7tuS/neWtmOWIsCcgKyB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZS5jaGFuZ2VTdG9yYWdlSW5zdGFuY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdCwgdGhpcy5yb290SWQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzICE9IG51bGwpXG4gICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lICsgXCLlpLHotKXvvIzkuIrkvKDmlofku7boh6rliqjkv53lrZjliLBcIiArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lICsgXCLlrZjlgqjjgIJcIiArIHJlcy5lcnJvci5NZXNzYWdlKTtcbiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdDtcbiAgICAgICAgICB9KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0Lmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLm1ldGFkYXRhSWRMaXN0LnB1c2goZWxlbWVudC5tZXRhZGF0YUlkKTtcbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwodGhpcy5tZXRhZGF0YUlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gIH1cblxuICBnZXRVcGxvYWRGaWxlSW5mb0xpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICB9XG5cbiAgZGVsZXRlKGZpbGUpIHtcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSksIDEpO1xuICAgIGlmIChmaWxlLnVwbG9hZFJlc3VsdClcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5zcGxpY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maW5kSW5kZXgoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCksIDEpO1xuICAgIH1cbiAgICAvLyB2YXIgb2JqOmFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG4gICAgLy8gb2JqLmZpbGVzLnJlbW92ZSgpO1xuICAgIC8vb2JqLnZhbHVlPScnO1xuICB9XG5cbiAgZ2V0RmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gICAgaWYgKHNpemUgPCAxMDI0MDApXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCkudG9GaXhlZCgwKSArIFwiS1wiO1xuICAgIGVsc2UgaWYgKHNpemUgPCAxMDAgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJNXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJNXCI7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJHXCI7XG4gIH1cbiAgc2hvd0J5R3JvdXAoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDA7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gIH1cblxuICBzaG93QnlMaXN0KCkge1xuICAgIHRoaXMuc2hvd1R5cGUgPSAxO1xuICAgIC8vIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ICE9IDAgJiYgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG1vdXNlT3ZlcihmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gdHJ1ZTtcbiAgfVxuICBtb3VzZU91dChmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gZmFsc2U7XG4gIH1cblxufVxuXG5cbiJdfQ==
|
|
@@ -471,7 +471,7 @@ class FileUploadComponent {
|
|
|
471
471
|
res => {
|
|
472
472
|
if (res != null && res.error == null) {
|
|
473
473
|
this.uploadedFileInfoList = res;
|
|
474
|
-
this.oldUploadedFileList = res;
|
|
474
|
+
this.oldUploadedFileList = JSON.parse(JSON.stringify(res));
|
|
475
475
|
}
|
|
476
476
|
}));
|
|
477
477
|
}
|
|
@@ -563,11 +563,11 @@ class FileUploadComponent {
|
|
|
563
563
|
x => x.fileName == selectedFile.name)).metadataId;
|
|
564
564
|
this.uploadFile(uuid, selectedFile, selectedFile.name);
|
|
565
565
|
this.uploadedFileTotal--;
|
|
566
|
-
if (this.oldUploadedFileList.
|
|
566
|
+
if (this.oldUploadedFileList.find((/**
|
|
567
567
|
* @param {?} x
|
|
568
568
|
* @return {?}
|
|
569
569
|
*/
|
|
570
|
-
x => x.fileName == selectedFile.name))
|
|
570
|
+
x => x.fileName == selectedFile.name))) {
|
|
571
571
|
this.uploadedFileTotal++;
|
|
572
572
|
this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter((/**
|
|
573
573
|
* @param {?} x
|
|
@@ -784,7 +784,7 @@ class FileUploadComponent {
|
|
|
784
784
|
index = this.files.indexOf(x);
|
|
785
785
|
}
|
|
786
786
|
}));
|
|
787
|
-
if (index != this.files.length - 1) {
|
|
787
|
+
if (index != -1 && index != this.files.length - 1) {
|
|
788
788
|
this.files.splice(index, 1);
|
|
789
789
|
this.uploadFileInfoList.splice(index, 1);
|
|
790
790
|
this.uploadedFileInfoList.splice(index, 1);
|