@eqproject/eqp-dynamic-module 2.9.27 → 2.9.28

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.
Files changed (18) hide show
  1. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +3 -3
  2. package/esm2020/lib/components/private/action-button-creator/action-button-creator.component.mjs +3 -3
  3. package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +10 -11
  4. package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +4 -3
  5. package/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +25 -10
  6. package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +138 -115
  7. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +4 -1
  8. package/esm2020/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.mjs +5 -5
  9. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +3 -2
  10. package/esm2020/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +3 -2
  11. package/esm2020/lib/models/baseField.model.mjs +7 -3
  12. package/fesm2015/eqproject-eqp-dynamic-module.mjs +193 -147
  13. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  14. package/fesm2020/eqproject-eqp-dynamic-module.mjs +190 -147
  15. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  16. package/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.d.ts +32 -0
  17. package/lib/models/baseField.model.d.ts +3 -2
  18. package/package.json +1 -1
@@ -141,7 +141,7 @@ export class ActionButtonCreatorComponent {
141
141
  this.actionButton.execution = this.selectedFormula.key;
142
142
  });
143
143
  this.isSaving = true;
144
- console.log("ActionButtonCreatorComponent saveOrExitForm()", this.actionButton);
144
+ GlobalService.debugLog("ActionButtonCreatorComponent saveOrExitForm()", this.actionButton);
145
145
  this.onSaveRecord.emit(this.actionButton);
146
146
  }
147
147
  }
@@ -188,8 +188,8 @@ export class ActionButtonCreatorComponent {
188
188
  }
189
189
  GlobalService.debugLog('@@trigger-creator:onChangeFormula selected formula', formula);
190
190
  GlobalService.debugLog('@@trigger-creator:onChangeFormula formulas', this.formulas);
191
+ GlobalService.debugLog("onChangeFormula formula.key", formula.key);
191
192
  this.formulaFieldsStructure = new Array();
192
- console.log("onChangeFormula", this.formulas, formula.key);
193
193
  //------------
194
194
  Object.keys(this.formulas[formula.key]).forEach((res) => {
195
195
  this.formulaFieldsStructure.push({
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
249
249
  type: ViewChild,
250
250
  args: ["dialogFormula", { static: true }]
251
251
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnJDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJwRSxpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFDN0Isc0JBQWlCLEdBQXNCLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRXRCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakMsaUJBQVks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ZDs7Ozs7Y0FLTTtRQUNOLGFBQWEsQ0FBQyxRQUFRLENBQUMsMERBQTBELEVBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFHOUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQW1CLEVBQUUsUUFBb0I7UUFDMUQsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzBIQXRQVSw0QkFBNEI7OEdBQTVCLDRCQUE0Qix3Y0NoQnpDLHFnTEErR2M7NEZEL0ZELDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7bUlBTWxCLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFDVSxZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ2UscUJBQXFCO3NCQUFwRCxLQUFLO3VCQUFDLHVCQUF1QjtnQkFDWixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBRU4sWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBV3lDLGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbkZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hY3Rpb25CdXR0b24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhY3Rpb24tYnV0dG9uLWNyZWF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYnV0dG9uLWNyZWF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1idXR0b24tY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CdXR0b25DcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcImFjdGlvbkJ1dHRvblwiKSBhY3Rpb25CdXR0b246IEFjdGlvbkJ1dHRvbiA9IG51bGw7XHJcbiAgQElucHV0KFwiYWN0aW9uQnV0dG9uRmllbGRcIikgYWN0aW9uQnV0dG9uRmllbGQ6IEFjdGlvbkJ1dHRvbkZpZWxkID0gbnVsbDtcclxuICBASW5wdXQoXCJmb3JtdWxhc1wiKSBmb3JtdWxhczogYW55ID0gbnVsbDtcclxuICBASW5wdXQoXCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIikgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KFwiSW5GaWVsZFwiKSBJbkZpZWxkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNhdmVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlU29tZXRoaW5nOiBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPigpO1xyXG5cclxuICAgIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gICAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkRm9ybXVsYTogYW55O1xyXG4gICAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZTogQXJyYXk8YW55PiA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICBhY3Rpb25zRmxhZyA9IEFjdGlvbkZsYWdFbnVtO1xyXG4gICAgdHJpZ2dlclByb3BlcnR5VHlwZSA9IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtO1xyXG4gIFxyXG4gICAgZGlhbG9nRm9ybXVsYVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gICAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBcclxuICAgIGZvcm1zOiBBcnJheTxGb3JtPjtcclxuICBcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlKXt9XHJcbiAgICBcclxuICAgIG5nT25Jbml0KCl7XHJcblxyXG4gICAgICAvLy9cclxuICAgICAgLy8vIFF1ZXN0byBjb21wb25lbnRlIGZ1bnppb25hIHNpYSBwZXIgaSBib3R0b25pIGRlaSBmaWVsZHMgc2lhIHBlciBpIGJvdHRvbmkgc3VnbGkgaGVhZGVyIChhZGRyZWNvcmQsIGxpc3R2aWV3IGVjY2V0ZXJhKVxyXG4gICAgICAvLy8gU2Ugc2kgc3RhIGxhdm9yYW5kbyBzdWkgZmllbGRzIMOoIHBvcG9sYXRvICd0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkJyBhbHRyaW1lbnRpIMOoIG51bGwuXHJcbiAgICAgIC8vL1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSA8QWN0aW9uQnV0dG9uPnRoaXMuYWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbiAhPSBudWxsICYmIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm11bGEgPSB7fTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb247XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhcy5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlcy5rZXksIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS50eXBlLCBcInRvb2x0aXBcIjogdGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcH0pO1xyXG4gICAgICAgICAgfSk7ICAgXHJcblxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSByZXMpLnZhbHVlID0gdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW3Jlc10udmFsdWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2godGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBbkFjdGlvbktleShrZXksIHRoaXMuYWN0aW9uQnV0dG9uLCB0aGlzLmZvcm11bGFzKSl7IHJldHVybjsgfVxyXG4gICAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBba2V5XSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IHRoaXMuYWN0aW9uQnV0dG9uRmllbGQuZm9ybXVsYXM7XHJcbiAgICAgICAgfSAgICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBleGVjdXRlR2V0TW9kdWxlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYodGhpcy5mb3JtdWxhcyl7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXVsYUtleXMucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tyZXNdKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybXVsYXNbcmVzXVtwcm9wZXJ0eV0udHlwZSA9PSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bS5ETU1PRFVMRSl7XHJcbiAgICAgICAgICAgIGV4ZWN1dGVHZXRNb2R1bGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgICBpZiAoZXhlY3V0ZUdldE1vZHVsZXMpe1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZDogYW55KSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGZvcm11bGE6IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSkudmFsdWUsXHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybS5GaWVsZHNcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB2YXIgZm9ybXVsYVRvQ2hhbmdlID0gdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSBmb3JtdWxhRmllbGQua2V5KTtcclxuICAgICAgICBmb3JtdWxhVG9DaGFuZ2UudmFsdWUgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFUb0NoYW5nZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKmFnZ2lvcm5hICBzZWxlY3RlZEZvcm11bGEgY29uIGlsIHZhbG9yZSByZXN0aXR1aXRvIGRhbGxhIHNlbGVjdFxyXG4gICAgICogcXVpIG5vbiDDqCBjaGlhcm8gc2UgZSBxdWFuZG8gcmljaGlhbWFyZSBpbCBjaGFuZ2VTb21ldGhpbmcgXHJcbiAgICAgKiAqL1xyXG4gICAgb25Ecm9wRG93blNlbGVjdGlvbihzZWxlY3RlZEFsbG93ZWRWYWx1ZSl7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpOyAvLyBub24gc2kgY2FwaXNjZSBhIGNoZSBzZXJ2ZSwgYXNzZWduYSBjb3NlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gc2VsZWN0ZWRBbGxvd2VkVmFsdWUudmFsdWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZDogYW55KXtcclxuICAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICB9ICAgIFxyXG5cclxuICAgIG9uRXFwU2VsZWN0TW9kdWxlKGV2LCBmb3JtdWxhRmllbGQpe1xyXG4gICAgICBpZiAoZXYgIT0gbnVsbCl7XHJcbiAgICAgICAgZm9ybXVsYUZpZWxkLnZhbHVlID0gZXYuSUQ7ICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm11bGFGaWVsZC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VTb21ldGhpbmcoKTtcclxuICAgIH0gICAgXHJcblxyXG4gIHNhdmVPckV4aXRGb3JtKGV4aXQ6IGJvb2xlYW4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLXJlY29yZCBzYXZlUmVjb3JkRXZlbnQnKVxyXG4gICAgaWYgKGV4aXQpIHtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24uQnV0dG9uVW5pcXVlSWQgPT0gbnVsbCl7IHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvblVuaXF1ZUlkID0gdGhpcy5nZW5lcmF0ZUdVSUQoKTsgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5CdXR0b25Db2RlID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKGZvcm11bGFGaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPT0gXCJ1bmRlZmluZWRcIil7IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID0ge307IH1cclxuICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZXhlY3V0aW9uID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIkFjdGlvbkJ1dHRvbkNyZWF0b3JDb21wb25lbnQgc2F2ZU9yRXhpdEZvcm0oKVwiLCB0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQodGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gICAgfVxyXG4gIH0gICAgXHJcblxyXG4gIGdlbmVyYXRlR1VJRCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCByYW5kb21OdW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKTtcclxuICAgIHJldHVybiBgJHt0aW1lc3RhbXB9LSR7cmFuZG9tTnVtfWA7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTb21ldGhpbmcoKXtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvbkNvZGUgPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXAgPSB7fTsgfVxyXG5cclxuICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPSB7fTsgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2VTb21ldGhpbmcuZW1pdCh0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCl7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKXtcclxuICAgICAgICAgICAgcmVzLm9iamVjdCA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguSUQgPT0gcmVzLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTsgICAgXHJcbiAgfSAgXHJcblxyXG4gIG9uQ2hhbmdlRm9ybXVsYShmb3JtdWxhOiBhbnkpe1xyXG5cclxuICAgIGlmIChmb3JtdWxhID09IG51bGwpeyAgXHJcbiAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgc2VsZWN0ZWQgZm9ybXVsYScsZm9ybXVsYSlcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhcycsdGhpcy5mb3JtdWxhcylcclxuXHJcbiAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwib25DaGFuZ2VGb3JtdWxhXCIsIHRoaXMuZm9ybXVsYXMsIGZvcm11bGEua2V5KTtcclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLVxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1xyXG4gICAgICAgIFwia2V5XCI6IHJlcywgXHJcbiAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udHlwZSwgXHJcbiAgICAgICAgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcCxcclxuICAgICAgICBcInZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnZhbHVlLFxyXG4gICAgICAgIC8qKiBwZXIgdmFsb3JpIHZpbmNvbGF0aSBhIGxpc3RlICovXHJcbiAgICAgICAgXCJhbGxvd2VkVmFsdWVzXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLmFsbG93ZWRWYWx1ZXMsXHJcbiAgICAgICAgXCJzZWxlY3RlZEFsbG93ZWRWYWx1ZVwiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS5zZWxlY3RlZEFsbG93ZWRWYWx1ZVxyXG5cclxuICAgICAgfSk7IFxyXG4gICAgfSk7ICBcclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICAvKiAqKiogb3JpZ2luYWxlICoqKlxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzLCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICAqKiogKi9cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhRmllbGRzU3RydWN0dXJlJyx0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpXHJcblxyXG5cclxuICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgfSAgXHJcbiAgXHJcbiAgaXNBbkFjdGlvbktleShrZXksIGZpZWxkOiBBY3Rpb25CdXR0b24sIGZvcm11bGFzOiBBcnJheTxhbnk+KXtcclxuICAgIHZhciBjb2RlID0gZmllbGQuQnV0dG9uQ29kZTtcclxuICAgIHZhciBlbHMgPSBmb3JtdWxhc1tjb2RlXTtcclxuICAgIHJldHVybiAoT2JqZWN0LmtleXMoZWxzKS5maW5kKHggPT4geCA9PSBrZXkpICE9IG51bGwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiXHJcbjxtYXQtY2FyZCBjbGFzcz1cImFkZC1mb3JtLWZpZWxkXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwiIUluRmllbGRcIj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgIHt7YWN0aW9uQnV0dG9uICE9IG51bGwgPyBcIk1vZGlmaWNhXCIgOiBcIkFnZ2l1bmdpXCJ9fSBib3R0b25lIGF6aW9uZVxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGNvbnRhaW5lckNvbnRlbnQgcGFkZGVyXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+VGlwbyBBY3Rpb24gQnV0dG9uPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtdWxhS2V5c1wiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidrZXknXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VGb3JtdWxhKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkV0aWNoZXR0YTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4gRXRpY2hldHRhIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImFjdGlvbkJ1dHRvbi5CdXR0b25MYWJlbFwiIFtyZWFkb25seV09XCJmYWxzZVwiIChrZXl1cCk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+SWNvbmEgKDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFuZ3VsYXJqc3dpa2kuY29tL2FuZ3VsYXIvYW5ndWxhci1tYXRlcmlhbC1pY29ucy1saXN0LW1hdC1pY29uLWxpc3QnIHRhcmdldD1cIl9ibGFua1wiPmxpc3RhPC9hPik8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IEljb25hIE1hdGVyaWFsICg8YSBocmVmPSdodHRwczovL3d3dy5hbmd1bGFyanN3aWtpLmNvbS9hbmd1bGFyL2FuZ3VsYXItbWF0ZXJpYWwtaWNvbnMtbGlzdC1tYXQtaWNvbi1saXN0JyB0YXJnZXQ9XCJfYmxhbmtcIj5saXN0YTwvYT4pIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImFjdGlvbkJ1dHRvbi5JY29uXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgKGtleXVwKT1cImNoYW5nZVNvbWV0aGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5TZXppb25pPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IFNlemlvbmkgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWN0aW9uc0ZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF0gPSBcInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWN0aW9uQnV0dG9uLlNob3dJblwiICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGZvcm11bGFGaWVsZCBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7Zm9ybXVsYUZpZWxkLmtleX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5TVFJJTkdcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4ge3tmb3JtdWxhRmllbGQua2V5fX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW21hdFRvb2x0aXBdPVwiZm9ybXVsYUZpZWxkLnRvb2x0aXBcIiAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkKVwiIFsobmdNb2RlbCldPVwiZm9ybXVsYUZpZWxkLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gaSBjYW1waSBjb24gdmFsb3JpKG5vbiBjYWxjb2xhdGkpIHZpbmNvbGF0aSBsaSBtb3N0cm8gaW4gdW5hIHNlbGVjdC0tPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLkRST1BET1dOX0xJU1RcIj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgdmFsb3JlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheURhdGFdPVwiZm9ybXVsYUZpZWxkLmFsbG93ZWRWYWx1ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRHJvcERvd25TZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmb3JtdWxhRmllbGQuc2VsZWN0ZWRBbGxvd2VkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlcXAtZm9ybS1maWVsZCBlcXAtY29sb3VyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8IS0tIGZpbmUgZ2VzdGlvbmUgbGlzdGUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLkRNTU9EVUxFXCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSBtb2R1bG8nXCIgW2FycmF5RGF0YV09XCJmb3Jtc1wiIFsobmdNb2RlbElucHV0KV09XCJmb3JtdWxhRmllbGQub2JqZWN0XCIgW2lzU2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidJRCdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25FcXBTZWxlY3RNb2R1bGUoJGV2ZW50LCBmb3JtdWxhRmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0yIG1iLTEgbWUtM1wiPiBcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKGZhbHNlKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNTYXZpbmdcIj5TYWx2YTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTYXZpbmdcIj5TYWx2YXRhZ2dpbyBpbiBDb3Jzby4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcblxyXG48IS0tRElBTE9HIFBFUiBTRU1QTElGSUNBUkUgTEEgU0NSSVRUVVJBIERFTCBDQU1QTyBGT1JNVUxBLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRm9ybXVsYT5cclxuICAgIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG4gICAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnJDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJwRSxpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFDN0Isc0JBQWlCLEdBQXNCLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRXRCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakMsaUJBQVks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LENBQUMsUUFBUSxDQUFDLDBEQUEwRCxFQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBRzlHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFtQixFQUFFLFFBQW9CO1FBQzFELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOzswSEF0UFUsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsd2NDaEJ6QyxxZ0xBK0djOzRGRC9GRCw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsdUJBQXVCO21JQU1sQixJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBQ1UsWUFBWTtzQkFBbEMsS0FBSzt1QkFBQyxjQUFjO2dCQUNPLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ1AsUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUNlLHFCQUFxQjtzQkFBcEQsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBQ1osT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUVOLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQVd5QyxhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b24sIEFjdGlvbkZsYWdFbnVtLCBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b25GaWVsZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWVsZHMvYWN0aW9uQnV0dG9uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWN0aW9uLWJ1dHRvbi1jcmVhdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tYnV0dG9uLWNyZWF0b3IuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uQnV0dG9uQ3JlYXRvckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dChcImZvcm1cIikgZm9ybTogRm9ybTtcclxuICBASW5wdXQoXCJhY3Rpb25CdXR0b25cIikgYWN0aW9uQnV0dG9uOiBBY3Rpb25CdXR0b24gPSBudWxsO1xyXG4gIEBJbnB1dChcImFjdGlvbkJ1dHRvbkZpZWxkXCIpIGFjdGlvbkJ1dHRvbkZpZWxkOiBBY3Rpb25CdXR0b25GaWVsZCA9IG51bGw7XHJcbiAgQElucHV0KFwiZm9ybXVsYXNcIikgZm9ybXVsYXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KFwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dChcIkluRmllbGRcIikgSW5GaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25TYXZlUmVjb3JkOiBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZVNvbWV0aGluZzogRXZlbnRFbWl0dGVyPEFjdGlvbkJ1dHRvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkJ1dHRvbj4oKTtcclxuXHJcbiAgICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuICAgIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEZvcm11bGE6IGFueTtcclxuICAgIGZvcm11bGFLZXlzOiBBcnJheTxhbnk+ID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmU6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgYWN0aW9uc0ZsYWcgPSBBY3Rpb25GbGFnRW51bTtcclxuICAgIHRyaWdnZXJQcm9wZXJ0eVR5cGUgPSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bTtcclxuICBcclxuICAgIGRpYWxvZ0Zvcm11bGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAgIEBWaWV3Q2hpbGQoXCJkaWFsb2dGb3JtdWxhXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0Zvcm11bGE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgICBmb3JtczogQXJyYXk8Rm9ybT47XHJcbiAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSl7fVxyXG4gICAgXHJcbiAgICBuZ09uSW5pdCgpe1xyXG5cclxuICAgICAgLy8vXHJcbiAgICAgIC8vLyBRdWVzdG8gY29tcG9uZW50ZSBmdW56aW9uYSBzaWEgcGVyIGkgYm90dG9uaSBkZWkgZmllbGRzIHNpYSBwZXIgaSBib3R0b25pIHN1Z2xpIGhlYWRlciAoYWRkcmVjb3JkLCBsaXN0dmlldyBlY2NldGVyYSlcclxuICAgICAgLy8vIFNlIHNpIHN0YSBsYXZvcmFuZG8gc3VpIGZpZWxkcyDDqCBwb3BvbGF0byAndGhpcy5hY3Rpb25CdXR0b25GaWVsZCcgYWx0cmltZW50aSDDqCBudWxsLlxyXG4gICAgICAvLy9cclxuXHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkICE9IG51bGwpe1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uID0gPEFjdGlvbkJ1dHRvbj50aGlzLmFjdGlvbkJ1dHRvbkZpZWxkO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gIT0gbnVsbCAmJiB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb24gIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhID0ge307XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5ID0gdGhpcy5hY3Rpb25CdXR0b24uZXhlY3V0aW9uO1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkID09IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYXMuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcImtleVwiOiByZXMua2V5LCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldW3Jlc10udHlwZSwgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnRvb2x0aXB9KTtcclxuICAgICAgICAgIH0pOyAgIFxyXG5cclxuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcCkuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gcmVzKS52YWx1ZSA9IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcFtyZXNdLnZhbHVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkID09IG51bGwpe1xyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW5BY3Rpb25LZXkoa2V5LCB0aGlzLmFjdGlvbkJ1dHRvbiwgdGhpcy5mb3JtdWxhcykpeyByZXR1cm47IH1cclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2godGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW2tleV0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSB0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkLmZvcm11bGFzO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uID09IG51bGwpe1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uID0gbmV3IEFjdGlvbkJ1dHRvbigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgZXhlY3V0ZUdldE1vZHVsZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmKHRoaXMuZm9ybXVsYXMpe1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFLZXlzLnB1c2goe1wia2V5XCI6IHJlc30pO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbcmVzXSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm11bGFzW3Jlc11bcHJvcGVydHldLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRE1NT0RVTEUpe1xyXG4gICAgICAgICAgICBleGVjdXRlR2V0TW9kdWxlcyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgICAgaWYgKGV4ZWN1dGVHZXRNb2R1bGVzKXtcclxuICAgICAgICB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvcGVuRm9ybXVsYURpYWxvZyhmb3JtdWxhRmllbGQ6IGFueSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBmb3JtdWxhOiB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IGZvcm11bGFGaWVsZC5rZXkpLnZhbHVlLFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmZvcm0uRmllbGRzXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdmFyIGZvcm11bGFUb0NoYW5nZSA9IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSk7XHJcbiAgICAgICAgZm9ybXVsYVRvQ2hhbmdlLnZhbHVlID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5vbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhVG9DaGFuZ2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiphZ2dpb3JuYSAgc2VsZWN0ZWRGb3JtdWxhIGNvbiBpbCB2YWxvcmUgcmVzdGl0dWl0byBkYWxsYSBzZWxlY3RcclxuICAgICAqIHF1aSBub24gw6ggY2hpYXJvIHNlIGUgcXVhbmRvIHJpY2hpYW1hcmUgaWwgY2hhbmdlU29tZXRoaW5nIFxyXG4gICAgICogKi9cclxuICAgIG9uRHJvcERvd25TZWxlY3Rpb24oc2VsZWN0ZWRBbGxvd2VkVmFsdWUpe1xyXG4gICAgICBcclxuICAgICAgdGhpcy5jaGFuZ2VTb21ldGhpbmcoKTsgLy8gbm9uIHNpIGNhcGlzY2UgYSBjaGUgc2VydmUsIGFzc2VnbmEgY29zZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5zZWxlY3RlZEFsbG93ZWRWYWx1ZSA9IHNlbGVjdGVkQWxsb3dlZFZhbHVlLnZhbHVlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhRmllbGQ6IGFueSl7XHJcbiAgICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gICAgfSAgICBcclxuXHJcbiAgICBvbkVxcFNlbGVjdE1vZHVsZShldiwgZm9ybXVsYUZpZWxkKXtcclxuICAgICAgaWYgKGV2ICE9IG51bGwpe1xyXG4gICAgICAgIGZvcm11bGFGaWVsZC52YWx1ZSA9IGV2LklEOyAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3JtdWxhRmllbGQudmFsdWUgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICB9ICAgIFxyXG5cclxuICBzYXZlT3JFeGl0Rm9ybShleGl0OiBib29sZWFuKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdhZGQtZm9ybS1yZWNvcmQgc2F2ZVJlY29yZEV2ZW50JylcclxuICAgIGlmIChleGl0KSB7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvblVuaXF1ZUlkID09IG51bGwpeyB0aGlzLmFjdGlvbkJ1dHRvbi5CdXR0b25VbmlxdWVJZCA9IHRoaXMuZ2VuZXJhdGVHVUlEKCk7IH1cclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b24uQnV0dG9uQ29kZSA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID09IFwidW5kZWZpbmVkXCIpeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9IHt9OyB9XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW2Zvcm11bGFGaWVsZC5rZXldID0gZm9ybXVsYUZpZWxkO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkFjdGlvbkJ1dHRvbkNyZWF0b3JDb21wb25lbnQgc2F2ZU9yRXhpdEZvcm0oKVwiLCB0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQodGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gICAgfVxyXG4gIH0gICAgXHJcblxyXG4gIGdlbmVyYXRlR1VJRCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCByYW5kb21OdW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKTtcclxuICAgIHJldHVybiBgJHt0aW1lc3RhbXB9LSR7cmFuZG9tTnVtfWA7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTb21ldGhpbmcoKXtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvbkNvZGUgPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXAgPSB7fTsgfVxyXG5cclxuICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPSB7fTsgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2VTb21ldGhpbmcuZW1pdCh0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCl7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKXtcclxuICAgICAgICAgICAgcmVzLm9iamVjdCA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguSUQgPT0gcmVzLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTsgICAgXHJcbiAgfSAgXHJcblxyXG4gIG9uQ2hhbmdlRm9ybXVsYShmb3JtdWxhOiBhbnkpe1xyXG5cclxuICAgIGlmIChmb3JtdWxhID09IG51bGwpeyAgXHJcbiAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgc2VsZWN0ZWQgZm9ybXVsYScsZm9ybXVsYSlcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhcycsdGhpcy5mb3JtdWxhcylcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvbkNoYW5nZUZvcm11bGEgZm9ybXVsYS5rZXlcIiwgZm9ybXVsYS5rZXkpO1xyXG5cclxuICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IG5ldyBBcnJheTxhbnk+KCk7XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XSkuZm9yRWFjaCgocmVzKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XHJcbiAgICAgICAgXCJrZXlcIjogcmVzLCBcclxuICAgICAgICBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlLCBcclxuICAgICAgICBcInRvb2x0aXBcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50b29sdGlwLFxyXG4gICAgICAgIFwidmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udmFsdWUsXHJcbiAgICAgICAgLyoqIHBlciB2YWxvcmkgdmluY29sYXRpIGEgbGlzdGUgKi9cclxuICAgICAgICBcImFsbG93ZWRWYWx1ZXNcIiA6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10uYWxsb3dlZFZhbHVlcyxcclxuICAgICAgICBcInNlbGVjdGVkQWxsb3dlZFZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnNlbGVjdGVkQWxsb3dlZFZhbHVlXHJcblxyXG4gICAgICB9KTsgXHJcbiAgICB9KTsgIFxyXG4gICAgLy8tLS0tLS0tLS0tLS1cclxuICAgIC8qICoqKiBvcmlnaW5hbGUgKioqXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XSkuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcImtleVwiOiByZXMsIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnR5cGVcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgICoqKiAqL1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUnLHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSlcclxuXHJcblxyXG4gICAgdGhpcy5jaGFuZ2VTb21ldGhpbmcoKTtcclxuICB9ICBcclxuICBcclxuICBpc0FuQWN0aW9uS2V5KGtleSwgZmllbGQ6IEFjdGlvbkJ1dHRvbiwgZm9ybXVsYXM6IEFycmF5PGFueT4pe1xyXG4gICAgdmFyIGNvZGUgPSBmaWVsZC5CdXR0b25Db2RlO1xyXG4gICAgdmFyIGVscyA9IGZvcm11bGFzW2NvZGVdO1xyXG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhlbHMpLmZpbmQoeCA9PiB4ID09IGtleSkgIT0gbnVsbCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuPG1hdC1jYXJkIGNsYXNzPVwiYWRkLWZvcm0tZmllbGRcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAge3thY3Rpb25CdXR0b24gIT0gbnVsbCA/IFwiTW9kaWZpY2FcIiA6IFwiQWdnaXVuZ2lcIn19IGJvdHRvbmUgYXppb25lXHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgY29udGFpbmVyQ29udGVudCBwYWRkZXJcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5UaXBvIEFjdGlvbiBCdXR0b248L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm11bGFLZXlzXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkRm9ybXVsYVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2tleSdcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZUZvcm11bGEoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+RXRpY2hldHRhPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBFdGljaGV0dGEgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiYWN0aW9uQnV0dG9uLkJ1dHRvbkxhYmVsXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgKGtleXVwKT1cImNoYW5nZVNvbWV0aGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5JY29uYSAoPGEgaHJlZj0naHR0cHM6Ly93d3cuYW5ndWxhcmpzd2lraS5jb20vYW5ndWxhci9hbmd1bGFyLW1hdGVyaWFsLWljb25zLWxpc3QtbWF0LWljb24tbGlzdCcgdGFyZ2V0PVwiX2JsYW5rXCI+bGlzdGE8L2E+KTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4gSWNvbmEgTWF0ZXJpYWwgKDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFuZ3VsYXJqc3dpa2kuY29tL2FuZ3VsYXIvYW5ndWxhci1tYXRlcmlhbC1pY29ucy1saXN0LW1hdC1pY29uLWxpc3QnIHRhcmdldD1cIl9ibGFua1wiPmxpc3RhPC9hPikgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiYWN0aW9uQnV0dG9uLkljb25cIiBbcmVhZG9ubHldPVwiZmFsc2VcIiAoa2V5dXApPVwiY2hhbmdlU29tZXRoaW5nKClcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+ICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFJbkZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlNlemlvbmk8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4gU2V6aW9uaSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJhY3Rpb25zRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XSA9IFwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJhY3Rpb25CdXR0b24uU2hvd0luXCIgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cImNoYW5nZVNvbWV0aGluZygpXCIgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+ICAgXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgZm9ybXVsYUZpZWxkIG9mIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tmb3JtdWxhRmllbGQua2V5fX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLlNUUklOR1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiB7e2Zvcm11bGFGaWVsZC5rZXl9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcmVhZG9ubHldPVwiZmFsc2VcIiBbcmVxdWlyZWRdPVwiZmFsc2VcIiBbbWF0VG9vbHRpcF09XCJmb3JtdWxhRmllbGQudG9vbHRpcFwiIChjbGljayk9XCJvcGVuRm9ybXVsYURpYWxvZyhmb3JtdWxhRmllbGQpXCIgWyhuZ01vZGVsKV09XCJmb3JtdWxhRmllbGQudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhRmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBpIGNhbXBpIGNvbiB2YWxvcmkobm9uIGNhbGNvbGF0aSkgdmluY29sYXRpIGxpIG1vc3RybyBpbiB1bmEgc2VsZWN0LS0+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImZvcm11bGFGaWVsZC50eXBlID09IHRyaWdnZXJQcm9wZXJ0eVR5cGUuRFJPUERPV05fTElTVFwiPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSB2YWxvcmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5RGF0YV09XCJmb3JtdWxhRmllbGQuYWxsb3dlZFZhbHVlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Ecm9wRG93blNlbGVjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm11bGFGaWVsZC5zZWxlY3RlZEFsbG93ZWRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVxcC1mb3JtLWZpZWxkIGVxcC1jb2xvdXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwhLS0gZmluZSBnZXN0aW9uZSBsaXN0ZS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImZvcm11bGFGaWVsZC50eXBlID09IHRyaWdnZXJQcm9wZXJ0eVR5cGUuRE1NT0RVTEVcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIG1vZHVsbydcIiBbYXJyYXlEYXRhXT1cImZvcm1zXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm11bGFGaWVsZC5vYmplY3RcIiBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ0lEJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkVxcFNlbGVjdE1vZHVsZSgkZXZlbnQsIGZvcm11bGFGaWVsZClcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWZvb3RlciAqbmdJZj1cIiFJbkZpZWxkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTIgbWItMSBtZS0zXCI+IFxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMlwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0odHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc1NhdmluZ1wiPlNhbHZhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NhdmluZ1wiPlNhbHZhdGFnZ2lvIGluIENvcnNvLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG5cclxuPC9tYXQtY2FyZD5cclxuXHJcbjwhLS1ESUFMT0cgUEVSIFNFTVBMSUZJQ0FSRSBMQSBTQ1JJVFRVUkEgREVMIENBTVBPIEZPUk1VTEEtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dGb3JtdWxhPlxyXG4gICAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbiAgICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbjwvbmctdGVtcGxhdGU+Il19