@eqproject/eqp-dynamic-module 2.10.37 → 2.10.39
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/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +46 -4
- package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +2 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +46 -3
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +46 -3
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/dbgetter/dbgetter.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -285,13 +285,20 @@ export class DbgetterComponent {
|
|
|
285
285
|
selectedElement.Selected = true;
|
|
286
286
|
selectedElement.Field = keyused;
|
|
287
287
|
selectedElement.Key = valueToBeSet;
|
|
288
|
+
selectedElement.KeySV = key;
|
|
289
|
+
selectedElement.KeyUsedSV = keyused;
|
|
288
290
|
selectedElement.Value = valueToBeSet;
|
|
289
291
|
this.selectedElements.push(selectedElement);
|
|
290
292
|
var correspondingCol = document.getElementById("col-" + keyused + "-id-" + row['ID']);
|
|
291
293
|
if (correspondingCol == null) {
|
|
292
294
|
correspondingCol = document.getElementById("col-" + key + "-id-" + row['ID']);
|
|
293
295
|
}
|
|
294
|
-
|
|
296
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
297
|
+
correspondingCol.classList.add("row-selected");
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
correspondingCol.parentElement.classList.add("row-selected");
|
|
301
|
+
}
|
|
295
302
|
}
|
|
296
303
|
else {
|
|
297
304
|
var index = this.selectedElements.findIndex(x => x.ID == row['ID']);
|
|
@@ -300,7 +307,12 @@ export class DbgetterComponent {
|
|
|
300
307
|
if (correspondingCol == null) {
|
|
301
308
|
correspondingCol = document.getElementById("col-" + key + "-id-" + row['ID']);
|
|
302
309
|
}
|
|
303
|
-
|
|
310
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
311
|
+
correspondingCol.classList.remove("row-selected");
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
correspondingCol.parentElement.classList.remove("row-selected");
|
|
315
|
+
}
|
|
304
316
|
}
|
|
305
317
|
//this.selectedValue.emit([this.selectedElements]);
|
|
306
318
|
}
|
|
@@ -313,7 +325,37 @@ export class DbgetterComponent {
|
|
|
313
325
|
GlobalService.debugLog("renderSelected", this.selectedElements);
|
|
314
326
|
if (this.selectedElements.length > 0) {
|
|
315
327
|
this.selectedElements.forEach((selectedElement) => {
|
|
316
|
-
document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID)
|
|
328
|
+
var correspondingCol = document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID);
|
|
329
|
+
if (correspondingCol != null) {
|
|
330
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
331
|
+
correspondingCol.classList.add("row-selected");
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
correspondingCol.parentElement.classList.add("row-selected");
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
correspondingCol = document.getElementById("col-" + selectedElement.KeySV + "-id-" + selectedElement.ID);
|
|
339
|
+
if (correspondingCol != null) {
|
|
340
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
341
|
+
correspondingCol.classList.add("row-selected");
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
correspondingCol.parentElement.classList.add("row-selected");
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
correspondingCol = document.getElementById("col-" + selectedElement.Key + "-id-" + selectedElement.ID);
|
|
349
|
+
if (correspondingCol != null) {
|
|
350
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
351
|
+
correspondingCol.classList.add("row-selected");
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
correspondingCol.parentElement.classList.add("row-selected");
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
317
359
|
});
|
|
318
360
|
}
|
|
319
361
|
}
|
|
@@ -382,4 +424,4 @@ export var QueryEditorModeEnum;
|
|
|
382
424
|
QueryEditorModeEnum[QueryEditorModeEnum["COMPOSER"] = 2] = "COMPOSER";
|
|
383
425
|
QueryEditorModeEnum[QueryEditorModeEnum["RESULT"] = 3] = "RESULT";
|
|
384
426
|
})(QueryEditorModeEnum || (QueryEditorModeEnum = {}));
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztR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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksR0FBRztzQkFBWixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTs7QUErWlQsTUFBTSxPQUFPLGdCQUFnQjtDQU81QjtBQUVELDZCQUE2QjtBQUM3QixNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDZFQUFrQixDQUFBO0lBQ2xCLHFFQUFjLENBQUE7SUFDZCxpRUFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RiZ2V0dGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGJnZXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RiZ2V0dGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERiZ2V0dGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbnVsbDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBEaXJlY3RseU9wZW5UYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSA9IG51bGw7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gbnVsbDsgLy8gTG8gZmFjY2lhbW8gZnVuemlvbmFyZSB0aXBvIEVRUC1UQUJMRVxyXG5cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZG9SZWxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7ICBcclxuXHJcbiAga2V5czogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcbiAgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsdWU6IGFueTtcclxuXHJcbiAgc2hvd1RhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGhhdmVRdWVzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXZlUmVsYXRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVsb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuICBtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGludGVydmFsOiBhbnk7XHJcblxyXG4gIHJlbGF0aW9uczogQXJyYXk8e2ZpZWxkOiBzdHJpbmcsIGxvYWRlZDogYm9vbGVhbiwgYWN0dWFsdmFsdWU6IGFueX0+ID0gbmV3IEFycmF5PHtmaWVsZDogc3RyaW5nLCBsb2FkZWQ6IGJvb2xlYW4sIGFjdHVhbHZhbHVlOiBhbnl9PigpO1xyXG4gIHJlbGF0aW9uc0xvYWRlZDogYm9vbGVhbjtcclxuICBiYWNrdXBRdWVzdGlvbkZpZWxkczogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcblxyXG4gIGlzTXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aXNlbGVjdFBoYXNlOiBudW1iZXIgPSAxO1xyXG4gIHNlbGVjdGVkQ29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+ID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcblxyXG4gIGZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCItLS0gSU5TSURFIERCR0VUVEVSIC0tLVwiKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5mb3JtKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5yZWNvcmQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLmZpZWxkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiLS0tIElOU0lERSBEQkdFVFRFUiAtLS1cIik7XHJcblxyXG4gICAgICAvLyBJbml6aW8gUmV0cm9jb21wYXRpYmlsaXTDoFxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID09PSBcInVuZGVmaW5lZFwiKXtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgfSAgICAgXHJcblxyXG4gICAgICAvLyBGaW5lIFJldHJvY29tcGF0aWJpbGl0w6AgICAgXHJcblxyXG4gICAgICAvLyBJbml6aW86IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10pe1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aXNlbGVjdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFBoYXNlID0gMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV07ICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZpbmU6IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgaWYgKHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLm1vZGUgPSBRdWVyeUVkaXRvck1vZGVFbnVtLlJFU1VMVDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuZmllbGQgPSB0aGlzLmZpZWxkO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuaW5Db25maWcgPSB0aGlzLmluQ29uZmlnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB0eXBlb2YgeC5RdWVyeVByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIgJiYgeC5RdWVyeVByb3BlcnR5VmFsdWUgPT0gJz8nKSAhPSBudWxsKXtcclxuICAgICAgICBcclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIj9cIlxyXG4gICAgICAgIHRoaXMuaGF2ZVF1ZXN0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJDSEVDS0lORyBCQUNLVVBTIE9QRU5FRCBGSUVMRFMuLi4uXCIsIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcyA9PSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZm9yRWFjaCgocnFmKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMucHVzaChycWYuUHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHR5cGVvZiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpICE9IG51bGwpe1xyXG5cclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIiFub21lcmVsYXppb25lXCJcclxuICAgICAgICB0aGlzLmhhdmVSZWxhdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maWx0ZXIoeCA9PiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpLmZvckVhY2goKGZpZWxkV2l0aFJlbGF0aW9uKSA9PiB7XHJcblxyXG4gICAgICAgICAgdmFyIGZpZWxkUmVsYXRlZCA9IGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZS5yZXBsYWNlKFwiIVwiLFwiXCIpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdID09IG51bGwpe1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBOVUxMXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogZmFsc2UsIGFjdHVhbHZhbHVlOiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBDSEVDS1wiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRSZWxhdGlvbiA9IHRoaXMucmVsYXRpb25zLmZpbmQoeCA9PiB4LmZpZWxkID09IGZpZWxkUmVsYXRlZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbGF0aW9uICE9IG51bGwpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gR2VzdGlvbmUgZGVpIGNhbWJpIGRpIHZhbG9yZSBkZWkgY2FtcGkgcmVsYXppb25hdGlcclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIE5PTiBFJyBOVUxMLCBlIGNhbWJpYSB2YWxvcmUgaW4gcXVhbGNvc2EgY2hlIE5PTiBFJyBOVUxMXHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIEhBIENBTUJJQVRPIFZBTE9SRSEhXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBOT04gRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlIElOIE5VTExcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBUT1JOQVRPIEFEIEVTU0VSRSBOVUxMISEgOihcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiIVwiK2ZpZWxkUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gQmFja3VwXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcy5mb3JFYWNoKChib2YpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB4LlByb3BlcnR5TmFtZSA9PSBib2YpLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiP1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9PSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIFBJVScgTlVMTCEhIDopXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sMjAwKTtcclxuXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIE5VTEwhISA6KVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgPyB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIDogJyc7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogdHJ1ZSwgYWN0dWFsdmFsdWU6IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF19KTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JlbGF0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSk7ICAgICAgICBcclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaGF2ZVJlbGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy5yZWxhdGlvbnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9ICAgICBcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKXtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1JFU1VMVF9NQU5ZX05VTUVSSUMudHh0Jywge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSlcclxuICAgICAgLnN1YnNjcmliZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEsW10pO1xyXG4gICAgICAgfSk7ICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlbG9hZENvbXBvbmVudCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlJFTE9BRCBDT01QT05FTlQgQ0FMTEVEXCIsIHRoaXMucmVjb3JkLCB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQpO1xyXG5cclxuICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5yZWxvYWQgPSB0cnVlOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiUkVMT0FERUQgUVVFUllFRElUT1JcIik7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7IFxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZWxhdGlvbnMoKXtcclxuICAgIHRoaXMucmVsYXRpb25zTG9hZGVkID0gdGhpcy5yZWxhdGlvbnMuZmluZCh4ID0+IHgubG9hZGVkKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25FeHRlcm5hbFNRTFJlc3VsdE91dChldjogZXZlbnRPdXQpe1xyXG5cclxuICAgIC8vY29uc29sZS5sb2coXCJSaXN1bHRhdG8gZGVsbCdlbGFib3JhemlvbmUgZGVsIHF1ZXJ5IGVkaXRvcjogb25FeHRlcm5hbFNRTFJlc3VsdE91dFwiLCBldik7XHJcblxyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNlbmQtb3V0XCIpICE9IC0xKXsgdGhpcy5vdXQuZW1pdChldik7IH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKGV2LlBhcmFtcy5yZXN1bHQpO1xyXG4gICAgdGhpcy5wcm9jZXNzUmVzdWx0KHRoaXMuZGF0YSxldi5CZWhhdmlvdXJzKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzdWx0KGRhdGE6IGFueSwgYmVoYXZpb3VyczogQXJyYXk8c3RyaW5nPiA9IFtdKXtcclxuICAgIFxyXG4gICAgLy9kYXRhIMOoIGwnYXJyYXkgZGVpIHJlY29yZCB0b3JuYXRpIGRhbCBkYlxyXG5cclxuICAgIC8vIHNlIGhvIGRlbGxlIHJpc3Bvc3RlXHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKXtcclxuXHJcbiAgICAgIC8vIGNvbnRyb2xsbyBxdWFudGkgYXR0cmlidXRpIGhhIGxhIHJpc3Bvc3RhXHJcbiAgICAgIHRoaXMua2V5cyA9IE9iamVjdC5rZXlzKGRhdGFbMF0pO1xyXG5cclxuICAgICAgLy8gc2UgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGEgcHJlbmRvIGlsIHZhbG9yZSBkaXJldHRhbWVudGVcclxuICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPT0gMiAmJiBkYXRhLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAvLyBTZSBobyB1biBzb2xvIG9jY2hpZXR0byBzZWxlemlvbmF0byBlIGxhIHF1ZXJ5IHJlc3RpdHVpc2NlIHVuIHNvbG8gdmFsb3JlLCBsbyBidXR0byBmdW9yaSBhdXRvbWF0aWNhbWVudGVcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibmVsbGEgcmlzcG9zdGEgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGFcIik7XHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIE5vbiDDqCBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuXHJcbiAgICAgICAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgICAgICAgIGlmKGRhdGFbMF0uaGFzT3duUHJvcGVydHkoXCJJRFwiKSl7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCl7IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9IHt9OyB9XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1t0aGlzLmZpZWxkLk5hbWUrXCJfX19fSURcIl0gPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXV0sZGF0YVswXVsnSUQnXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIC8vIGRldm8gZmFyZ2xpIGxhIHNydXR0dXJhIGRlbCBkYXRvXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuICAgICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IHRoaXMua2V5c1sxXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID09IDEgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gdW5hIHNvbGEgcmlzcG9zdGEgZWQgaG8gdW5hIGNvbG9ubmEgZGEgY3VpIMOoIGZvcnphdG8gaWwgcmVjdXBlcm8gZGVsIHZhbG9yZVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXSxkYXRhWzBdWydJRCddXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gICAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudCA9IG5ldyBMaXN0VmFsdWVFbGVtZW50KCk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LkZpZWxkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gcGnDuSBkaSB1bmEgcmlzcG9zdGFcIik7XHJcblxyXG4gICAgICAgIHRoaXMubXVsdGlwbGVWYWx1ZXNUb0Nob29zZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKGJlaGF2aW91cnMuaW5kZXhPZihcIm1hbmFnZS1xdWVzdGlvbi1pbi1kYmdldHRlclwiKSAhPSAtMSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuRGlyZWN0bHlPcGVuVGFibGUpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlOyAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhbHVlKHJvdywga2V5KXtcclxuICAgIHZhciBrZXl1c2VkO1xyXG4gICAgdmFyIHZhbHVlID0gcm93W2tleV07XHJcblxyXG4gICAgdmFyIHZhbHVlVG9CZVNldCA9IFwiXCI7XHJcblxyXG4gICAgaWYodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgdmFsdWVUb0JlU2V0ID0gdmFsdWU7XHJcbiAgICAgIGtleXVzZWQgPSBrZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWx1ZVRvQmVTZXQgPSByb3dbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICBrZXl1c2VkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlVG9CZVNldCA9PSBudWxsKXsgdmFsdWVUb0JlU2V0ID0gXCJcIjsgfVxyXG5cclxuXHJcbiAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgIGlmKHJvdy5oYXNPd25Qcm9wZXJ0eShcIklEXCIpKXtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9PSBudWxsKXsgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID0ge307IH1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zW3RoaXMuZmllbGQuTmFtZStcIl9fX19JRFwiXSA9IHJvd1snSUQnXTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8vRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhcIlVuIHNvbG8gcmlzdWx0YXRvIHRyb3ZhdG8sIMOoIHN0YXRvIGluc2VyaXRvIGluIGF1dG9tYXRpY29cIik7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHZhbHVlVG9CZVNldDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3ZhbHVlVG9CZVNldCxyb3dbJ0lEJ11dKTsgICAgXHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gbXVsdGlzZWxlY3RcIik7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoeCA9PiB4LklEID09IHJvd1snSUQnXSkgPT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSByb3dbJ0lEJ107XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gdmFsdWVUb0JlU2V0O1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG5cclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleXVzZWQrXCItaWQtXCIrcm93WydJRCddKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCA9PSBudWxsKXsgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleStcIi1pZC1cIityb3dbJ0lEJ10pOyB9XHJcbiAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZmluZEluZGV4KHggPT4geC5JRCA9PSByb3dbJ0lEJ10pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsMSk7XHJcblxyXG4gICAgICAgIHZhciBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5dXNlZCtcIi1pZC1cIityb3dbJ0lEJ10pO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sID09IG51bGwpeyBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5K1wiLWlkLVwiK3Jvd1snSUQnXSk7IH1cclxuICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5yZW1vdmUoXCJyb3ctc2VsZWN0ZWRcIik7ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICBcclxuICAgICAgICAgICAgXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHJlbmRlclNlbGVjdGVkKCl7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlbmRlclNlbGVjdGVkXCIsIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKHNlbGVjdGVkRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5GaWVsZCtcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNsb3NlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbXCIqKioqQ0xPU0UqKioqXCIsMF0pO1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgZGVsZXRlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbbnVsbCwwXSk7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH0gIFxyXG5cclxuICBhY3RpdmF0ZVRhYmxlKCl7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJTZWxlY3RlZCgpO1xyXG4gICAgfSwyMDApO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkRGF0YSgpe1xyXG4gICAgdGhpcy5kb1JlbG9hZC5lbWl0KG51bGwpO1xyXG4gIH0gIFxyXG5cclxuICBzZWxlY3RDb2x1bW4oa2V5KXtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0ga2V5O1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0UGhhc2UgPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybVNlbGVjdGlvbigpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyBcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRWxlbWVudCB7XHJcbiAgSUQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBTZWxlY3RlZDogYm9vbGVhbjtcclxuICBGaWVsZDogc3RyaW5nO1xyXG4gIEtleTogc3RyaW5nO1xyXG4gIFZhbHVlOiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG4vLyBPIGNvc8OsIG8gc2NoaWFudGF0byBhIG1hbm9cclxuZXhwb3J0IGVudW0gUXVlcnlFZGl0b3JNb2RlRW51bSB7XHJcbiAgXCJDT05GSUdVUkFUT1JcIiA9IDEsXHJcbiAgXCJDT01QT1NFUlwiID0gMixcclxuICBcIlJFU1VMVFwiID0gM1xyXG59IiwiPGRpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoJGV2ZW50KTtcIiAqbmdJZj1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwgJiYgcmVsYXRpb25zTG9hZGVkICYmIHJlbG9hZFwiPjwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZsb2F0aW5ndGFibGUgZHJhZ2dhYmxlXCIgY2RrRHJhZyAqbmdJZj1cInNob3dUYWJsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJjbG9zZSgpXCI+Y2xvc2U8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJkZWxldGUoKVwiPmRlbGV0ZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+PG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNdWx0aXNlbGVjdFwiPlNlbGV6aW9uYSBpbCB2YWxvcmUgZGEgcmVnaXN0cmFyZS48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMVwiPlNlbGV6aW9uYSB1bmEgY29sb25uYTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkQ29sdW1uICE9IG51bGwgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPkhhaSBzZWxlemlvbmF0bzogPGI+e3tzZWxlY3RlZENvbHVtbi5zcGxpdChcIl9fXCIpWzFdfX08L2I+Ljwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyXCI+U2VsZXppb25hIGFsbWVubyB1biBlbGVtZW50byBwcmVzZW50ZSBzb3R0byBhbGxhIGNvbG9ubmEgc2VsZXppb25hdGE8L3NwYW4+ICAgICAgICBcclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1jb25maXJtXCIgKGNsaWNrKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uID5jaGVjazwvbWF0LWljb24+IENvbmZlcm1hIHNlbGV6aW9uZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCIgW25nQ2xhc3NdPVwieyd0YWJsZS1ub3Rmb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgIT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCwgJ3RhYmxlLWZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSAhPSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3Qtbm90Zm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3QtZm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsfVwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIChjbGljayk9XCJzZWxlY3RDb2x1bW4oa2V5KVwiIGlkPVwiaGVhZGNvbC17e2tleX19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlKHJvdywga2V5KVwiIGlkPVwiY29sLXt7a2V5fX0taWQte3tyb3dbJ0lEJ119fVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA8PSAxMDBcIiBbaW5uZXJIVE1MXT1cInJvd1trZXldXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyb3dba2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtbm90Zm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlTm90Rm9yY2VkKHJvd1trZXldKVwiPlxyXG4gICAgICAgICAgICAgICAge3tyb3dba2V5XSAhPSBudWxsID8gcm93W2tleV0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMDApIDogJyd9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtZm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZUZvcmNlZChyb3cpXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIj5cclxuICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG4gICAgLS0+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxzcGFuICpuZ0lmPVwidmFsdWUgIT0gbnVsbFwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuXHJcbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFycm93LWRvd25cIiAoY2xpY2spPVwiYWN0aXZhdGVUYWJsZSgpXCIgKm5nSWY9XCJtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlXCI+XHJcbiAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hcnJvdy1kb3duXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b25cIj5cclxuICAgIDxtYXQtaWNvbj5sb29wPC9tYXQtaWNvbj5cclxuPC9idXR0b24+Il19
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztR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SUFBSSxFQUFDO1lBQ3RELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OytHQS9jVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix1VkNkOUIsczlKQTJGUzs0RkQ3RUksaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFVBQVU7aUdBTVgsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLEdBQUc7c0JBQVosTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07O0FBcWNULE1BQU0sT0FBTyxnQkFBZ0I7Q0FTNUI7QUFFRCw2QkFBNkI7QUFDN0IsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3Qiw2RUFBa0IsQ0FBQTtJQUNsQixxRUFBYyxDQUFBO0lBQ2QsaUVBQVksQ0FBQTtBQUNkLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQsIERhdGFHZXR0ZXJUeXBlRW51bSwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYmdldHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RiZ2V0dGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYmdldHRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYmdldHRlckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyA9IG51bGw7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgRGlyZWN0bHlPcGVuVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEgPSBudWxsOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IG51bGw7IC8vIExvIGZhY2NpYW1vIGZ1bnppb25hcmUgdGlwbyBFUVAtVEFCTEVcclxuXHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGRvUmVsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAgXHJcblxyXG4gIGtleXM6IEFycmF5PHN0cmluZz4gPSBudWxsO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIHNob3dUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBoYXZlUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGF2ZVJlbGF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlbG9hZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbXVsdGlwbGVWYWx1ZXNUb0Nob29zZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpbnRlcnZhbDogYW55O1xyXG5cclxuICByZWxhdGlvbnM6IEFycmF5PHtmaWVsZDogc3RyaW5nLCBsb2FkZWQ6IGJvb2xlYW4sIGFjdHVhbHZhbHVlOiBhbnl9PiA9IG5ldyBBcnJheTx7ZmllbGQ6IHN0cmluZywgbG9hZGVkOiBib29sZWFuLCBhY3R1YWx2YWx1ZTogYW55fT4oKTtcclxuICByZWxhdGlvbnNMb2FkZWQ6IGJvb2xlYW47XHJcbiAgYmFja3VwUXVlc3Rpb25GaWVsZHM6IEFycmF5PHN0cmluZz4gPSBudWxsO1xyXG5cclxuICBpc011bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbXVsdGlzZWxlY3RQaGFzZTogbnVtYmVyID0gMTtcclxuICBzZWxlY3RlZENvbHVtbjogc3RyaW5nID0gXCJcIjtcclxuICBzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxMaXN0VmFsdWVFbGVtZW50PiA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG5cclxuICBmaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiLS0tIElOU0lERSBEQkdFVFRFUiAtLS1cIik7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMuZm9ybSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMucmVjb3JkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5maWVsZCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIi0tLSBJTlNJREUgREJHRVRURVIgLS0tXCIpO1xyXG5cclxuICAgICAgLy8gSW5pemlvIFJldHJvY29tcGF0aWJpbGl0w6BcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9PT0gXCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcbiAgICAgIH0gICAgIFxyXG5cclxuICAgICAgLy8gRmluZSBSZXRyb2NvbXBhdGliaWxpdMOgICAgIFxyXG5cclxuICAgICAgLy8gSW5pemlvOiBUYWJlbGxhIG11bHRpc2VsZWN0P1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddKXtcclxuICAgICAgICB0aGlzLmlzTXVsdGlzZWxlY3QgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleTtcclxuICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RQaGFzZSA9IDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdOyAgICBcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzID09IG51bGwpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTsgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGaW5lOiBUYWJlbGxhIG11bHRpc2VsZWN0P1xyXG5cclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpe1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5tb2RlID0gUXVlcnlFZGl0b3JNb2RlRW51bS5SRVNVTFQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkID0gdGhpcy5yZWNvcmQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmluQ29uZmlnID0gdGhpcy5pbkNvbmZpZztcclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4gdHlwZW9mIHguUXVlcnlQcm9wZXJ0eVZhbHVlICE9PSBcIm9iamVjdFwiICYmIHguUXVlcnlQcm9wZXJ0eVZhbHVlID09ICc/JykgIT0gbnVsbCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gSWwgY2FtcG8gaGEgYWxtZW5vIHVuIHZhbG9yZSBjb24gXCI/XCJcclxuICAgICAgICB0aGlzLmhhdmVRdWVzdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQ0hFQ0tJTkcgQkFDS1VQUyBPUEVORUQgRklFTERTLi4uLlwiLCB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMgPT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZvckVhY2goKHJxZikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzLnB1c2gocnFmLlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB0eXBlb2YgeC5RdWVyeVByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIgJiYgeC5RdWVyeVByb3BlcnR5VmFsdWUuaW5kZXhPZignIScpICE9IC0xKSAhPSBudWxsKXtcclxuXHJcbiAgICAgICAgLy8gSWwgY2FtcG8gaGEgYWxtZW5vIHVuIHZhbG9yZSBjb24gXCIhbm9tZXJlbGF6aW9uZVwiXHJcbiAgICAgICAgdGhpcy5oYXZlUmVsYXRpb25zID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmlsdGVyKHggPT4geC5RdWVyeVByb3BlcnR5VmFsdWUuaW5kZXhPZignIScpICE9IC0xKS5mb3JFYWNoKChmaWVsZFdpdGhSZWxhdGlvbikgPT4ge1xyXG5cclxuICAgICAgICAgIHZhciBmaWVsZFJlbGF0ZWQgPSBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUucmVwbGFjZShcIiFcIixcIlwiKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA9PSBudWxsKXtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gRScgTlVMTFwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKHtmaWVsZDogZmllbGRSZWxhdGVkLCBsb2FkZWQ6IGZhbHNlLCBhY3R1YWx2YWx1ZTogdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXX0pO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVsYXRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gQ0hFQ0tcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UmVsYXRpb24gPSB0aGlzLnJlbGF0aW9ucy5maW5kKHggPT4geC5maWVsZCA9PSBmaWVsZFJlbGF0ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGlvbiAhPSBudWxsKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIEdlc3Rpb25lIGRlaSBjYW1iaSBkaSB2YWxvcmUgZGVpIGNhbXBpIHJlbGF6aW9uYXRpXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBOT04gRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlIGluIHF1YWxjb3NhIGNoZSBOT04gRScgTlVMTFxyXG4gICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBIQSBDQU1CSUFUTyBWQUxPUkUhIVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgTk9OIEUnIE5VTEwsIGUgY2FtYmlhIHZhbG9yZSBJTiBOVUxMXHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSAhPSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gRScgVE9STkFUTyBBRCBFU1NFUkUgTlVMTCEhIDooXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSBcIiFcIitmaWVsZFJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlY3VwZXJvIEJhY2t1cFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMuZm9yRWFjaCgoYm9mKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4geC5Qcm9wZXJ0eU5hbWUgPT0gYm9mKS5RdWVyeVByb3BlcnR5VmFsdWUgPSBcIj9cIjtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIEUnIE5VTEwsIGUgY2FtYmlhIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIE5PTiBFJyBQSVUnIE5VTEwhISA6KVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUmVsYXRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LDIwMCk7XHJcblxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIE5PTiBFJyBOVUxMISEgOilcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBudWxsID8gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKHtmaWVsZDogZmllbGRSZWxhdGVkLCBsb2FkZWQ6IHRydWUsIGFjdHVhbHZhbHVlOiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIH0pOyAgICAgICAgXHJcblxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmhhdmVSZWxhdGlvbnMpe1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSAgICAgXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCl7XHJcblxyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCcuL2Fzc2V0cy9tb2NrdXBzL21vY2tlZEZyb21RdWVyeUVkaXRvcl9SRVNVTFRfTUFOWV9OVU1FUklDLnR4dCcsIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pXHJcbiAgICAgIC5zdWJzY3JpYmUobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKG1vY2tlZEZyb21RdWVyeUVkaXRvcik7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZSh0aGlzLmRhdGEucmVzdWx0KTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NSZXN1bHQodGhpcy5kYXRhLFtdKTtcclxuICAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZWxvYWRDb21wb25lbnQoKXtcclxuICAgIC8vY29uc29sZS5sb2coXCJSRUxPQUQgQ09NUE9ORU5UIENBTExFRFwiLCB0aGlzLnJlY29yZCwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkKTtcclxuXHJcbiAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkID0gdGhpcy5yZWNvcmQ7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5maWVsZCA9IHRoaXMuZmllbGQ7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMucmVsb2FkID0gdHJ1ZTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJFTE9BREVEIFFVRVJZRURJVE9SXCIpOyBcclxuICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOyBcclxuICB9XHJcblxyXG4gIGNoZWNrUmVsYXRpb25zKCl7XHJcbiAgICB0aGlzLnJlbGF0aW9uc0xvYWRlZCA9IHRoaXMucmVsYXRpb25zLmZpbmQoeCA9PiB4LmxvYWRlZCkgIT0gbnVsbDtcclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoZXY6IGV2ZW50T3V0KXtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKFwiUmlzdWx0YXRvIGRlbGwnZWxhYm9yYXppb25lIGRlbCBxdWVyeSBlZGl0b3I6IG9uRXh0ZXJuYWxTUUxSZXN1bHRPdXRcIiwgZXYpO1xyXG5cclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzZW5kLW91dFwiKSAhPSAtMSl7IHRoaXMub3V0LmVtaXQoZXYpOyB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShldi5QYXJhbXMucmVzdWx0KTtcclxuICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEsZXYuQmVoYXZpb3Vycyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc1Jlc3VsdChkYXRhOiBhbnksIGJlaGF2aW91cnM6IEFycmF5PHN0cmluZz4gPSBbXSl7XHJcbiAgICBcclxuICAgIC8vZGF0YSDDqCBsJ2FycmF5IGRlaSByZWNvcmQgdG9ybmF0aSBkYWwgZGJcclxuXHJcbiAgICAvLyBzZSBobyBkZWxsZSByaXNwb3N0ZVxyXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCl7XHJcblxyXG4gICAgICAvLyBjb250cm9sbG8gcXVhbnRpIGF0dHJpYnV0aSBoYSBsYSByaXNwb3N0YVxyXG4gICAgICB0aGlzLmtleXMgPSBPYmplY3Qua2V5cyhkYXRhWzBdKTtcclxuXHJcbiAgICAgIC8vIHNlIGhvIHNvbGFtZW50ZSBsJ0lEIGUgaWwgY2FtcG8gc2NlbHRvIGVkIGhvIHVuYSBzb2xhIHJpc3Bvc3RhIHByZW5kbyBpbCB2YWxvcmUgZGlyZXR0YW1lbnRlXHJcbiAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09IDIgJiYgZGF0YS5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgLy8gU2UgaG8gdW4gc29sbyBvY2NoaWV0dG8gc2VsZXppb25hdG8gZSBsYSBxdWVyeSByZXN0aXR1aXNjZSB1biBzb2xvIHZhbG9yZSwgbG8gYnV0dG8gZnVvcmkgYXV0b21hdGljYW1lbnRlXHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5lbGxhIHJpc3Bvc3RhIGhvIHNvbGFtZW50ZSBsJ0lEIGUgaWwgY2FtcG8gc2NlbHRvIGVkIGhvIHVuYSBzb2xhIHJpc3Bvc3RhXCIpO1xyXG4gICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcblxyXG4gICAgICAgICAgLy8gQ29tdW5xdWUgc2lhIGNpIHBvcnRpYW1vIGRpZXRybyBsJ0lEIGRlbGxhIHNlbGV6aW9uZSBjb24gdW4gY2FtcG8gY3VzdG9tLCBwdcOyIHNlbXByZSBzZXJ2aXJlXHJcbiAgICAgICAgICBpZihkYXRhWzBdLmhhc093blByb3BlcnR5KFwiSURcIikpe1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID09IG51bGwpeyB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPSB7fTsgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXNbdGhpcy5maWVsZC5OYW1lK1wiX19fX0lEXCJdID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbZGF0YVswXVt0aGlzLmtleXNbMV1dLGRhdGFbMF1bJ0lEJ11dKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gRScgdW4gZWxlbmNvIGdlbmVyaWNvIGRiZ2V0dGVyIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICAvLyBkZXZvIGZhcmdsaSBsYSBzcnV0dHVyYSBkZWwgZGF0b1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5JRCA9IGRhdGFbMF1bJ0lEJ107XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSB0aGlzLmtleXNbMV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIGlmIChkYXRhLmxlbmd0aCA9PSAxICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHVuYSBzb2xhIHJpc3Bvc3RhIGVkIGhvIHVuYSBjb2xvbm5hIGRhIGN1aSDDqCBmb3J6YXRvIGlsIHJlY3VwZXJvIGRlbCB2YWxvcmVcIik7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdCl7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gTm9uIMOoIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbZGF0YVswXVt0aGlzLmtleXNbMV0sZGF0YVswXVsnSUQnXV1dKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gRScgdW4gZWxlbmNvIGdlbmVyaWNvIGRiZ2V0dGVyIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuICAgICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleSA9IGRhdGFbMF1bdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTsgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm11bHRpcGxlVmFsdWVzVG9DaG9vc2UgPSB0cnVlO1xyXG4gICAgICAgIGlmIChiZWhhdmlvdXJzLmluZGV4T2YoXCJtYW5hZ2UtcXVlc3Rpb24taW4tZGJnZXR0ZXJcIikgIT0gLTEpe1xyXG4gICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLkRpcmVjdGx5T3BlblRhYmxlKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RhYmxlID0gdHJ1ZTsgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzZWxlY3RWYWx1ZShyb3csIGtleSl7XHJcbiAgICB2YXIga2V5dXNlZDtcclxuICAgIHZhciB2YWx1ZSA9IHJvd1trZXldO1xyXG5cclxuICAgIHZhciB2YWx1ZVRvQmVTZXQgPSBcIlwiO1xyXG5cclxuICAgIGlmKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgIHZhbHVlVG9CZVNldCA9IHZhbHVlO1xyXG4gICAgICBrZXl1c2VkID0ga2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsdWVUb0JlU2V0ID0gcm93W3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAga2V5dXNlZCA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZVRvQmVTZXQgPT0gbnVsbCl7IHZhbHVlVG9CZVNldCA9IFwiXCI7IH1cclxuXHJcblxyXG4gICAgLy8gQ29tdW5xdWUgc2lhIGNpIHBvcnRpYW1vIGRpZXRybyBsJ0lEIGRlbGxhIHNlbGV6aW9uZSBjb24gdW4gY2FtcG8gY3VzdG9tLCBwdcOyIHNlbXByZSBzZXJ2aXJlXHJcbiAgICBpZihyb3cuaGFzT3duUHJvcGVydHkoXCJJRFwiKSl7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCl7IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9IHt9OyB9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1t0aGlzLmZpZWxkLk5hbWUrXCJfX19fSURcIl0gPSByb3dbJ0lEJ107XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAvL0VxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlN1Y2Nlc3MoXCJVbiBzb2xvIHJpc3VsdGF0byB0cm92YXRvLCDDqCBzdGF0byBpbnNlcml0byBpbiBhdXRvbWF0aWNvXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgLy8gTm9uIMOoIG11bHRpc2VsZWN0XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt2YWx1ZVRvQmVTZXQscm93WydJRCddXSk7ICAgIFxyXG4gICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIG11bHRpc2VsZWN0XCIpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maW5kKHggPT4geC5JRCA9PSByb3dbJ0lEJ10pID09IG51bGwpe1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJobyBwacO5IGRpIHVuYSByaXNwb3N0YVwiKTtcclxuXHJcbiAgICAgICAgLy8gRScgdW4gZWxlbmNvIGdlbmVyaWNvIGRiZ2V0dGVyIG11bHRpc2VsZWN0XHJcbiAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudCA9IG5ldyBMaXN0VmFsdWVFbGVtZW50KCk7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gcm93WydJRCddO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5TZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LkZpZWxkID0ga2V5dXNlZDtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gdmFsdWVUb0JlU2V0O1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXlTViA9IGtleTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5VXNlZFNWID0ga2V5dXNlZDtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSB2YWx1ZVRvQmVTZXQ7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XHJcblxyXG4gICAgICAgIHZhciBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5dXNlZCtcIi1pZC1cIityb3dbJ0lEJ10pO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sID09IG51bGwpeyBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5K1wiLWlkLVwiK3Jvd1snSUQnXSk7IH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmRJbmRleCh4ID0+IHguSUQgPT0gcm93WydJRCddKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMuc3BsaWNlKGluZGV4LDEpO1xyXG5cclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleXVzZWQrXCItaWQtXCIrcm93WydJRCddKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCA9PSBudWxsKXsgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleStcIi1pZC1cIityb3dbJ0lEJ10pOyB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QucmVtb3ZlKFwicm93LXNlbGVjdGVkXCIpOyAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvL3RoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTsgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICByZW5kZXJTZWxlY3RlZCgpe1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV07XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzID09IG51bGwpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTsgfVxyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJyZW5kZXJTZWxlY3RlZFwiLCB0aGlzLnNlbGVjdGVkRWxlbWVudHMpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKChzZWxlY3RlZEVsZW1lbnQpID0+IHtcclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5GaWVsZCtcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5LZXlTVitcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpO1xyXG4gICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSAge1xyXG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIrc2VsZWN0ZWRFbGVtZW50LktleStcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpO1xyXG4gICAgICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtcIioqKipDTE9TRSoqKipcIiwwXSk7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBkZWxldGUoKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtudWxsLDBdKTtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfSAgXHJcblxyXG4gIGFjdGl2YXRlVGFibGUoKXtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlclNlbGVjdGVkKCk7XHJcbiAgICB9LDIwMCk7XHJcbiAgfVxyXG5cclxuICByZWxvYWREYXRhKCl7XHJcbiAgICB0aGlzLmRvUmVsb2FkLmVtaXQobnVsbCk7XHJcbiAgfSAgXHJcblxyXG4gIHNlbGVjdENvbHVtbihrZXkpe1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBrZXk7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3RQaGFzZSA9IDI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25maXJtU2VsZWN0aW9uKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7IFxyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0VmFsdWVFbGVtZW50IHtcclxuICBJRDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIFNlbGVjdGVkOiBib29sZWFuO1xyXG4gIEZpZWxkOiBzdHJpbmc7XHJcbiAgS2V5OiBzdHJpbmc7XHJcbiAgS2V5U1Y6IHN0cmluZztcclxuICBLZXlVc2VkU1Y6IHN0cmluZztcclxuICBWYWx1ZTogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuLy8gTyBjb3PDrCBvIHNjaGlhbnRhdG8gYSBtYW5vXHJcbmV4cG9ydCBlbnVtIFF1ZXJ5RWRpdG9yTW9kZUVudW0ge1xyXG4gIFwiQ09ORklHVVJBVE9SXCIgPSAxLFxyXG4gIFwiQ09NUE9TRVJcIiA9IDIsXHJcbiAgXCJSRVNVTFRcIiA9IDNcclxufSIsIjxkaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkV4dGVybmFsU1FMUmVzdWx0T3V0KCRldmVudCk7XCIgKm5nSWY9XCJRdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsICYmIHJlbGF0aW9uc0xvYWRlZCAmJiByZWxvYWRcIj48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmbG9hdGluZ3RhYmxlIGRyYWdnYWJsZVwiIGNka0RyYWcgKm5nSWY9XCJzaG93VGFibGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2UoKVwiPmNsb3NlPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlKClcIj5kZWxldGU8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPjxtYXQtaWNvbj5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3RcIj5TZWxlemlvbmEgaWwgdmFsb3JlIGRhIHJlZ2lzdHJhcmUuPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiBtdWx0aXNlbGVjdFBoYXNlID09IDFcIj5TZWxlemlvbmEgdW5hIGNvbG9ubmE8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMiAmJiBzZWxlY3RlZENvbHVtbiAhPSBudWxsICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGxcIj5IYWkgc2VsZXppb25hdG86IDxiPnt7c2VsZWN0ZWRDb2x1bW4uc3BsaXQoXCJfX1wiKVsxXX19PC9iPi48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMlwiPlNlbGV6aW9uYSBhbG1lbm8gdW4gZWxlbWVudG8gcHJlc2VudGUgc290dG8gYWxsYSBjb2xvbm5hIHNlbGV6aW9uYXRhPC9zcGFuPiAgICAgICAgXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMiAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tY29uZmlybVwiIChjbGljayk9XCJjb25maXJtU2VsZWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiA+Y2hlY2s8L21hdC1pY29uPiBDb25mZXJtYSBzZWxlemlvbmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiIFtuZ0NsYXNzXT1cInsndGFibGUtbm90Zm9yY2VkJzogZmllbGQuRmllbGRUeXBlICE9IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwsICd0YWJsZS1mb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgIT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCwgJ3RhYmxlLW11bHRpc2VsZWN0LW5vdGZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSA9PSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCwgJ3RhYmxlLW11bHRpc2VsZWN0LWZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSA9PSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbH1cIj5cclxuICAgICAgICA8dHI+PHRoICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGZpcnN0ID0gZmlyc3RcIiAoY2xpY2spPVwic2VsZWN0Q29sdW1uKGtleSlcIiBpZD1cImhlYWRjb2wte3trZXl9fVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZShyb3csIGtleSlcIiBpZD1cImNvbC17e2tleX19LWlkLXt7cm93WydJRCddfX1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gXHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPD0gMTAwXCIgW2lubmVySFRNTF09XCJyb3dba2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3Jvd1trZXldICE9IG51bGwgPyByb3dba2V5XS50b1N0cmluZygpLnN1YnN0cmluZygwLDEwMCkgOiAnJ319XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAuLi5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicm93W2tleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPCEtLSBcclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLW5vdGZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZU5vdEZvcmNlZChyb3dba2V5XSlcIj5cclxuICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIiAoY2xpY2spPVwic2VsZWN0VmFsdWVGb3JjZWQocm93KVwiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCI+XHJcbiAgICAgICAgICAgICAgICB7e3Jvd1trZXldICE9IG51bGwgPyByb3dba2V5XS50b1N0cmluZygpLnN1YnN0cmluZygwLDEwMCkgOiAnJ319XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAuLi5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICAgIC0tPlxyXG5cclxuPC9kaXY+XHJcblxyXG48c3BhbiAqbmdJZj1cInZhbHVlICE9IG51bGxcIj57e3ZhbHVlfX08L3NwYW4+XHJcblxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hcnJvdy1kb3duXCIgKGNsaWNrKT1cImFjdGl2YXRlVGFibGUoKVwiICpuZ0lmPVwibXVsdGlwbGVWYWx1ZXNUb0Nob29zZVwiPlxyXG4gICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYXJyb3ctZG93blwiIChjbGljayk9XCJyZWxvYWREYXRhKClcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uXCI+XHJcbiAgICA8bWF0LWljb24+bG9vcDwvbWF0LWljb24+XHJcbjwvYnV0dG9uPiJdfQ==
|
package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs
CHANGED
|
@@ -166,6 +166,7 @@ export class DynamicModuleFieldFixComponent {
|
|
|
166
166
|
//#region onSelectedValue
|
|
167
167
|
onSelectedValue(value) {
|
|
168
168
|
GlobalService.debugLog("onSelectedValue FROM DBGETTER", value);
|
|
169
|
+
console.log("onSelectedValue FROM DBGETTER", value, this.field, this.field.FieldType == FieldTypeEnum['Elenco generico']);
|
|
169
170
|
if (value[0] == "****CLOSE****") {
|
|
170
171
|
return;
|
|
171
172
|
}
|
|
@@ -364,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
364
365
|
type: ViewChildren,
|
|
365
366
|
args: ['listInnerFormRecords']
|
|
366
367
|
}] } });
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZHluYW1pYy1tb2R1bGUtZmllbGQtZml4L2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTBCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFhLGFBQWEsRUFBRSxrQkFBa0IsRUFBZSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3RILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV0RCxPQUFPLEVBQTZDLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBS3ZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFvQ3pDLFlBQ1UsTUFBaUIsRUFDakIsb0JBQTBDO1FBRDFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQXBDM0Ms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QUFJLENBQUM7UUFDN0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7NEhBM1dVLDhCQUE4QjtnSEFBOUIsOEJBQThCLDJ0QkN0QjNDLDAwUEE4SGM7NEZEeEdELDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSwwQkFBMEI7bUlBTTNCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csR0FBRztzQkFBWixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBZ0IrQyxxQkFBcUI7c0JBQTFFLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyQixhQUFhO3NCQUEzQyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ1Msb0JBQW9CO3NCQUF6RCxZQUFZO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgSUJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvaUJhc2VGaWVsZENvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQsIEZpZWxkVHlwZUVudW0sIERhdGFHZXR0ZXJUeXBlRW51bSwgQW5zd2VyU3R5bGUsIERhdGFHZXR0ZXJDYXJkaW5hbGl0eUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBMaXN0Rm9ybVJlY29yZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tcmVjb3Jkcy9saXN0LWZvcm0tcmVjb3JkL2xpc3QtZm9ybS1yZWNvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRHluQXR0YWNobWVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50JztcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpcmVUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkeW5hbWljLW1vZHVsZS1maWVsZC1maXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY01vZHVsZUZpZWxkRml4Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBJQmFzZUZpZWxkQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbnVsbDtcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55ID0ge307XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB1c2VySUQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGE7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcblxyXG4gIEBPdXRwdXQoKSByZWNvcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIGZpcmVUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4oKTtcclxuXHJcbiAgY29uZmlnTGlzdDogRHluYW1pY01vZHVsZUxpc3RDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZUxpc3RDb25maWcoKTtcclxuICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuICBEYXRhR2V0dGVyVHlwZUVudW0gPSBEYXRhR2V0dGVyVHlwZUVudW07XHJcbiAgZGlyZWN0bHlPcGVuVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkbWxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRlZERCR2V0dGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBEQkdldHRlckZpZWxkc0xvYWRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBhZ2dpdW5nZXJlL21vZGlmaWNhcmUgaSByZWNvcmQgZGkgdW5hIGZvcm0gZGkgZGV0dGFnbGlvXHJcbiAgc2VsZWN0ZWRJbm5lckZvcm06IEZvcm07XHJcbiAgc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQ6IFJlY29yZDtcclxuICBpbmRleElubmVyRm9ybVJlY29yZDogbnVtYmVyO1xyXG4gIG9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nSW5uZXJGb3JtUmVjb3JkJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nSW5uZXJGb3JtUmVjb3JkOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZmllbGRUZW1wbGF0ZVwiKSBmaWVsZFRlbXBsYXRlOiBRdWVyeUxpc3Q8RHluYW1pY01vZHVsZUZpZWxkRml4Q29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKCdsaXN0SW5uZXJGb3JtUmVjb3JkcycpIGxpc3RJbm5lckZvcm1SZWNvcmRzOiBRdWVyeUxpc3Q8TGlzdEZvcm1SZWNvcmRDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gdXBkYXRlRmllbGRcclxuICB1cGRhdGVGaWVsZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpZWxkVGVtcGxhdGUgJiYgdGhpcy5maWVsZFRlbXBsYXRlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWVsZFRlbXBsYXRlLmZvckVhY2goKGYpID0+IHsgaWYgKGYgIT0gbnVsbCAmJiB0eXBlb2YgZi51cGRhdGVGaWVsZCA9PT0gJ2Z1bmN0aW9uJykgeyBmLnVwZGF0ZUZpZWxkKCk7IH0gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiB1cGRhdGVGaWVsZFxyXG5cclxuICAvLyNyZWdpb24gbmdPbkluaXRcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiZHluYW1pYy1tb2R1bGUtZmllbGRcIiwgdGhpcy5maWVsZCk7XHJcblxyXG4gICAgdGhpcy5jb25maWdMaXN0LnZhbHVlcyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV1cclxuICAgIHRoaXMuY29uZmlnTGlzdC5zaG93VGl0bGUgPSB0cnVlO1xyXG4gICAgdGhpcy5jb25maWdMaXN0LmRlZmF1bHRMaXN0QWN0aW9ucyA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCgpXHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IG51bGwgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIgPSBKU09OLnBhcnNlKGF0b2IodGhpcy5maWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSl7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydEYSBtb2R1bG8gZGluYW1pY28nXSkge1xyXG4gICAgICAgIHRoaXMubWFuYWdlRE1HZXR0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kbWxvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBuZ09uSW5pdFxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB2YWxvcmUgZGkgb2duaSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byByZWNvcmQuXHJcbiAgICogU2VydmUgYWQgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGkgdHV0dGkgaSBjYW1waSBjaGUgaGFubm8gdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgb25SZWNvcmRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB1bmEgSW5uZXJGb3JtIGEgcGFydGlyZSBkYWwgRmllbGQgY2hlIGxhIHJhcHByZXNlbnRhLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBhIHBhcnRpcmUgZGFsIHF1YWxlIHNpIHZ1b2xlIHJlY3VwZXJhcmUgbGEgSW5uZXJGb3JtLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIG9nZ2V0dG8gZGkgdGlwbyBGb3JtLlxyXG4gICAqL1xyXG4gIGdldElubmVyRm9ybUZyb21GaWVsZChmaWVsZDogQmFzZUZpZWxkKTogRm9ybSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLklubmVyRm9ybXMgJiYgdGhpcy5mb3JtLklubmVyRm9ybXMuZmluZChmID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoZiA9PiBmLk5hbWUgPT0gZmllbGQuTGFiZWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gb25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZFxyXG4gIC8qKlxyXG4gKiBNZXRvZG8gcGVyIGFwcmlyZSB1biBkaWFsb2cgaW4gY3VpIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZS92aXN1YWxpenphcmUgdW4gcmVjb3JkIGFwcGFydGVuZW50ZVxyXG4gKiBhIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICogQHBhcmFtIHJlY29yZCBFdmVudG8gZGkgb3V0cHV0IGRlbCBjb21wb25lbnRlIGxpc3QtZm9ybS1yZWNvcmQsIGNvbnRpZW5lIGlsIHJlY29yZCBzZWxlemlvbmF0byBlIHVuIGJvb2xlbm8gY2hlIGluZGljYSBcclxuICogc2UgbCd1dGVudGUgdnVvbGUgbW9kaWZpY2FyZSBvIHZpc3VhbGl6emFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvLlxyXG4gKiBAcGFyYW0gaW5uZXJGb3JtIENvbnRpZW5lIGxhIEZvcm0gZGkgZGV0dGFnbGlvIGRhbGxhIHF1YWxlIMOoIHN0YXRvIHJpY2hpZXN0byBpbCByZWNvcmQuXHJcbiAqL1xyXG4gIG9uQWRkVmlld0VkaXRJbm5lckZvcm1SZWNvcmQocmVjb3JkOiB7IHJlY29yZDogUmVjb3JkLCBvbmx5VmlldzogYm9vbGVhbiB9LCBmaWVsZDogQmFzZUZpZWxkKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtID0gdGhpcy5nZXRJbm5lckZvcm1Gcm9tRmllbGQoZmllbGQpO1xyXG4gICAgaWYgKHJlY29yZCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQgPSBuZXcgUmVjb3JkKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPSBudWxsO1xyXG4gICAgICB0aGlzLm9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZWNvcmQucmVjb3JkKSk7XHJcbiAgICAgIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPSB0aGlzLnJlY29yZFtmaWVsZC5OYW1lXS5pbmRleE9mKHJlY29yZCk7XHJcbiAgICAgIHRoaXMub25seVZpZXdJbm5lckZvcm1SZWNvcmQgPSByZWNvcmQub25seVZpZXc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnNzUlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvbkFkZFZpZXdFZGl0SW5uZXJGb3JtUmVjb3JkXHJcblxyXG4gIC8vI3JlZ2lvbiBvblNhdmVJbm5lckZvcm1SZWNvcmRcclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgc2FsdmF0YWdnaW8gbyBhbGxhIGNoaXVzdXJhIGRlbCBkaWFsb2cgZGkgYWdnaXVudGEvbW9kaWZpY2EvdmlzdWFsaXp6YXppb25lXHJcbiAgICogZGkgdW4gcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICAgKiBAcGFyYW0gcmVjb3JkIE9nZ2V0dG8gcmVzdGl0dWl0byBkYWwgY29tcG9uZW50ZSBhZGQtZm9ybS1maWVsZCAocXVlc3RvIHF1aSkgY29udGVuZW50ZSBpbCBSZWNvcmQgXHJcbiAgICogYWdnaW9ybmF0byBkYWxsJ3V0ZW50ZS4gU2UgbnVsbCBhbGxvcmEgbCd1dGVudGUgbm9uIGhhIG1vZGlmaWNhdG8gbnVsbGEgZSBoYSBjaGl1c28gaWwgZGlhbG9nLlxyXG4gICAqL1xyXG4gIG9uU2F2ZUlubmVyRm9ybVJlY29yZChyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgaWYgKHJlY29yZCAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGFycmF5TmFtZTogc3RyaW5nID0gdGhpcy5zZWxlY3RlZElubmVyRm9ybS5OYW1lLnNwbGl0KCcgJykuam9pbignXycpO1xyXG4gICAgICBpZiAodGhpcy5pbmRleElubmVyRm9ybVJlY29yZCAhPSBudWxsICYmIHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV1bdGhpcy5pbmRleElubmVyRm9ybVJlY29yZF0gPSByZWNvcmQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29yZFthcnJheU5hbWVdKSB7XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV0ucHVzaChyZWNvcmQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZi5jbG9zZSgpO1xyXG5cclxuICAgIC8vIFJpY2FyaWNvIGxhIHRhYmVsbGEgZGVpIHJlY29yZCBwZXIgdmlzdWFsaXp6YXJlIGxlIG1vZGlmaWNoZSBmYXR0ZSBkYWxsJ3V0ZW50ZS5cclxuICAgIGlmICh0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzICYmIHRoaXMubGlzdElubmVyRm9ybVJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzLmZvckVhY2gobGlzdCA9PiB7XHJcbiAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC50YWJsZVJlY29yZHMpIHtcclxuICAgICAgICAgIGxpc3QudGFibGVSZWNvcmRzLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvblNhdmVJbm5lckZvcm1SZWNvcmRcclxuXHJcbiAgLy8gUGFzc28gbCdpbW1hZ2luZSBkaXNlZ25hdGEgYWwgbGl2ZWxsbyBzdXBlcmlvcmVcclxuICBvbkltYWdlRHJhdyhldmVudDogRHluQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGV2ZW50O1xyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvLyBQYXNzbyBsJ2ltbWFnaW5lIGRpc2VnbmF0YSBhbCBsaXZlbGxvIHN1cGVyaW9yZVxyXG4gIG9uSW1hZ2VNYXJrKGV2ZW50OiBEeW5BdHRhY2htZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZXZlbnQ7XHJcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxDb21wb25lbnRPdXQoZXY6IGV2ZW50T3V0KSB7XHJcbiAgICB0aGlzLm91dC5lbWl0KGV2KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvblNlbGVjdGVkVmFsdWVcclxuICBvblNlbGVjdGVkVmFsdWUodmFsdWU6IGFueSkge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvblNlbGVjdGVkVmFsdWUgRlJPTSBEQkdFVFRFUlwiLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlWzBdID09IFwiKioqKkNMT1NFKioqKlwiKSB7IHJldHVybjsgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBkaSB0ZXN0byddKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZVswXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10pIHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9uU2VsZWN0ZWRWYWx1ZSBGUk9NIERCR0VUVEVSIEVMRU5DTyBHRU5FUklDT1wiLCB2YWx1ZSk7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZSAhPSBudWxsID8gdmFsdWVbMF0gOiBbXTtcclxuICAgICAgdGhpcy5EQkdldHRlckZpZWxkc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5EQkdldHRlckZpZWxkc0xvYWRlZCA9IHRydWU7IH0sIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uU2VsZWN0ZWRWYWx1ZVxyXG5cclxuICAvLyNyZWdpb24gbWFuYWdlRE1HZXR0ZXJcclxuICAvLyBjaSBlbnRybyBzZSBpbCBjYW1wbyBoYSBsYSBtb2RhbGl0w6AgZGkgcmVjdXBlcm8gZGVpIGRhdGkgXCJkYSBtb2R1bG8gZGluYW1pY29cIiBcclxuICAvLyBjaGllZG8gYWwgc2VydmVyIGkgdmFsb3JpIGVkIGltcG9zdG8gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVxyXG4gIC8qKlxyXG4gICAqIEdlc3Rpc2NlIGlsIHJlY3VwZXJvIGRlaSBkYXRpIGRpbmFtaWNpIChEeW5hbWljIE1vZHVsZSBHZXR0ZXIpIGluIGJhc2UgYWxsYSBtb2RhbGl0w6AuXHJcbiAgICovXHJcbiAgbWFuYWdlRE1HZXR0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9PT0gRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bVsnQ09OVEVTVFVBTElaWkFUQSBBTExBIFJJU1BPU1RBJ10pIHtcclxuICAgICAgLy8gU2UgbGEgbW9kYWxpdMOgIMOoIFwiY29udGVzdHVhbGl6emF0YSBhbGxhIHJpc3Bvc3RhXCJcclxuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUNvbnRleHR1YWxpemVkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBbHRyaW1lbnRpIGdlc3RpYW1vIGxlIGFsdHJlIG1vZGFsaXTDoFxyXG4gICAgICB0aGlzLmhhbmRsZU5vbkNvbnRleHR1YWxpemVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc2VndWUgbGEgY2hpYW1hdGEgc2UgbGEgbW9kYWxpdMOgIMOoIFwiY29udGVzdHVhbGl6emF0YSBhbGxhIHJpc3Bvc3RhXCIsXHJcbiAgICogdXRpbGl6emFuZG8gbCdJRCBkZWxsYSByaXNwb3N0YSBvcmlnaW5hcmlhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2VDb250ZXh0dWFsaXplZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zPy5hZGRpdGlvbmFsUGFyYW1zPy5bXCJPcmlnaW5BbnN3ZXJJRFwiXSkge1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBbe1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1tcIk9yaWdpbkFuc3dlcklEXCJdLFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9XTtcclxuICBcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gUGFyc2luZyBkZWxsYSByaXNwb3N0YSBlIGFnZ2lvcm5hbWVudG8gZGVsIHJlY29yZFxyXG4gICAgICAgICAgY29uc3QgYW5zd2VyT2JqID0gSlNPTi5wYXJzZShyZXMuU2VyaWFsaXplZFZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLnNldEZpZWxkVmFsdWUoYW5zd2VyT2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ29udGVzdG8gbm9uIHRyb3ZhdG9cIik7XHJcbiAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlzY2UgdHV0dGUgbGUgYWx0cmUgbW9kYWxpdMOgLCBpbmNsdXNhIGxhIGNvbnRlc3R1YWxpenphemlvbmUgcGVyIElEIGVzdGVybm8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVOb25Db250ZXh0dWFsaXplZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlc3R1YWxpemF0aW9uUGFyYW0gPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uPy5lbnRpdHlETUFkZGl0aW9uYWxQYXJhbSB8fCBudWxsO1xyXG4gICAgY29uc3QgY29udGVzdHVhbGl6YXRpb25JZCA9IHRoaXMuY29uZmlndXJhdGlvbnM/LmFkZGl0aW9uYWxQYXJhbXM/Lltjb250ZXN0dWFsaXphdGlvblBhcmFtXSB8fCBudWxsO1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5idWlsZEJhc2VQYXJhbXMoY29udGVzdHVhbGl6YXRpb25QYXJhbSwgY29udGVzdHVhbGl6YXRpb25JZCk7XHJcbiAgXHJcbiAgICBpZiAoY29udGVzdHVhbGl6YXRpb25JZCkge1xyXG4gICAgICAvLyBzZSBobyBjb250ZXN0dWFsaXp6YXppb25lIHRyYW1pdGUgcGFyYW1ldHJpXHJcbiAgICAgIHRoaXMuZmV0Y2hEYXRhV2l0aENvbnRleHR1YWxpemF0aW9uKHBhcmFtcywgY29udGVzdHVhbGl6YXRpb25QYXJhbSwgY29udGVzdHVhbGl6YXRpb25JZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZldGNoRGF0YVdpdGhvdXRDb250ZXh0dWFsaXphdGlvbihwYXJhbXMsIGNvbnRlc3R1YWxpemF0aW9uUGFyYW0sIGNvbnRlc3R1YWxpemF0aW9uSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29zdHJ1aXNjZSBpIHBhcmFtZXRyaSByaWNoaWVzdGkgZGFsbGEgY2hpYW1hdGEgQVBJIGluIGJhc2UgYWwgY29udGVzdG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEJhc2VQYXJhbXMocGFyYW06IHN0cmluZywgaWQ6IGFueSk6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4ge1xyXG4gICAgY29uc3QgYmFzZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9IFtcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiRm9ybUNvZGVcIiwgUGFyYW1WYWx1ZTogdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiVXNlcklEXCIsIFBhcmFtVmFsdWU6IHRoaXMudXNlcklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJPcmdhSURcIiwgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk9yZ2FJRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwibW9kZVwiLCBQYXJhbVZhbHVlOiAyLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9LFxyXG4gICAgXTtcclxuICBcclxuICAgIC8vIFNlIGRpc3BvbmliaWxlLCBhZ2dpdW5nZSBwYXJhbWV0cmkgcGVyIGxhIGNvbnRlc3R1YWxpenphemlvbmVcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBiYXNlUGFyYW1zLnB1c2goeyBQYXJhbU5hbWU6IFwiQ29udGVzdHVhbGl6YXRpb25QYXJhbVwiLCBQYXJhbVZhbHVlOiBwYXJhbSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSk7XHJcbiAgICAgIGJhc2VQYXJhbXMucHVzaCh7IFBhcmFtTmFtZTogXCJDb250ZXN0dWFsaXphdGlvbklkXCIsIFBhcmFtVmFsdWU6IGlkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9KTtcclxuICAgIH1cclxuICBcclxuICAgIHJldHVybiBiYXNlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wb3N0YSBpbCB2YWxvcmUgZGVsIGNhbXBvIG5lbCByZWNvcmQgY29ycmVudGUsIHVzYW5kbyBsYSBjb2xvbm5hIHNwZWNpZmljYXRhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RmllbGRWYWx1ZShhbnN3ZXJPYmo6IGFueSkge1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGFuc3dlck9ialt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlXSA7XHJcbiAgICB0aGlzLmRtbG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVzZWd1ZSBsYSBjaGlhbWF0YSBBUEkgaW4gbW9kYWxpdMOgIGNvbnRlc3R1YWxpenphdGEgZSBhc3NlZ25hIGlsIHJpc3VsdGF0by5cclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRGF0YVdpdGhDb250ZXh0dWFsaXphdGlvbihwYXJhbXMsIHBhcmFtTmFtZSwgcGFyYW1JZCkge1xyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0V2l0aENvbnRleHR1YWxpemF0aW9uQnlGb3JtQ29kZUVuZFBvaW50LFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHJlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLnBpY2tBbnN3ZXIocmVzKTtcclxuICAgICAgICBpZiAoIWFuc3dlcikgcmV0dXJuO1xyXG4gIFxyXG4gICAgICAgIGNvbnN0IGFuc3dlck9iaiA9IEpTT04ucGFyc2UoYW5zd2VyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgIHRoaXMuc2V0RmllbGRWYWx1ZShhbnN3ZXJPYmopO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7IH1cclxuICAgICk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEVzZWd1ZSBsYSBjaGlhbWF0YSBBUEkgaW4gbW9kYWxpdMOgIE5PTiBjb250ZXN0dWFsaXp6YXRhIGUgYXNzZWduYSBpbCByaXN1bHRhdG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaERhdGFXaXRob3V0Q29udGV4dHVhbGl6YXRpb24ocGFyYW1zLCBwYXJhbU5hbWUsIHBhcmFtSWQpIHtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUNvZGVFbmRQb2ludCxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuQW5zd2Vycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBsZXQgYW5zd2VycyA9IHJlcy5BbnN3ZXJzO1xyXG4gICAgICAgIGlmIChwYXJhbUlkKSB7XHJcbiAgICAgICAgICBhbnN3ZXJzID0gYW5zd2Vycy5maWx0ZXIoKGEsIGkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFBhcmFtcyA9IEpTT04ucGFyc2UocmVzLkFkZGl0aW9uYWxQYXJhbXNbaV0pO1xyXG4gICAgICAgICAgICByZXR1cm4gYWRkaXRpb25hbFBhcmFtc1twYXJhbU5hbWVdID09IHBhcmFtSWQ7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY29uc3QgYW5zd2VyU3RyID0gdGhpcy5waWNrQW5zd2VyKGFuc3dlcnMpPy5BbnN3ZXI7XHJcbiAgICAgICAgaWYgKCFhbnN3ZXJTdHIpIHJldHVybjtcclxuICBcclxuICAgICAgICBjb25zdCBhbnN3ZXJPYmogPSBKU09OLnBhcnNlKGFuc3dlclN0cik7XHJcbiAgICAgICAgdGhpcy5zZXRGaWVsZFZhbHVlKGFuc3dlck9iaik7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHsgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGV6aW9uYSBsYSByaXNwb3N0YSBjb3JyZXR0YSB0cmEgbGUgZGlzcG9uaWJpbGksIGluIGJhc2UgYWxsYSBjYXJkaW5hbGl0w6AuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwaWNrQW5zd2VyKGFuc3dlcnM6IGFueVtdKTogYW55IHtcclxuICAgIGlmIChhbnN3ZXJzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGFuc3dlcnNbMF07XHJcblxyXG4gICAgLy8gU2Ugw6ggcmljaGllc3RhIGxhIHJpc3Bvc3RhIFwicGnDuSByZWNlbnRlXCIsIHByZW5kaWFtbyBsYSBwcmltYSAob3JkaW5hbWVudG8gZ2nDoCBnZXN0aXRvIGEgbW9udGUpXHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9PSBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtWydQSVUgUkVDRU5URSddKSB7XHJcbiAgICAgIHJldHVybiBhbnN3ZXJzWzBdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBEZWZhdWx0OiByZXN0aXR1aWFtbyBsYSBwcmltYVxyXG4gICAgcmV0dXJuIGFuc3dlcnNbMF07XHJcbiAgfVxyXG4gIFxyXG4gIC8vI2VuZHJlZ2lvbiBtYW5hZ2VETUdldHRlclxyXG5cclxuICAvLyNyZWdpb24gb25GaXJlVHJpZ2dlclxyXG4gIG9uRmlyZVRyaWdnZXIoZXY6IEZpcmVUcmlnZ2VyKSB7XHJcbiAgICBldi5mb3JtID0gdGhpcy5mb3JtO1xyXG4gICAgZXYudXNlclBhdGllbnQgPSB0aGlzLnVzZXJJRC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5maXJlVHJpZ2dlci5lbWl0KGV2KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRmlyZVRyaWdnZXJcclxuXHJcbiAgLy8jcmVnaW9uIHJlbG9hZERCR2V0dGVyXHJcbiAgcmVsb2FkREJHZXR0ZXIoKSB7XHJcbiAgICB0aGlzLmxvYWRlZERCR2V0dGVyID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkZWREQkdldHRlciA9IHRydWU7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHJlbG9hZERCR2V0dGVyXHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnTWFudWFsZSddIHx8IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydGb3JtdWxhJ11cIj4gXHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkc1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCByZWNvcmQ6IHJlY29yZCwgZm9yY2VkVmFsdWVzOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ11cIj4gXHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF0YWdldHRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRCR2V0dGVyRmllbGRzTG9hZGVkXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRzREJHVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIHJlY29yZDogcmVjb3JkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRiZ2V0dGVyICBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGVkREJHZXR0ZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYmdldHRlclwiXHJcbiAgICAgICAgICAgICAgICBbY29uZmlndXJhdGlvbnNdPVwiY29uZmlndXJhdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhZmllbGQuSW5MaXN0Vmlld1wiIFxyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgWyhyZWNvcmQpXT1cInJlY29yZFwiIFxyXG4gICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCIgXHJcbiAgICAgICAgICAgICAgICBbRGlyZWN0bHlPcGVuVGFibGVdPVwiZGlyZWN0bHlPcGVuVGFibGVcIiBcclxuICAgICAgICAgICAgICAgIFtRdWVyeUVkaXRvckNvbXBvbmVudF09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIFxyXG4gICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cImluQ29uZmlnXCIgXHJcbiAgICAgICAgICAgICAgICAob3V0KT1cIm9uRXh0ZXJuYWxDb21wb25lbnRPdXQoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgKGRvUmVsb2FkKT1cInJlbG9hZERCR2V0dGVyKClcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwib25TZWxlY3RlZFZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kYmdldHRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ11cIj4gXHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImRtbG9hZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkc1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCByZWNvcmQ6IHJlY29yZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPHRleHRhcmVhLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0FyZWEgZGkgdGVzdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHRhcmVhLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxhY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUgYXppb25lJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGZpcmVUcmlnZ2VyKT1cIm9uRmlyZVRyaWdnZXIoJGV2ZW50KVwiPlxyXG4gICAgPC9hY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxib29sZWFuLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9ib29sZWFuLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkYXRlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvZGF0ZS1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bnVtZXJpYy1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBudW1lcmljbyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvbnVtZXJpYy1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxpbWFnZS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydJbW1hZ2luZSddXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbaW5Db25maWddPVwiaW5Db25maWdcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIiAoaW1hZ2VEcmF3KT1cIm9uSW1hZ2VEcmF3KCRldmVudClcIj5cclxuICAgIDwvaW1hZ2UtZmllbGQtdGVtcGxhdGU+IFxyXG5cclxuICAgIDxpbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXVwiIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW2luQ29uZmlnXT1cImluQ29uZmlnXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlTWFyayk9XCJvbkltYWdlTWFyaygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZT4gXHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBpbW1hZ2luaSddXCJcclxuICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIlxyXG4gICAgPlxyXG4gICAgPC9pbWFnZS1maWVsZC1zZWxlY3Rvci10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGFiZWwtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRXRpY2hldHRhJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9sYWJlbC1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8IS0tIEZPUk0gREkgREVUVEFHTElPIChMQVNDSUFSRSBJTiBGT05ETykgLS0+XHJcbiAgICA8bGlzdC1mb3JtLXJlY29yZCAjbGlzdElubmVyRm9ybVJlY29yZHMgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRm9ybSBkaSBkZXR0YWdsaW8nXVwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkKVwiIFtjb25maWd1cmF0aW9uc109XCJjb25maWdMaXN0XCJcclxuICAgICAgICAob25BZGRWaWV3RWRpdFJlY29yZCk9XCJvbkFkZFZpZXdFZGl0SW5uZXJGb3JtUmVjb3JkKCRldmVudCwgZmllbGQpXCI+XHJcbiAgICA8L2xpc3QtZm9ybS1yZWNvcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc0RCR1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtdmFsdWUtZGJnLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9saXN0LXZhbHVlLWRiZy10ZW1wbGF0ZT5cclxuICAgIFxyXG4gICAgXHJcbiAgICA8IS0tIE5vbiBnZXN0aXRpIChmdW56aW9uYW5vIGEgY3VsbykgLS0+XHJcblxyXG4gICAgPGRhdGUtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRGF0YSBlL28gb3JhJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9kYXRlLWZpZWxkLXRlbXBsYXRlPiAgXHJcbiAgICBcclxuICAgIDx0ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydBcmVhIGRpIHRlc3RvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT4gICAgXHJcblxyXG4gICAgPGJvb2xlYW4tZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2Jvb2xlYW4tZmllbGQtdGVtcGxhdGU+ICAgIFxyXG5cclxuICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9udW1lcmljLWZpZWxkLXRlbXBsYXRlPiAgICBcclxuXHJcblxyXG5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZHluYW1pYy1tb2R1bGUtZmllbGQtZml4L2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTBCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFhLGFBQWEsRUFBRSxrQkFBa0IsRUFBZSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3RILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV0RCxPQUFPLEVBQTZDLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBS3ZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFvQ3pDLFlBQ1UsTUFBaUIsRUFDakIsb0JBQTBDO1FBRDFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQXBDM0Ms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QixDQUFDO0lBQ0QsMEJBQTBCO0lBRTFCLHdCQUF3QjtJQUN4QixjQUFjO1FBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7OzRIQTVXVSw4QkFBOEI7Z0hBQTlCLDhCQUE4QiwydEJDdEIzQywwMFBBOEhjOzRGRHhHRCw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsMEJBQTBCO21JQU0zQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLEdBQUc7c0JBQVosTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQWdCK0MscUJBQXFCO3NCQUExRSxTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHckIsYUFBYTtzQkFBM0MsWUFBWTt1QkFBQyxlQUFlO2dCQUNTLG9CQUFvQjtzQkFBekQsWUFBWTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IElCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2lCYXNlRmllbGRDb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtLCBEYXRhR2V0dGVyVHlwZUVudW0sIEFuc3dlclN0eWxlLCBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Q29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgTGlzdEZvcm1SZWNvcmRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXJlY29yZHMvbGlzdC1mb3JtLXJlY29yZC9saXN0LWZvcm0tcmVjb3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IER5bkF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluQXR0YWNobWVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaXJlVHJpZ2dlciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1tb2R1bGUtZmllbGQtZml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyA9IG51bGw7XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgZmllbGQ6IEJhc2VGaWVsZDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIGZvcm11bGFPYmplY3Q6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlcklEOiBudW1iZXI7XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBmaXJlVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+KCk7XHJcblxyXG4gIGNvbmZpZ0xpc3Q6IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnID0gbmV3IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnKCk7XHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcbiAgRGF0YUdldHRlclR5cGVFbnVtID0gRGF0YUdldHRlclR5cGVFbnVtO1xyXG4gIGRpcmVjdGx5T3BlblRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZG1sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2FkZWREQkdldHRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgREJHZXR0ZXJGaWVsZHNMb2FkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgYWdnaXVuZ2VyZS9tb2RpZmljYXJlIGkgcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpb1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtOiBGb3JtO1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkOiBSZWNvcmQ7XHJcbiAgaW5kZXhJbm5lckZvcm1SZWNvcmQ6IG51bWJlcjtcclxuICBvbmx5Vmlld0lubmVyRm9ybVJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0lubmVyRm9ybVJlY29yZCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0lubmVyRm9ybVJlY29yZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcImZpZWxkVGVtcGxhdGVcIikgZmllbGRUZW1wbGF0ZTogUXVlcnlMaXN0PER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZHJlbignbGlzdElubmVyRm9ybVJlY29yZHMnKSBsaXN0SW5uZXJGb3JtUmVjb3JkczogUXVlcnlMaXN0PExpc3RGb3JtUmVjb3JkQ29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIHVwZGF0ZUZpZWxkXHJcbiAgdXBkYXRlRmllbGQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWVsZFRlbXBsYXRlICYmIHRoaXMuZmllbGRUZW1wbGF0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmllbGRUZW1wbGF0ZS5mb3JFYWNoKChmKSA9PiB7IGlmIChmICE9IG51bGwgJiYgdHlwZW9mIGYudXBkYXRlRmllbGQgPT09ICdmdW5jdGlvbicpIHsgZi51cGRhdGVGaWVsZCgpOyB9IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gdXBkYXRlRmllbGRcclxuXHJcbiAgLy8jcmVnaW9uIG5nT25Jbml0XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImR5bmFtaWMtbW9kdWxlLWZpZWxkXCIsIHRoaXMuZmllbGQpO1xyXG5cclxuICAgIHRoaXMuY29uZmlnTGlzdC52YWx1ZXMgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdXHJcbiAgICB0aGlzLmNvbmZpZ0xpc3Quc2hvd1RpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuY29uZmlnTGlzdC5kZWZhdWx0TGlzdEFjdGlvbnMgPSBuZXcgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQoKVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IFwiXCIpIHtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyID0gSlNPTi5wYXJzZShhdG9iKHRoaXMuZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0pe1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyICE9IG51bGwgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ10pIHtcclxuICAgICAgICB0aGlzLm1hbmFnZURNR2V0dGVyKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gbmdPbkluaXRcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdmFsb3JlIGRpIG9nbmkgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gcmVjb3JkLlxyXG4gICAqIFNlcnZlIGFkIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRpIHR1dHRpIGkgY2FtcGkgY2hlIGhhbm5vIHVuYSBmb3JtdWxhLlxyXG4gICAqL1xyXG4gIG9uUmVjb3JkQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdW5hIElubmVyRm9ybSBhIHBhcnRpcmUgZGFsIEZpZWxkIGNoZSBsYSByYXBwcmVzZW50YS5cclxuICAgKiBAcGFyYW0gZmllbGQgQ2FtcG8gYSBwYXJ0aXJlIGRhbCBxdWFsZSBzaSB2dW9sZSByZWN1cGVyYXJlIGxhIElubmVyRm9ybS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBvZ2dldHRvIGRpIHRpcG8gRm9ybS5cclxuICAgKi9cclxuICBnZXRJbm5lckZvcm1Gcm9tRmllbGQoZmllbGQ6IEJhc2VGaWVsZCk6IEZvcm0ge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Jbm5lckZvcm1zICYmIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoZiA9PiBmLk5hbWUgPT0gZmllbGQuTGFiZWwpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKGYgPT4gZi5OYW1lID09IGZpZWxkLkxhYmVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIG9uQWRkVmlld0VkaXRJbm5lckZvcm1SZWNvcmRcclxuICAvKipcclxuICogTWV0b2RvIHBlciBhcHJpcmUgdW4gZGlhbG9nIGluIGN1aSBhZ2dpdW5nZXJlL21vZGlmaWNhcmUvdmlzdWFsaXp6YXJlIHVuIHJlY29yZCBhcHBhcnRlbmVudGVcclxuICogYSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAqIEBwYXJhbSByZWNvcmQgRXZlbnRvIGRpIG91dHB1dCBkZWwgY29tcG9uZW50ZSBsaXN0LWZvcm0tcmVjb3JkLCBjb250aWVuZSBpbCByZWNvcmQgc2VsZXppb25hdG8gZSB1biBib29sZW5vIGNoZSBpbmRpY2EgXHJcbiAqIHNlIGwndXRlbnRlIHZ1b2xlIG1vZGlmaWNhcmUgbyB2aXN1YWxpenphcmUgbCdlbGVtZW50byBzZWxlemlvbmF0by5cclxuICogQHBhcmFtIGlubmVyRm9ybSBDb250aWVuZSBsYSBGb3JtIGRpIGRldHRhZ2xpbyBkYWxsYSBxdWFsZSDDqCBzdGF0byByaWNoaWVzdG8gaWwgcmVjb3JkLlxyXG4gKi9cclxuICBvbkFkZFZpZXdFZGl0SW5uZXJGb3JtUmVjb3JkKHJlY29yZDogeyByZWNvcmQ6IFJlY29yZCwgb25seVZpZXc6IGJvb2xlYW4gfSwgZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybSA9IHRoaXMuZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkKTtcclxuICAgIGlmIChyZWNvcmQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgICB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID0gbnVsbDtcclxuICAgICAgdGhpcy5vbmx5Vmlld0lubmVyRm9ybVJlY29yZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybVJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVjb3JkLnJlY29yZCkpO1xyXG4gICAgICB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID0gdGhpcy5yZWNvcmRbZmllbGQuTmFtZV0uaW5kZXhPZihyZWNvcmQpO1xyXG4gICAgICB0aGlzLm9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkID0gcmVjb3JkLm9ubHlWaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0lubmVyRm9ybVJlY29yZCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzc1JSdcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZFxyXG5cclxuICAvLyNyZWdpb24gb25TYXZlSW5uZXJGb3JtUmVjb3JkXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIHNhbHZhdGFnZ2lvIG8gYWxsYSBjaGl1c3VyYSBkZWwgZGlhbG9nIGRpIGFnZ2l1bnRhL21vZGlmaWNhL3Zpc3VhbGl6emF6aW9uZVxyXG4gICAqIGRpIHVuIHJlY29yZCBkaSB1bmEgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAgICogQHBhcmFtIHJlY29yZCBPZ2dldHRvIHJlc3RpdHVpdG8gZGFsIGNvbXBvbmVudGUgYWRkLWZvcm0tZmllbGQgKHF1ZXN0byBxdWkpIGNvbnRlbmVudGUgaWwgUmVjb3JkIFxyXG4gICAqIGFnZ2lvcm5hdG8gZGFsbCd1dGVudGUuIFNlIG51bGwgYWxsb3JhIGwndXRlbnRlIG5vbiBoYSBtb2RpZmljYXRvIG51bGxhIGUgaGEgY2hpdXNvIGlsIGRpYWxvZy5cclxuICAgKi9cclxuICBvblNhdmVJbm5lckZvcm1SZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIGlmIChyZWNvcmQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBhcnJheU5hbWU6IHN0cmluZyA9IHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0uTmFtZS5zcGxpdCgnICcpLmpvaW4oJ18nKTtcclxuICAgICAgaWYgKHRoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmQgIT0gbnVsbCAmJiB0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkID49IDApIHtcclxuICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdW3RoaXMuaW5kZXhJbm5lckZvcm1SZWNvcmRdID0gcmVjb3JkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSkge1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdLnB1c2gocmVjb3JkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmRSZWYuY2xvc2UoKTtcclxuXHJcbiAgICAvLyBSaWNhcmljbyBsYSB0YWJlbGxhIGRlaSByZWNvcmQgcGVyIHZpc3VhbGl6emFyZSBsZSBtb2RpZmljaGUgZmF0dGUgZGFsbCd1dGVudGUuXHJcbiAgICBpZiAodGhpcy5saXN0SW5uZXJGb3JtUmVjb3JkcyAmJiB0aGlzLmxpc3RJbm5lckZvcm1SZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5saXN0SW5uZXJGb3JtUmVjb3Jkcy5mb3JFYWNoKGxpc3QgPT4ge1xyXG4gICAgICAgIGlmIChsaXN0ICYmIGxpc3QudGFibGVSZWNvcmRzKSB7XHJcbiAgICAgICAgICBsaXN0LnRhYmxlUmVjb3Jkcy5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25TYXZlSW5uZXJGb3JtUmVjb3JkXHJcblxyXG4gIC8vIFBhc3NvIGwnaW1tYWdpbmUgZGlzZWduYXRhIGFsIGxpdmVsbG8gc3VwZXJpb3JlXHJcbiAgb25JbWFnZURyYXcoZXZlbnQ6IER5bkF0dGFjaG1lbnQpIHtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBldmVudDtcclxuICAgIHRoaXMucmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgLy8gUGFzc28gbCdpbW1hZ2luZSBkaXNlZ25hdGEgYWwgbGl2ZWxsbyBzdXBlcmlvcmVcclxuICBvbkltYWdlTWFyayhldmVudDogRHluQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGV2ZW50O1xyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgfVxyXG4gIFxyXG4gIG9uRXh0ZXJuYWxDb21wb25lbnRPdXQoZXY6IGV2ZW50T3V0KSB7XHJcbiAgICB0aGlzLm91dC5lbWl0KGV2KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvblNlbGVjdGVkVmFsdWVcclxuICBvblNlbGVjdGVkVmFsdWUodmFsdWU6IGFueSkge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvblNlbGVjdGVkVmFsdWUgRlJPTSBEQkdFVFRFUlwiLCB2YWx1ZSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uU2VsZWN0ZWRWYWx1ZSBGUk9NIERCR0VUVEVSXCIsIHZhbHVlLCB0aGlzLmZpZWxkLCB0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSk7XHJcblxyXG4gICAgaWYgKHZhbHVlWzBdID09IFwiKioqKkNMT1NFKioqKlwiKSB7IHJldHVybjsgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBkaSB0ZXN0byddKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZVswXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10pIHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9uU2VsZWN0ZWRWYWx1ZSBGUk9NIERCR0VUVEVSIEVMRU5DTyBHRU5FUklDT1wiLCB2YWx1ZSk7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZSAhPSBudWxsID8gdmFsdWVbMF0gOiBbXTtcclxuICAgICAgdGhpcy5EQkdldHRlckZpZWxkc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5EQkdldHRlckZpZWxkc0xvYWRlZCA9IHRydWU7IH0sIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uU2VsZWN0ZWRWYWx1ZVxyXG5cclxuICAvLyNyZWdpb24gbWFuYWdlRE1HZXR0ZXJcclxuICAvLyBjaSBlbnRybyBzZSBpbCBjYW1wbyBoYSBsYSBtb2RhbGl0w6AgZGkgcmVjdXBlcm8gZGVpIGRhdGkgXCJkYSBtb2R1bG8gZGluYW1pY29cIiBcclxuICAvLyBjaGllZG8gYWwgc2VydmVyIGkgdmFsb3JpIGVkIGltcG9zdG8gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVxyXG4gIC8qKlxyXG4gICAqIEdlc3Rpc2NlIGlsIHJlY3VwZXJvIGRlaSBkYXRpIGRpbmFtaWNpIChEeW5hbWljIE1vZHVsZSBHZXR0ZXIpIGluIGJhc2UgYWxsYSBtb2RhbGl0w6AuXHJcbiAgICovXHJcbiAgbWFuYWdlRE1HZXR0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9PT0gRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bVsnQ09OVEVTVFVBTElaWkFUQSBBTExBIFJJU1BPU1RBJ10pIHtcclxuICAgICAgLy8gU2UgbGEgbW9kYWxpdMOgIMOoIFwiY29udGVzdHVhbGl6emF0YSBhbGxhIHJpc3Bvc3RhXCJcclxuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUNvbnRleHR1YWxpemVkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBbHRyaW1lbnRpIGdlc3RpYW1vIGxlIGFsdHJlIG1vZGFsaXTDoFxyXG4gICAgICB0aGlzLmhhbmRsZU5vbkNvbnRleHR1YWxpemVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc2VndWUgbGEgY2hpYW1hdGEgc2UgbGEgbW9kYWxpdMOgIMOoIFwiY29udGVzdHVhbGl6emF0YSBhbGxhIHJpc3Bvc3RhXCIsXHJcbiAgICogdXRpbGl6emFuZG8gbCdJRCBkZWxsYSByaXNwb3N0YSBvcmlnaW5hcmlhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2VDb250ZXh0dWFsaXplZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zPy5hZGRpdGlvbmFsUGFyYW1zPy5bXCJPcmlnaW5BbnN3ZXJJRFwiXSkge1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBbe1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1tcIk9yaWdpbkFuc3dlcklEXCJdLFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9XTtcclxuICBcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gUGFyc2luZyBkZWxsYSByaXNwb3N0YSBlIGFnZ2lvcm5hbWVudG8gZGVsIHJlY29yZFxyXG4gICAgICAgICAgY29uc3QgYW5zd2VyT2JqID0gSlNPTi5wYXJzZShyZXMuU2VyaWFsaXplZFZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLnNldEZpZWxkVmFsdWUoYW5zd2VyT2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ29udGVzdG8gbm9uIHRyb3ZhdG9cIik7XHJcbiAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlzY2UgdHV0dGUgbGUgYWx0cmUgbW9kYWxpdMOgLCBpbmNsdXNhIGxhIGNvbnRlc3R1YWxpenphemlvbmUgcGVyIElEIGVzdGVybm8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVOb25Db250ZXh0dWFsaXplZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlc3R1YWxpemF0aW9uUGFyYW0gPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uPy5lbnRpdHlETUFkZGl0aW9uYWxQYXJhbSB8fCBudWxsO1xyXG4gICAgY29uc3QgY29udGVzdHVhbGl6YXRpb25JZCA9IHRoaXMuY29uZmlndXJhdGlvbnM/LmFkZGl0aW9uYWxQYXJhbXM/Lltjb250ZXN0dWFsaXphdGlvblBhcmFtXSB8fCBudWxsO1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5idWlsZEJhc2VQYXJhbXMoY29udGVzdHVhbGl6YXRpb25QYXJhbSwgY29udGVzdHVhbGl6YXRpb25JZCk7XHJcbiAgXHJcbiAgICBpZiAoY29udGVzdHVhbGl6YXRpb25JZCkge1xyXG4gICAgICAvLyBzZSBobyBjb250ZXN0dWFsaXp6YXppb25lIHRyYW1pdGUgcGFyYW1ldHJpXHJcbiAgICAgIHRoaXMuZmV0Y2hEYXRhV2l0aENvbnRleHR1YWxpemF0aW9uKHBhcmFtcywgY29udGVzdHVhbGl6YXRpb25QYXJhbSwgY29udGVzdHVhbGl6YXRpb25JZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZldGNoRGF0YVdpdGhvdXRDb250ZXh0dWFsaXphdGlvbihwYXJhbXMsIGNvbnRlc3R1YWxpemF0aW9uUGFyYW0sIGNvbnRlc3R1YWxpemF0aW9uSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29zdHJ1aXNjZSBpIHBhcmFtZXRyaSByaWNoaWVzdGkgZGFsbGEgY2hpYW1hdGEgQVBJIGluIGJhc2UgYWwgY29udGVzdG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEJhc2VQYXJhbXMocGFyYW06IHN0cmluZywgaWQ6IGFueSk6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4ge1xyXG4gICAgY29uc3QgYmFzZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9IFtcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiRm9ybUNvZGVcIiwgUGFyYW1WYWx1ZTogdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiVXNlcklEXCIsIFBhcmFtVmFsdWU6IHRoaXMudXNlcklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJPcmdhSURcIiwgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk9yZ2FJRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwibW9kZVwiLCBQYXJhbVZhbHVlOiAyLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9LFxyXG4gICAgXTtcclxuICBcclxuICAgIC8vIFNlIGRpc3BvbmliaWxlLCBhZ2dpdW5nZSBwYXJhbWV0cmkgcGVyIGxhIGNvbnRlc3R1YWxpenphemlvbmVcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBiYXNlUGFyYW1zLnB1c2goeyBQYXJhbU5hbWU6IFwiQ29udGVzdHVhbGl6YXRpb25QYXJhbVwiLCBQYXJhbVZhbHVlOiBwYXJhbSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0gfSk7XHJcbiAgICAgIGJhc2VQYXJhbXMucHVzaCh7IFBhcmFtTmFtZTogXCJDb250ZXN0dWFsaXphdGlvbklkXCIsIFBhcmFtVmFsdWU6IGlkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSB9KTtcclxuICAgIH1cclxuICBcclxuICAgIHJldHVybiBiYXNlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wb3N0YSBpbCB2YWxvcmUgZGVsIGNhbXBvIG5lbCByZWNvcmQgY29ycmVudGUsIHVzYW5kbyBsYSBjb2xvbm5hIHNwZWNpZmljYXRhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RmllbGRWYWx1ZShhbnN3ZXJPYmo6IGFueSkge1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGFuc3dlck9ialt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlXSA7XHJcbiAgICB0aGlzLmRtbG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVzZWd1ZSBsYSBjaGlhbWF0YSBBUEkgaW4gbW9kYWxpdMOgIGNvbnRlc3R1YWxpenphdGEgZSBhc3NlZ25hIGlsIHJpc3VsdGF0by5cclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRGF0YVdpdGhDb250ZXh0dWFsaXphdGlvbihwYXJhbXMsIHBhcmFtTmFtZSwgcGFyYW1JZCkge1xyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0V2l0aENvbnRleHR1YWxpemF0aW9uQnlGb3JtQ29kZUVuZFBvaW50LFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHJlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLnBpY2tBbnN3ZXIocmVzKTtcclxuICAgICAgICBpZiAoIWFuc3dlcikgcmV0dXJuO1xyXG4gIFxyXG4gICAgICAgIGNvbnN0IGFuc3dlck9iaiA9IEpTT04ucGFyc2UoYW5zd2VyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgIHRoaXMuc2V0RmllbGRWYWx1ZShhbnN3ZXJPYmopO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7IH1cclxuICAgICk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEVzZWd1ZSBsYSBjaGlhbWF0YSBBUEkgaW4gbW9kYWxpdMOgIE5PTiBjb250ZXN0dWFsaXp6YXRhIGUgYXNzZWduYSBpbCByaXN1bHRhdG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaERhdGFXaXRob3V0Q29udGV4dHVhbGl6YXRpb24ocGFyYW1zLCBwYXJhbU5hbWUsIHBhcmFtSWQpIHtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUNvZGVFbmRQb2ludCxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuQW5zd2Vycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZG1sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBsZXQgYW5zd2VycyA9IHJlcy5BbnN3ZXJzO1xyXG4gICAgICAgIGlmIChwYXJhbUlkKSB7XHJcbiAgICAgICAgICBhbnN3ZXJzID0gYW5zd2Vycy5maWx0ZXIoKGEsIGkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFBhcmFtcyA9IEpTT04ucGFyc2UocmVzLkFkZGl0aW9uYWxQYXJhbXNbaV0pO1xyXG4gICAgICAgICAgICByZXR1cm4gYWRkaXRpb25hbFBhcmFtc1twYXJhbU5hbWVdID09IHBhcmFtSWQ7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY29uc3QgYW5zd2VyU3RyID0gdGhpcy5waWNrQW5zd2VyKGFuc3dlcnMpPy5BbnN3ZXI7XHJcbiAgICAgICAgaWYgKCFhbnN3ZXJTdHIpIHJldHVybjtcclxuICBcclxuICAgICAgICBjb25zdCBhbnN3ZXJPYmogPSBKU09OLnBhcnNlKGFuc3dlclN0cik7XHJcbiAgICAgICAgdGhpcy5zZXRGaWVsZFZhbHVlKGFuc3dlck9iaik7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHsgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGV6aW9uYSBsYSByaXNwb3N0YSBjb3JyZXR0YSB0cmEgbGUgZGlzcG9uaWJpbGksIGluIGJhc2UgYWxsYSBjYXJkaW5hbGl0w6AuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwaWNrQW5zd2VyKGFuc3dlcnM6IGFueVtdKTogYW55IHtcclxuICAgIGlmIChhbnN3ZXJzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGFuc3dlcnNbMF07XHJcblxyXG4gICAgLy8gU2Ugw6ggcmljaGllc3RhIGxhIHJpc3Bvc3RhIFwicGnDuSByZWNlbnRlXCIsIHByZW5kaWFtbyBsYSBwcmltYSAob3JkaW5hbWVudG8gZ2nDoCBnZXN0aXRvIGEgbW9udGUpXHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9PSBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtWydQSVUgUkVDRU5URSddKSB7XHJcbiAgICAgIHJldHVybiBhbnN3ZXJzWzBdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBEZWZhdWx0OiByZXN0aXR1aWFtbyBsYSBwcmltYVxyXG4gICAgcmV0dXJuIGFuc3dlcnNbMF07XHJcbiAgfVxyXG4gIFxyXG4gIC8vI2VuZHJlZ2lvbiBtYW5hZ2VETUdldHRlclxyXG5cclxuICAvLyNyZWdpb24gb25GaXJlVHJpZ2dlclxyXG4gIG9uRmlyZVRyaWdnZXIoZXY6IEZpcmVUcmlnZ2VyKSB7XHJcbiAgICBldi5mb3JtID0gdGhpcy5mb3JtO1xyXG4gICAgZXYudXNlclBhdGllbnQgPSB0aGlzLnVzZXJJRC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5maXJlVHJpZ2dlci5lbWl0KGV2KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRmlyZVRyaWdnZXJcclxuXHJcbiAgLy8jcmVnaW9uIHJlbG9hZERCR2V0dGVyXHJcbiAgcmVsb2FkREJHZXR0ZXIoKSB7XHJcbiAgICB0aGlzLmxvYWRlZERCR2V0dGVyID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkZWREQkdldHRlciA9IHRydWU7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHJlbG9hZERCR2V0dGVyXHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnTWFudWFsZSddIHx8IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydGb3JtdWxhJ11cIj4gXHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkc1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCByZWNvcmQ6IHJlY29yZCwgZm9yY2VkVmFsdWVzOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ11cIj4gXHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF0YWdldHRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRCR2V0dGVyRmllbGRzTG9hZGVkXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRzREJHVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIHJlY29yZDogcmVjb3JkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRiZ2V0dGVyICBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGVkREJHZXR0ZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYmdldHRlclwiXHJcbiAgICAgICAgICAgICAgICBbY29uZmlndXJhdGlvbnNdPVwiY29uZmlndXJhdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhZmllbGQuSW5MaXN0Vmlld1wiIFxyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgWyhyZWNvcmQpXT1cInJlY29yZFwiIFxyXG4gICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCIgXHJcbiAgICAgICAgICAgICAgICBbRGlyZWN0bHlPcGVuVGFibGVdPVwiZGlyZWN0bHlPcGVuVGFibGVcIiBcclxuICAgICAgICAgICAgICAgIFtRdWVyeUVkaXRvckNvbXBvbmVudF09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIFxyXG4gICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cImluQ29uZmlnXCIgXHJcbiAgICAgICAgICAgICAgICAob3V0KT1cIm9uRXh0ZXJuYWxDb21wb25lbnRPdXQoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgKGRvUmVsb2FkKT1cInJlbG9hZERCR2V0dGVyKClcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwib25TZWxlY3RlZFZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kYmdldHRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ11cIj4gXHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImRtbG9hZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkc1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCByZWNvcmQ6IHJlY29yZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPHRleHRhcmVhLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0FyZWEgZGkgdGVzdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHRhcmVhLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxhY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUgYXppb25lJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGZpcmVUcmlnZ2VyKT1cIm9uRmlyZVRyaWdnZXIoJGV2ZW50KVwiPlxyXG4gICAgPC9hY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxib29sZWFuLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9ib29sZWFuLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkYXRlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvZGF0ZS1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bnVtZXJpYy1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBudW1lcmljbyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgIDwvbnVtZXJpYy1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuICAgIDxpbWFnZS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydJbW1hZ2luZSddXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbaW5Db25maWddPVwiaW5Db25maWdcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIiAoaW1hZ2VEcmF3KT1cIm9uSW1hZ2VEcmF3KCRldmVudClcIj5cclxuICAgIDwvaW1hZ2UtZmllbGQtdGVtcGxhdGU+IFxyXG5cclxuICAgIDxpbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXVwiIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW2luQ29uZmlnXT1cImluQ29uZmlnXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCIgKGltYWdlTWFyayk9XCJvbkltYWdlTWFyaygkZXZlbnQpXCI+XHJcbiAgICA8L2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZT4gXHJcblxyXG4gICAgPGltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBpbW1hZ2luaSddXCJcclxuICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIlxyXG4gICAgPlxyXG4gICAgPC9pbWFnZS1maWVsZC1zZWxlY3Rvci10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGFiZWwtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRXRpY2hldHRhJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9sYWJlbC1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbiAgICA8IS0tIEZPUk0gREkgREVUVEFHTElPIChMQVNDSUFSRSBJTiBGT05ETykgLS0+XHJcbiAgICA8bGlzdC1mb3JtLXJlY29yZCAjbGlzdElubmVyRm9ybVJlY29yZHMgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRm9ybSBkaSBkZXR0YWdsaW8nXVwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZ2V0SW5uZXJGb3JtRnJvbUZpZWxkKGZpZWxkKVwiIFtjb25maWd1cmF0aW9uc109XCJjb25maWdMaXN0XCJcclxuICAgICAgICAob25BZGRWaWV3RWRpdFJlY29yZCk9XCJvbkFkZFZpZXdFZGl0SW5uZXJGb3JtUmVjb3JkKCRldmVudCwgZmllbGQpXCI+XHJcbiAgICA8L2xpc3QtZm9ybS1yZWNvcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpZWxkc0RCR1RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L3RleHQtZmllbGQtdGVtcGxhdGU+XHJcblxyXG4gICAgPGxpc3QtdmFsdWUtZGJnLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5Ub29sdGlwXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9saXN0LXZhbHVlLWRiZy10ZW1wbGF0ZT5cclxuICAgIFxyXG4gICAgXHJcbiAgICA8IS0tIE5vbiBnZXN0aXRpIChmdW56aW9uYW5vIGEgY3VsbykgLS0+XHJcblxyXG4gICAgPGRhdGUtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRGF0YSBlL28gb3JhJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9kYXRlLWZpZWxkLXRlbXBsYXRlPiAgXHJcbiAgICBcclxuICAgIDx0ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydBcmVhIGRpIHRlc3RvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT4gICAgXHJcblxyXG4gICAgPGJvb2xlYW4tZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZmllbGQuVG9vbHRpcFwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICA8L2Jvb2xlYW4tZmllbGQtdGVtcGxhdGU+ICAgIFxyXG5cclxuICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ11cIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLlRvb2x0aXBcIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG4gICAgPC9udW1lcmljLWZpZWxkLXRlbXBsYXRlPiAgICBcclxuXHJcblxyXG5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|