slick-components 4.4.19 → 4.4.22

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.
@@ -426,7 +426,7 @@ export class SlickGridComponent {
426
426
  this.columnSelectDialogRef.showDialog();
427
427
  }
428
428
  onColumnDrop(e) {
429
- console.log(e);
429
+ console.info(e);
430
430
  }
431
431
  async onColumnReorder(e) {
432
432
  const oldOrder = e[0];
@@ -790,4 +790,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
790
790
  type: HostListener,
791
791
  args: ['window:resize', ['$event', '$event.target']]
792
792
  }] } });
793
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1ncmlkL3NsaWNrLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZ3JpZC9zbGljay1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBMEUsZUFBZSxFQUFhLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDcE8sT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUF5QiwwQkFBMEIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVILE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSw0QkFBNEIsQ0FBQztBQUdqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQStCLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0gsT0FBTyxFQUEyQixzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRTlGLE1BQU0sYUFBYTtJQUNsQixZQUFZLElBQVk7UUFDdkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0NBSUQ7QUFPRCxNQUFNLE9BQU8sa0JBQWtCO0lBOEU5QixZQUFv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QUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ1EsZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ1UscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDSSx1QkFBdUI7c0JBQTVELFNBQVM7dUJBQUMseUJBQXlCO2dCQUVlLHdCQUF3QjtzQkFBMUUsZUFBZTt1QkFBQyxnQ0FBZ0M7Z0JBbUMzQyxRQUFRO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrR3JpZFNlcnZpY2UgfSBmcm9tIFwiLi9zbGljay1ncmlkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSVNsaWNrR3JpZENvbHVtbk1vZGVsLCBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcywgU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbiB9IGZyb20gXCIuL3NsaWNrLWdyaWQtY29sdW1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0dyaWRPcHRpb25zIH0gZnJvbSBcIi4vc2xpY2stZ3JpZC5vcHRpb25zXCI7XHJcbmltcG9ydCB7IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCwgSVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWdyaWQtcmVxdWVzdC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTbGlja0dyaWRSZXNwb25zZU1vZGVsIH0gZnJvbSBcIi4vc2xpY2stZ3JpZC1yZXNwb25zZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTbGlja0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9zbGljay1kaWFsb2cvc2xpY2stZGlhbG9nLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0dyaWRDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuL3NsaWNrLWdyaWQtY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTbGlja0NvbmZpcm1EaWFsb2dDb21wb25lbnQsIFNsaWNrQ29uZmlybURpYWxvZ1Jlc3VsdHMgfSBmcm9tICcuLi9zbGljay1jb25maXJtLWRpYWxvZy9zbGljay1jb25maXJtLWRpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJU2xpY2tHcmlkRmF2b3JpdGVNb2RlbCwgU2xpY2tHcmlkRmF2b3JpdGVNb2RlbCB9IGZyb20gJy4vc2xpY2stZ3JpZC1mYXZvcml0ZS5tb2RlbCc7XHJcblxyXG5jbGFzcyBEcm9wRG93bk1vZGVsIHtcclxuXHRjb25zdHJ1Y3Rvcih0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuaWQgPSB0ZXh0O1xyXG5cdFx0dGhpcy50ZXh0ID0gdGV4dDtcclxuXHR9XHJcblxyXG5cdGlkOiBzdHJpbmc7XHJcblx0dGV4dDogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWdyaWQnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tHcmlkU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cdEBIb3N0QmluZGluZygnY2xhc3MnKSBmbGV4Q29sdW1uID0gJ3NsaWNrLWZsZXgtY29sdW1uJztcclxuXHQvL0BIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdkLWZsZXggZmxleC1jb2x1bW4gZmxleC1maWxsJztcclxuXHJcblx0QElucHV0KCkgZ3JpZE9wdGlvbnM6IElTbGlja0dyaWRPcHRpb25zO1xyXG5cdEBJbnB1dCgpIGJvcmRlcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBzdHJpcGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBob3ZlcjogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgc2hvd2luZ0FsbFJlY29yZHMgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dDb250ZXh0TWVudTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25GYXZvcml0ZXNNb2RpZmllZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblx0QFZpZXdDaGlsZChcInNsaWNrR3JpZFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlja0dyaWRSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlQ29udGFpbmVyXCIpIHRhYmxlQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJ0YWJsZVJlZlwiKSB0YWJsZVJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwidGFibGVIZWFkZXJSb3dcIikgdGFibGVIZWFkZXJSb3dSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlSGVhZGVyU2VhcmNoUm93XCIpIHRhYmxlSGVhZGVyU2VhcmNoUm93UmVmOiBFbGVtZW50UmVmO1xyXG5cdC8vIFRoaXMgaXMgdG8gdGVzdCBob3cgaGlnaCBhIHN0YW5kYXJkIHJvdyBpc1xyXG5cdEBWaWV3Q2hpbGQoXCJ0ZXN0Um93XCIpIHRlc3RSb3dSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlQm9keVJvd3NcIikgdGFibGVCb2R5Um93c1JlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiY29sdW1uU2VsZWN0RGlhbG9nUmVmXCIpIGNvbHVtblNlbGVjdERpYWxvZ1JlZjogU2xpY2tEaWFsb2dDb21wb25lbnQ7XHJcblx0QFZpZXdDaGlsZChcImFkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmXCIpIGFkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmOiBTbGlja0NvbmZpcm1EaWFsb2dDb21wb25lbnQ7XHJcblxyXG5cdEBDb250ZW50Q2hpbGRyZW4oU2xpY2tHcmlkQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUpIHNsaWNrR3JpZENvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFNsaWNrR3JpZENvbHVtblRlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHR0ZW1wbGF0ZVJlZnM6IGFueTtcclxuXHJcblx0cHJpdmF0ZSBmbk9uTW91c2VVcCA9IChlKSA9PiB0aGlzLm9uTW91c2VVcChlKTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IG51bGw7XHJcblx0Z3JpZE9wYWNpdHkgPSAwO1xyXG5cdHZpc2libGVDb2x1bW5zOiBJU2xpY2tHcmlkQ29sdW1uTW9kZWxbXTtcclxuXHRmYXZvcml0ZXM6IERyb3BEb3duTW9kZWxbXTtcclxuXHRzZWxlY3RlZEZhdm9yaXRlOiBzdHJpbmc7XHJcblx0bmV3RmF2b3JpdGVUZXh0OiBzdHJpbmc7XHJcblx0Y29sdW1uU2VsZWN0RGlhbG9nQ29sdW1uczogSVNsaWNrR3JpZENvbHVtbk1vZGVsW107XHJcblx0bG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNEb3VibGVDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGRvdWJsZUNsaWNrV2FpdFRpbWVvdXQ6IE5vZGVKUy5UaW1lcjtcclxuXHRjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuXHRzZWFyY2hUaW1lb3V0OiBOb2RlSlMuVGltZXI7XHJcblx0a2V5cHJlc3NUaW1lb3V0OiBOb2RlSlMuVGltZXI7XHJcblx0c2hvd1Rlc3RSb3cgPSBmYWxzZTtcclxuXHRzaG93U2VhcmNoUm93ID0gZmFsc2U7XHJcblx0aXNSZXNpemluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHZpc2libGVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cdHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XHJcblx0dG90YWxSZWNvcmRzOiBudW1iZXI7XHJcblx0cmVjb3Jkc1BlclBhZ2VWYWx1ZTogc3RyaW5nID0gXCJBdXRvXCI7XHJcblxyXG5cdHByaXZhdGUgc2xpY2tHcmlkSGVpZ2h0OiBudW1iZXI7XHJcblx0cHJpdmF0ZSByZXNpemVUaW1lb3V0OiBOb2RlSlMuVGltZXIgPSBudWxsO1xyXG5cdHByaXZhdGUgcmVxdWVzdE1vZGVsOiBTbGlja0dyaWRSZXF1ZXN0TW9kZWw7XHJcblx0cHJpdmF0ZSByZXNpemVJbml0aWFsUG9zOiBudW1iZXI7XHJcblx0cHJpdmF0ZSByZXNpemVJbml0aWFsV2lkdGg6IG51bWJlcjtcclxuXHRwcml2YXRlIHJlc2l6ZUNvbElkeDogbnVtYmVyO1xyXG5cclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnLCAnJGV2ZW50LnRhcmdldCddKVxyXG5cdGFzeW5jIG9uUmVzaXplKGV2ZW50OiBVSUV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG5cdFx0Ly8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgZmlyZWZveCBzaG93cy9oaWRlcyB0aGUgbWVudSBpZiB5b3UgcHJlc3MgYWx0LiBEb24ndCByZWRyYXcgdGhlIGdyaWQgaWYgd2UncmVcclxuXHRcdC8vIGp1c3Qgc2hvd2luZyB0aGUgbWVudVxyXG5cdFx0aWYgKE1hdGguYWJzKHRoaXMuc2xpY2tHcmlkSGVpZ2h0IC0gdGhpcy5zbGlja0dyaWRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIDwgNTApXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRpZiAodGhpcy5zbGlja0dyaWRIZWlnaHQgIT09IHRoaXMuc2xpY2tHcmlkUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xyXG5cdFx0XHR0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5wYWdlID0gMTtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLnJlc2l6ZUdyaWQoKTtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IHRoaXMucmVjb3Jkc1BlclBhZ2U7XHJcblx0XHRcdFx0dGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHR9LCA1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBncmlkU2VydmljZTogU2xpY2tHcmlkU2VydmljZSxcclxuXHRcdHByaXZhdGUgZnVuY3Rpb25Mb2NrU2VydmljZTogU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsID0gbmV3IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnNldEdyaWRPcHRpb25zKHRoaXMuZ3JpZE9wdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0Ly8gQ29weSB0aGUgdGVtcGxhdGVzIHRvIGEgdmFyaWFibGUgdGhhdCB0aGUgaHRtbCBjYW4gYWNjZXNzLiAgSXQgY2FuJ3QgYWNjZXNzIGEgUXVlcnlMaXN0XHJcblx0XHR0aGlzLnRlbXBsYXRlUmVmcyA9IHt9O1xyXG5cdFx0dGhpcy5zbGlja0dyaWRDb2x1bW5UZW1wbGF0ZXMuZm9yRWFjaCh0ID0+IHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZVJlZnNbdC5jb2x1bW5LZXldID0gdC50ZW1wbGF0ZTtcclxuXHRcdH0pO1xyXG5cdFx0aWYgKHRoaXMudGFibGVSZWYpXHJcblx0XHRcdCg8SFRNTFRhYmxlRWxlbWVudD50aGlzLnRhYmxlUmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyB0YWJsZUtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0Ly8gS2V5IHVwXHJcblx0XHRpZiAoZS53aGljaCA9PT0gMzggJiYgISh0aGlzLnNlbGVjdGVkSW5kZXggPT09IDAgJiYgdGhpcy5jdXJyZW50UGFnZSA9PT0gMSkpIHtcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMua2V5cHJlc3NUaW1lb3V0KTtcclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgMCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRQYWdlID4gMSkge1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50UGFnZS0tO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMub25QYWdlQ2hhbmdlKHRoaXMuY3VycmVudFBhZ2UsIGZhbHNlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMucmVjb3Jkc1BlclBhZ2UgLSAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5rZXlwcmVzc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy52aXNpYmxlRGF0YVt0aGlzLnNlbGVjdGVkSW5kZXhdO1xyXG5cdFx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdH0sIDUwMCk7XHJcblx0XHR9XHJcblx0XHQvLyBLZXkgZG93blxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQwKSB7XHJcblx0XHRcdGlmICgoKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucmVjb3Jkc1BlclBhZ2UpICsgdGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMudG90YWxSZWNvcmRzKVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmtleXByZXNzVGltZW91dCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMucmVjb3Jkc1BlclBhZ2UpIHtcclxuXHRcdFx0XHRpZiAoKCh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJlY29yZHNQZXJQYWdlKSArIHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMudG90YWxSZWNvcmRzKSB7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRQYWdlKys7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5vblBhZ2VDaGFuZ2UodGhpcy5jdXJyZW50UGFnZSwgZmFsc2UpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5rZXlwcmVzc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy52aXNpYmxlRGF0YVt0aGlzLnNlbGVjdGVkSW5kZXhdO1xyXG5cdFx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdH0sIDUwMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5ib3JkZXJlZCkge1xyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ib3JkZXJlZCA9PT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLmJvcmRlcmVkID0gKHRoaXMuYm9yZGVyZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpICE9PSAnZmFsc2UnKSA/IHRydWUgOiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY2hhbmdlcy5zdHJpcGVkKSB7XHJcblx0XHRcdC8vIFRoZSBncmlkIG9wdGlvbnMgb3ZlcnJpZGUgdGhlIHRhZyBvcHRpb25zXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLnN0cmlwZWQgPT09IG51bGwpXHJcblx0XHRcdFx0dGhpcy5zdHJpcGVkID0gKHRoaXMuc3RyaXBlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmhvdmVyKSB7XHJcblx0XHRcdC8vIFRoZSBncmlkIG9wdGlvbnMgb3ZlcnJpZGUgdGhlIHRhZyBvcHRpb25zXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmhvdmVyID09PSBudWxsKVxyXG5cdFx0XHRcdHRoaXMuaG92ZXIgPSAodGhpcy5ob3Zlci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmdyaWRPcHRpb25zKSB7XHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmJvcmRlcmVkICE9PSBudWxsKVxyXG5cdFx0XHRcdHRoaXMuYm9yZGVyZWQgPSB0aGlzLmdyaWRPcHRpb25zLmJvcmRlcmVkO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMuc3RyaXBlZCAhPT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLnN0cmlwZWQgPSB0aGlzLmdyaWRPcHRpb25zLnN0cmlwZWQ7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ob3ZlciAhPT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLmhvdmVyID0gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlcjtcclxuXHJcblx0XHRcdHRoaXMuc2V0R3JpZE9wdGlvbnModGhpcy5ncmlkT3B0aW9ucyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuZGF0YSkge1xyXG5cdFx0XHQvLyBJZiB3ZSBkb24ndCBkbyB0aGlzIGxvY2ssIHRoZSBmaXJzdCBjaGFuZ2Ugd2lsbCBoYXZlIG51bGwgZGF0YSBhbmQgY3Jhc2guICBUaGUgc2Vjb25kIHJlcXVlc3Qgd2lsbCBoYXZlIHRoZSBhY3R1YWwgZGF0YVxyXG5cdFx0XHRhd2FpdCB0aGlzLmZ1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIkdSSURfXCIgKyB0aGlzLnV1aWQgKyBcIl9EQVRBX0NIQU5HRVNcIik7XHJcblx0XHRcdC8vIE9ubHkgcmVzaXplIHRoZSBncmlkIG9uIHRoZSBmaXJzdCBjaGFuZ2UsIG90aGVyd2lzZSB3ZSBnZXQgYSBmbGlja2VyXHJcblx0XHRcdGlmIChjaGFuZ2VzLmRhdGEuZmlyc3RDaGFuZ2UgPT09IHRydWUpXHJcblx0XHRcdFx0YXdhaXQgdGhpcy5yZXNpemVHcmlkKCk7XHJcblx0XHRcdC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlc2l6ZSBpbiB0aGUgT25Jbml0IHRvIGZpbmlzaCBiZWZvcmUgd2UgY29udGludWVcclxuXHRcdFx0dGhpcy5sb2FkZWQgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwucGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlID0gdGhpcy5yZWNvcmRzUGVyUGFnZTtcclxuXHRcdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlRGF0YSAmJiB0aGlzLnZpc2libGVEYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5ncmlkT3B0aW9ucy5hdXRvU2VsZWN0Rmlyc3RSb3cgPT09IHRydWUpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RSb3coMCk7XHJcblx0XHRcdHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX0RBVEFfQ0hBTkdFU1wiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZm5Pbk1vdXNlVXApO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgb25SZWNvcmRzUGVyUGFnZVNlbGVjdGVkKHJlY29yZHNQZXJQYWdlOiBzdHJpbmcpIHtcclxuXHRcdGlmICghcmVjb3Jkc1BlclBhZ2UpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLnJlY29yZHNQZXJQYWdlVmFsdWUgPSByZWNvcmRzUGVyUGFnZTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1JFQ09SRFNfUEVSX1BBR0VcIiwgcmVjb3Jkc1BlclBhZ2UpO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZURhdGEgPSBbXTtcclxuXHRcdHRoaXMuZ3JpZE9wYWNpdHkgPSAwO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdGF3YWl0IHRoaXMucmVzaXplR3JpZCh0cnVlKTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlID0gdGhpcy5yZWNvcmRzUGVyUGFnZTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdGF3YWl0IHRoaXMub25QYWdlQ2hhbmdlKHRoaXMuY3VycmVudFBhZ2UsIHRydWUpO1xyXG5cdH1cclxuXHJcblx0b25Db2xSZXNpemVNb3VzZWRvd24oZTogTW91c2VFdmVudCwgY29sdW1uSWR4OiBudW1iZXIpIHtcclxuXHRcdHRoaXMuaXNSZXNpemluZyA9IHRydWU7XHJcblx0XHR0aGlzLnJlc2l6ZUluaXRpYWxQb3MgPSBlLnBhZ2VYO1xyXG5cdFx0dGhpcy5yZXNpemVDb2xJZHggPSBjb2x1bW5JZHg7XHJcblx0XHRsZXQgY29sID0gKDxIVE1MVGFibGVSb3dFbGVtZW50PnRoaXMudGFibGVIZWFkZXJSb3dSZWYubmF0aXZlRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbChcInRkXCIpLml0ZW0oY29sdW1uSWR4KTtcclxuXHRcdHRoaXMucmVzaXplSW5pdGlhbFdpZHRoID0gY29sLm9mZnNldFdpZHRoIC0gOTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zW2NvbHVtbklkeF0uZmxleGlibGUgPSBmYWxzZTtcclxuXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5mbk9uTW91c2VVcCk7XHJcblx0fVxyXG5cclxuXHRvbkNvbFJlc2l6ZURvdWJsZWNsaWNrKGU6IE1vdXNlRXZlbnQsIGNvbHVtbklkeDogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zW2NvbHVtbklkeF0uZmxleGlibGUgPSB0cnVlO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1tjb2x1bW5JZHhdLndpZHRoID0gbnVsbDtcclxuXHRcdHRoaXMuc2F2ZUNvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cdH1cclxuXHJcblx0b25Db2xSZXNpemVNb3VzZW1vdmUoZTogTW91c2VFdmVudCkge1xyXG5cdFx0aWYgKCF0aGlzLmlzUmVzaXppbmcpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRsZXQgbmV3Q3Vyc29yUG9zID0gZS5wYWdlWDtcclxuXHRcdGxldCBkaWZmID0gbmV3Q3Vyc29yUG9zIC0gdGhpcy5yZXNpemVJbml0aWFsUG9zO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1t0aGlzLnJlc2l6ZUNvbElkeF0ud2lkdGggPSAodGhpcy5yZXNpemVJbml0aWFsV2lkdGggKyBkaWZmKSArIFwicHhcIjtcclxuXHRcdGlmICgodGhpcy5yZXNpemVJbml0aWFsV2lkdGggKyBkaWZmKSA8IDEwKVxyXG5cdFx0XHR0aGlzLnZpc2libGVDb2x1bW5zW3RoaXMucmVzaXplQ29sSWR4XS53aWR0aCA9IFwiMTBweFwiO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1t0aGlzLnJlc2l6ZUNvbElkeF0uZmxleGlibGUgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb25Nb3VzZVVwKGUpIHtcclxuXHRcdHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZm5Pbk1vdXNlVXApO1xyXG5cdFx0dGhpcy5zYXZlQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRWaXNpYmxlUmVjb3JkcygpIHtcclxuXHRcdHJldHVybiB0aGlzLnZpc2libGVEYXRhO1xyXG5cdH1cclxuXHJcblx0YWRkTmV3UmVjb3JkKG5ld1JlY29yZDogYW55LCBzZWxlY3ROZXdSZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0dGhpcy52aXNpYmxlRGF0YS51bnNoaWZ0KG5ld1JlY29yZCk7XHJcblxyXG5cdFx0aWYgKHNlbGVjdE5ld1JlY29yZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4KVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlUmVjb3JkKHJvd051bTogbnVtYmVyLCByZWNvcmQ6IGFueSkge1xyXG5cdFx0dGhpcy52aXNpYmxlRGF0YVtyb3dOdW1dID0gcmVjb3JkO1xyXG5cdH1cclxuXHJcblx0b25Sb3dDbGlja2VkKHJvd0RhdGE6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IGlkeDtcclxuXHRcdGNsZWFyVGltZW91dCh0aGlzLmRvdWJsZUNsaWNrV2FpdFRpbWVvdXQpO1xyXG5cdFx0dGhpcy5kb3VibGVDbGlja1dhaXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KHJvd0RhdGEpO1xyXG5cdFx0fSwgMjUwKTtcclxuXHR9XHJcblxyXG5cdG9uUm93RG91YmxlQ2xpY2tlZChyb3dEYXRhOiBhbnksIGlkeCkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gaWR4O1xyXG5cdFx0Y2xlYXJUaW1lb3V0KHRoaXMuZG91YmxlQ2xpY2tXYWl0VGltZW91dCk7XHJcblx0XHR0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdChyb3dEYXRhKTtcclxuXHR9XHJcblxyXG5cdG9uUm93Q29udGV4dE1lbnVDbGlja2VkKGU6IE1vdXNlRXZlbnQsIHJvd0RhdGEsIGlkeCkge1xyXG5cdFx0aWYgKHRoaXMub25Sb3dDb250ZXh0TWVudSkge1xyXG5cdFx0XHRsZXQgcm93Q29udGV4dE1lbnVNb2RlbCA9IHtcclxuXHRcdFx0XHRtb3VzZUV2ZW50OiBlLFxyXG5cdFx0XHRcdGRhdGE6IHJvd0RhdGEsXHJcblx0XHRcdFx0cm93SWR4OiBpZHhcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5vblJvd0NvbnRleHRNZW51LmVtaXQocm93Q29udGV4dE1lbnVNb2RlbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBvblBhZ2VDaGFuZ2UocGFnZU51bWJlciwgc2VsZWN0Um93OiBib29sZWFuID0gdHJ1ZSkge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XHJcblx0XHR0aGlzLnJlcXVlc3RNb2RlbC5wYWdlID0gcGFnZU51bWJlcjtcclxuXHRcdGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0aGlzLmdyaWRPcHRpb25zLmF1dG9TZWxlY3RGaXJzdFJvdyA9PT0gdHJ1ZSkgPyAwIDogbnVsbDtcclxuXHJcblx0XHRpZiAoc2VsZWN0Um93ID09PSB0cnVlICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKSB7XHJcblx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLnZpc2libGVEYXRhW3RoaXMuc2VsZWN0ZWRJbmRleF07XHJcblx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHR9XHJcblxyXG5cdFx0KDxIVE1MVGFibGVFbGVtZW50PnRoaXMudGFibGVSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHJlbG9hZEdyaWQoYWRkaXRpb25hbFBhcmFtczogYW55KTogUHJvbWlzZTxTbGlja0dyaWRSZXNwb25zZU1vZGVsPiB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnJlc2l6ZUdyaWQoKTtcclxuXHRcdFx0YXdhaXQgdGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFwiKTtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwudXJsID0gdGhpcy5ncmlkT3B0aW9ucy5nZXRVcmw7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmh0dHBIZWFkZXJzID0gdGhpcy5ncmlkT3B0aW9ucy5odHRwSGVhZGVycztcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuYWRkaXRpb25hbFBhcmFtcyA9IGFkZGl0aW9uYWxQYXJhbXM7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IHRoaXMucmVjb3Jkc1BlclBhZ2U7XHJcblxyXG5cdFx0XHRsZXQgcmVzcG9uc2VNb2RlbDogU2xpY2tHcmlkUmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdFx0dGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFwiKTtcclxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZU1vZGVsKTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyByZWxvYWRHcmlkV2l0aFJlcXVlc3RNb2RlbChyZXF1ZXN0TW9kZWw6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCk6IFByb21pc2U8U2xpY2tHcmlkUmVzcG9uc2VNb2RlbD4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5yZXNpemVHcmlkKCk7XHJcblx0XHRcdGF3YWl0IHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX1JFTE9BREdSSURXSVRIUkVRVUVTVE1PREVMXCIpO1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbCA9IHJlcXVlc3RNb2RlbDtcclxuXHRcdFx0dGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0XHRsZXQgcmVzcG9uc2VNb2RlbDogU2xpY2tHcmlkUmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdFx0dGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFdJVEhSRVFVRVNUTU9ERUxcIik7XHJcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2VNb2RlbCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIHJlbG9hZChyZXF1ZXN0TW9kZWw6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCk6IFByb21pc2U8U2xpY2tHcmlkUmVzcG9uc2VNb2RlbD4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FEXCIpO1xyXG5cclxuXHRcdFx0cmVxdWVzdE1vZGVsID0gdGhpcy5nZXRSZXF1ZXN0TW9kZWwodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cclxuXHRcdFx0bGV0IHJlc3BvbnNlTW9kZWw6IFNsaWNrR3JpZFJlc3BvbnNlTW9kZWwgPSBudWxsO1xyXG5cdFx0XHRpZiAocmVxdWVzdE1vZGVsLnVybClcclxuXHRcdFx0XHRyZXNwb25zZU1vZGVsID0gYXdhaXQgdGhpcy5ncmlkU2VydmljZS5nZXREYXRhRnJvbVNlcnZlcihyZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0cmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0RGF0YUZyb21EYXRhT2JqKHJlcXVlc3RNb2RlbCwgdGhpcy5kYXRhKTtcclxuXHJcblx0XHRcdHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZU1vZGVsLnRvdGFsUmVjb3JkcztcclxuXHRcdFx0dGhpcy52aXNpYmxlRGF0YSA9IHJlc3BvbnNlTW9kZWwuZGF0YTtcclxuXHJcblx0XHRcdHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX1JFTE9BRFwiKTtcclxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlTW9kZWwpO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dW5zZWxlY3RSb3coKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0Um93KHJvd051bWJlcjogbnVtYmVyKSB7XHJcblx0XHRsZXQgcm93RGF0YSA9IHRoaXMudmlzaWJsZURhdGFbcm93TnVtYmVyXTtcclxuXHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHJvd051bWJlcik7XHJcblx0fVxyXG5cclxuXHRnZXRDb2x1bW5IVE1MKHJvd0RhdGEsIGRhdGFGaWVsZE5hbWUpIHtcclxuXHRcdGNvbnN0IGNvbHVtbkhUTUwgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KHJvd0RhdGEsIGRhdGFGaWVsZE5hbWUpO1xyXG5cclxuXHRcdGlmIChjb2x1bW5IVE1MID09PSBudWxsIHx8IGNvbHVtbkhUTUwgPT09IHVuZGVmaW5lZClcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cclxuXHRcdHJldHVybiBjb2x1bW5IVE1MLnRvU3RyaW5nKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzb3J0Qnkoc29ydENvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuXHRcdFx0aWYgKHNvcnRDb2x1bW4gJiYgYy5jb2x1bW5LZXkgIT09IHNvcnRDb2x1bW4uY29sdW1uS2V5KSB7XHJcblxyXG5cdFx0XHRcdGMuc29ydERpcmVjdGlvbiA9IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24ubm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHJcblx0XHRpZiAoc29ydENvbHVtbikge1xyXG5cdFx0XHRpZiAoc29ydENvbHVtbi5zb3J0RGlyZWN0aW9uID09PSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmUpIHtcclxuXHRcdFx0XHR0aGlzLnZpc2libGVDb2x1bW5zLmZvckVhY2goYyA9PiBjLnNvcnREaXJlY3Rpb24gPSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmUpO1xyXG5cdFx0XHRcdHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbiA9IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24uYXNjO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2UgaWYgKHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbi5hc2MpXHJcblx0XHRcdFx0c29ydENvbHVtbi5zb3J0RGlyZWN0aW9uID0gU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbi5kZXNjO1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRzb3J0Q29sdW1uLnNvcnREaXJlY3Rpb24gPSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uU2VhcmNoU2VsZWN0KGRkVmFsdWUsIGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRpZiAoIXRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcylcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzID0gW107XHJcblxyXG5cdFx0bGV0IGNvbHVtblNlYXJjaFZhbHVlSWR4ID0gdGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzLmZpbmRJbmRleCh4ID0+IHguY29sdW1uTmFtZSA9PT0gY29sdW1uLmRhdGFGaWVsZE5hbWUpO1xyXG5cdFx0aWYgKGNvbHVtblNlYXJjaFZhbHVlSWR4ID49IDApXHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5zcGxpY2UoY29sdW1uU2VhcmNoVmFsdWVJZHgsIDEpO1xyXG5cclxuXHRcdGNvbHVtbi5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChkZFZhbHVlKSB7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5wdXNoKDxJU2xpY2tHcmlkUmVxdWVzdFNlYXJjaE1vZGVsPntcclxuXHRcdFx0XHRjb2x1bW5OYW1lOiBjb2x1bW4uZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRzZWFyY2hWYWx1ZUlkOiBkZFZhbHVlLmlkLFxyXG5cdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogZGRWYWx1ZS50ZXh0XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Y29sdW1uLmlzRmlsdGVyaW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb2x1bW4uaXNMb2NrZWQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uU2VhcmNoKGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdGlmICghdGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzKVxyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMgPSBbXTtcclxuXHJcblx0XHRpZiAoY29sdW1uLmZpbHRlclRleHQgPT09IGNvbHVtbi5sYXN0U2VhcmNoVGV4dClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGNvbHVtbi5sYXN0U2VhcmNoVGV4dCA9IGNvbHVtbi5maWx0ZXJUZXh0O1xyXG5cdFx0Y29sdW1uLmlzRmlsdGVyaW5nID0gISFjb2x1bW4uZmlsdGVyVGV4dDtcclxuXHRcdGlmICghY29sdW1uLmlzRmlsdGVyaW5nKVxyXG5cdFx0XHRjb2x1bW4uaXNMb2NrZWQgPSBmYWxzZTtcclxuXHJcblx0XHRjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcclxuXHRcdHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHRcdGxldCBjb2x1bW5TZWFyY2hWYWx1ZUlkeCA9IHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5maW5kSW5kZXgoeCA9PiB4LmNvbHVtbk5hbWUgPT09IGNvbHVtbi5kYXRhRmllbGROYW1lKTtcclxuXHRcdFx0aWYgKGNvbHVtblNlYXJjaFZhbHVlSWR4ID49IDApXHJcblx0XHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzLnNwbGljZShjb2x1bW5TZWFyY2hWYWx1ZUlkeCwgMSk7XHJcblxyXG5cdFx0XHRpZiAoY29sdW1uLmZpbHRlclRleHQpIHtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMucHVzaCg8SVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbD57XHJcblx0XHRcdFx0XHRjb2x1bW5OYW1lOiBjb2x1bW4uZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogY29sdW1uLmZpbHRlclRleHRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0XHRhd2FpdCB0aGlzLnJlbG9hZCh0aGlzLnJlcXVlc3RNb2RlbCk7XHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVEYXRhICYmIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmdyaWRPcHRpb25zLmF1dG9TZWxlY3RGaXJzdFJvdyA9PT0gdHJ1ZSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHRcdH0sIDI1MCk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVMb2NrKGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRjb2x1bW4uaXNMb2NrZWQgPSAhY29sdW1uLmlzTG9ja2VkO1xyXG5cclxuXHRcdHRoaXMuc2F2ZUNvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVzZXRGaWx0ZXIoY29sdW1uOiBJU2xpY2tHcmlkQ29sdW1uTW9kZWwpIHtcclxuXHRcdGNvbHVtbi5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cdFx0Y29sdW1uLmlzTG9ja2VkID0gZmFsc2U7XHJcblxyXG5cdFx0Y29sdW1uLmZpbHRlclRleHQgPSBudWxsO1xyXG5cdFx0Y29sdW1uLmxhc3RTZWFyY2hUZXh0ID0gbnVsbDtcclxuXHRcdGNvbHVtbi5maWx0ZXJEcm9wZG93blZhbHVlID0gbnVsbDtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcyA9IHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5maWx0ZXIoeCA9PiB4LmNvbHVtbk5hbWUgIT09IGNvbHVtbi5kYXRhRmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdG9wZW5Db2x1bW5TZWxlY3REaWFsb2coKSB7XHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMgPSBbLi4udGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zXTtcclxuXHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ1JlZi5zaG93RGlhbG9nKCk7XHJcblx0fVxyXG5cclxuXHRvbkNvbHVtbkRyb3AoZTogYW55KSB7XHJcblx0XHRjb25zb2xlLmxvZyhlKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uQ29sdW1uUmVvcmRlcihlOiBudW1iZXJbXSkge1xyXG5cdFx0Y29uc3Qgb2xkT3JkZXIgPSBlWzBdO1xyXG5cdFx0Y29uc3QgbmV3T3JkZXIgPSBlWzFdO1xyXG5cclxuXHRcdGlmIChvbGRPcmRlciA9PT0gbmV3T3JkZXIpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRjb25zdCBzZWxlY3RlZENvbCA9IHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucy5zcGxpY2Uob2xkT3JkZXIsIDEpWzBdO1xyXG5cdFx0c2VsZWN0ZWRDb2wuZGlzcGxheU9yZGVyID0gbmV3T3JkZXI7XHJcblxyXG5cdFx0bGV0IGN1cnJlbnRPcmRlciA9IDA7XHJcblx0XHQvLyBFdmVyeXRoaW5nIHVwIHRvIHRoZSBuZXcgb3JkZXIgcmVvcmRlcmVkIGZyb20gMFxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Ly8gSWYgd2UncmUgYXQgbmV3T3JkZXIsIGxlYXZlIGEgc3BvdFxyXG5cdFx0XHRpZiAoaSA9PT0gbmV3T3JkZXIpXHJcblx0XHRcdFx0Y3VycmVudE9yZGVyKys7XHJcblx0XHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1uc1tpXS5kaXNwbGF5T3JkZXIgPSBjdXJyZW50T3JkZXIrKztcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zLCBzZWxlY3RlZENvbF07XHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMgPSB0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMuc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpID8gMSA6IChhLmRpc3BsYXlPcmRlciA8IGIuZGlzcGxheU9yZGVyKSA/IC0xIDogMCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBhZGROZXdGYXZvcml0ZSgpIHtcclxuXHRcdHRoaXMubmV3RmF2b3JpdGVUZXh0ID0gJyc7XHJcblxyXG5cdFx0Y29uc3QgY29uZmlybVJlc3VsdCA9IGF3YWl0IHRoaXMuYWRkTmV3RmF2b3JpdGVEaWFsb2dSZWYuY29uZmlybSgpO1xyXG5cclxuXHRcdGlmIChjb25maXJtUmVzdWx0ID09PSBTbGlja0NvbmZpcm1EaWFsb2dSZXN1bHRzLk9rICYmIHRoaXMubmV3RmF2b3JpdGVUZXh0KSB7XHJcblx0XHRcdC8vIFNhdmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiB0byBsb2NhbHN0b3JhZ2VcclxuXHRcdFx0dGhpcy5zYXZlRGlhbG9nQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZhdm9yaXRlcy5wdXNoKG5ldyBEcm9wRG93bk1vZGVsKHRoaXMubmV3RmF2b3JpdGVUZXh0KSk7XHJcblxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPSB0aGlzLm5ld0Zhdm9yaXRlVGV4dDtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfU0VMRUNURURfRkFWT1JJVEVcIiwgdGhpcy5zZWxlY3RlZEZhdm9yaXRlKTtcclxuXHJcblx0XHRcdGNvbnN0IGZhdm9yaXRlc0pzb24gPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZhdm9yaXRlcy5tYXAoeCA9PiB4LnRleHQpKTtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfRkFWT1JJVEVTXCIsIGZhdm9yaXRlc0pzb24pO1xyXG5cclxuXHRcdFx0Ly8gU2F2ZSB0aGUgbmV3IG9uZSB0byBsb2NhbHN0b3JhZ2VcclxuXHRcdFx0dGhpcy5zYXZlRGlhbG9nQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsb2FkRmF2b3JpdGUoZmF2b3JpdGU6IERyb3BEb3duTW9kZWwpIHtcclxuXHRcdHRoaXMuc2F2ZURpYWxvZ0NvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cclxuXHRcdHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9IGZhdm9yaXRlLnRleHQ7XHJcblx0XHRsZXQgZ3JpZENvbHVtbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3RoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAnXycgKyB0aGlzLnNlbGVjdGVkRmF2b3JpdGV9YCk7XHJcblx0XHRpZiAoZ3JpZENvbHVtbnNKc29uKSB7XHJcblx0XHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucyA9IDxJU2xpY2tHcmlkQ29sdW1uTW9kZWxbXT5KU09OLnBhcnNlKGdyaWRDb2x1bW5zSnNvbik7XHJcblx0XHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldEZhdm9yaXRlKGZhdm9yaXRlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9IGZhdm9yaXRlO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfU0VMRUNURURfRkFWT1JJVEVcIiwgdGhpcy5zZWxlY3RlZEZhdm9yaXRlKTtcclxuXHJcblx0XHRsZXQgZ3JpZENvbHVtbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3RoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAnXycgKyB0aGlzLnNlbGVjdGVkRmF2b3JpdGV9YCk7XHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMgPSA8SVNsaWNrR3JpZENvbHVtbk1vZGVsW10+SlNPTi5wYXJzZShncmlkQ29sdW1uc0pzb24pO1xyXG5cdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLnNvcnQoKGEsIGIpID0+IChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSA/IDEgOiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikgPyAtMSA6IDApO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy52aXNpYmxlID09PSB0cnVlKTtcclxuXHRcdHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLnZpc2libGVDb2x1bW5zLnNvcnQoKGEsIGIpID0+IChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSA/IDEgOiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikgPyAtMSA6IDApO1xyXG5cdFx0dGhpcy5zaG93U2VhcmNoUm93ID0gdGhpcy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpbHRlclR5cGUgIT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLm5vbmUpLmxlbmd0aCA+IDA7XHJcblxyXG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblx0XHR0aGlzLnJlcXVlc3RNb2RlbC5wYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlID0gdGhpcy5yZWNvcmRzUGVyUGFnZTtcclxuXHRcdGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHR9XHJcblxyXG5cdG9uU2F2ZUNvbHVtbnMoKSB7XHJcblx0XHR0aGlzLnNhdmVEaWFsb2dDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zXTtcclxuXHJcblx0XHQvLyBNYWtlIHN1cmUgaWYgdGhleSd2ZSBoaWRkZW4gYSBjb2x1bW4gdGhhdCB3ZSBhcmVuJ3QgdHJ5aW5nIHRvIHNvcnQgb3IgZmlsdGVyIGJ5IHRoaXMgY29sdW1uXHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0aWYgKHgudmlzaWJsZSA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHR4LmZpbHRlckRyb3Bkb3duVmFsdWUgPSBudWxsO1xyXG5cdFx0XHRcdHguZmlsdGVyVGV4dCA9IG51bGw7XHJcblx0XHRcdFx0eC5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdHguaXNMb2NrZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR4Lmxhc3RTZWFyY2hUZXh0ID0gbnVsbDtcclxuXHRcdFx0XHR4LnNvcnREaXJlY3Rpb24gPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihjID0+IGMudmlzaWJsZSA9PT0gdHJ1ZSk7XHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHRcdHRoaXMuc2hvd1NlYXJjaFJvdyA9IHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWx0ZXJUeXBlICE9PSBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcy5ub25lKS5sZW5ndGggPiAwO1xyXG5cclxuXHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nUmVmLmhpZGVEaWFsb2coKTtcclxuXHRcdHRoaXMucmVzaXplR3JpZCgpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRmF2b3JpdGVzTW9kaWZpZWQpIHtcclxuXHRcdFx0Y29uc3QgZ3JpZEZhdm9yaXRlczogSVNsaWNrR3JpZEZhdm9yaXRlTW9kZWxbXSA9IHRoaXMuZmF2b3JpdGVzLm1hcChmYXZvcml0ZSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZ3JpZEZhdm9yaXRlID0gbmV3IFNsaWNrR3JpZEZhdm9yaXRlTW9kZWwoKTtcclxuXHRcdFx0XHRncmlkRmF2b3JpdGUuZmF2b3JpdGVOYW1lID0gZmF2b3JpdGUudGV4dDtcclxuXHRcdFx0XHRjb25zdCBzdWZmaXggPSBncmlkRmF2b3JpdGUuZmF2b3JpdGVOYW1lID09PSAnRGVmYXVsdCcgPyAnJyA6ICgnXycgKyBncmlkRmF2b3JpdGUuZmF2b3JpdGVOYW1lKTtcclxuXHRcdFx0XHRjb25zdCBkaWFsb2dDb2x1bW5zSlNPTiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9DT0xVTU5TJHtzdWZmaXh9YCk7XHJcblx0XHRcdFx0Z3JpZEZhdm9yaXRlLmNvbHVtbnMgPSBKU09OLnBhcnNlKGRpYWxvZ0NvbHVtbnNKU09OKTtcclxuXHRcdFx0XHRyZXR1cm4gZ3JpZEZhdm9yaXRlO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdHRoaXMub25GYXZvcml0ZXNNb2RpZmllZC5lbWl0KGdyaWRGYXZvcml0ZXMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25DYW5jZWxDb2x1bW5zKCkge1xyXG5cdFx0dGhpcy5jb2x1bW5TZWxlY3REaWFsb2dSZWYuaGlkZURpYWxvZygpO1xyXG5cdH1cclxuXHJcblx0c2F2ZURpYWxvZ0NvbHVtbnNUb0xvY2FsU3RvcmFnZSgpIHtcclxuXHRcdGxldCBkaWFsb2dDb2x1bW5zSlNPTiA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucyk7XHJcblx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5KSB7XHJcblx0XHRcdGNvbnN0IHN1ZmZpeCA9IHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAoJ18nICsgdGhpcy5zZWxlY3RlZEZhdm9yaXRlKTtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3N1ZmZpeH1gLCBkaWFsb2dDb2x1bW5zSlNPTik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzYXZlQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCkge1xyXG5cdFx0bGV0IGdyaWRDb2x1bW5zSlNPTiA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucyk7XHJcblx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5KSB7XHJcblx0XHRcdGNvbnN0IHN1ZmZpeCA9IHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAoJ18nICsgdGhpcy5zZWxlY3RlZEZhdm9yaXRlKTtcclxuXHJcblx0XHRcdGxldCBncmlkQ29sdW1uc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWApO1xyXG5cdFx0XHRcclxuXHRcdFx0aWYgKGdyaWRDb2x1bW5zSnNvbikge1xyXG5cdFx0XHRcdGxldCBjb2x1bW5zID0gPElTbGlja0dyaWRDb2x1bW5Nb2RlbFtdPkpTT04ucGFyc2UoZ3JpZENvbHVtbnNKc29uKTtcclxuXHJcblx0XHRcdFx0bGV0IGRpc3BsYXlPcmRlciA9IDA7XHJcblx0XHRcdFx0Y29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGNvbHVtbiA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maW5kKGdyaWRDb2x1bW4gPT4gZ3JpZENvbHVtbi5kYXRhRmllbGROYW1lID09PSBjLmRhdGFGaWVsZE5hbWUpO1xyXG5cdFx0XHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRjLmRpc3BsYXlPcmRlciA9IGRpc3BsYXlPcmRlcjtcclxuXHRcdFx0XHRcdFx0Yy50aXRsZU9yaWVudGF0aW9uID0gY29sdW1uLnRpdGxlT3JpZW50YXRpb247XHJcblx0XHRcdFx0XHRcdGMudGl0bGVIZWlnaHQgPSBjb2x1bW4udGl0bGVIZWlnaHQ7XHJcblx0XHRcdFx0XHRcdGMud2lkdGggPSBjb2x1bW4ud2lkdGg7XHJcblx0XHRcdFx0XHRcdGMuZmlsdGVyRHJvcGRvd25WYWx1ZSA9IGNvbHVtbi5maWx0ZXJEcm9wZG93blZhbHVlO1xyXG5cdFx0XHRcdFx0XHRjLmZpbHRlclRleHQgPSBjb2x1bW4uZmlsdGVyVGV4dDtcclxuXHRcdFx0XHRcdFx0Yy5pc0xvY2tlZCA9IGNvbHVtbi5pc0xvY2tlZDtcclxuXHRcdFx0XHRcdFx0Yy5pc0ZpbHRlcmluZyA9IGNvbHVtbi5pc0ZpbHRlcmluZztcclxuXHRcdFx0XHRcdFx0Yy5zb3J0RGlyZWN0aW9uID0gY29sdW1uLnNvcnREaXJlY3Rpb247XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0ZGlzcGxheU9yZGVyKys7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Y29sdW1ucyA9IGNvbHVtbnMuc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpID8gMSA6IChhLmRpc3BsYXlPcmRlciA8IGIuZGlzcGxheU9yZGVyKSA/IC0xIDogMCk7XHJcblx0XHRcdFx0Z3JpZENvbHVtbnNKU09OID0gSlNPTi5zdHJpbmdpZnkoY29sdW1ucyk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9DT0xVTU5TJHtzdWZmaXh9YCwgZ3JpZENvbHVtbnNKU09OKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5vbkZhdm9yaXRlc01vZGlmaWVkKSB7XHJcblx0XHRcdGNvbnN0IGdyaWRGYXZvcml0ZXM6IElTbGlja0dyaWRGYXZvcml0ZU1vZGVsW10gPSB0aGlzLmZhdm9yaXRlcy5tYXAoZmF2b3JpdGUgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGdyaWRGYXZvcml0ZSA9IG5ldyBTbGlja0dyaWRGYXZvcml0ZU1vZGVsKCk7XHJcblx0XHRcdFx0Z3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSA9IGZhdm9yaXRlLnRleHQ7XHJcblx0XHRcdFx0Y29uc3Qgc3VmZml4ID0gZ3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAoJ18nICsgZ3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSk7XHJcblx0XHRcdFx0Y29uc3QgZGlhbG9nQ29sdW1uc0pTT04gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWApO1xyXG5cdFx0XHRcdGdyaWRGYXZvcml0ZS5jb2x1bW5zID0gSlNPTi5wYXJzZShkaWFsb2dDb2x1bW5zSlNPTik7XHJcblx0XHRcdFx0cmV0dXJuIGdyaWRGYXZvcml0ZTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHR0aGlzLm9uRmF2b3JpdGVzTW9kaWZpZWQuZW1pdChncmlkRmF2b3JpdGVzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHRwcml2YXRlIGFzeW5jIHJlc2l6ZUdyaWQoZm9yY2VSZWZyZXNoOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRpZiAoIWZvcmNlUmVmcmVzaCAmJiB0aGlzLnNsaWNrR3JpZFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA9PT0gdGhpcy5zbGlja0dyaWRIZWlnaHQpIHtcclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5yZWNvcmRzUGVyUGFnZVZhbHVlID09PSAnQXV0bycpIHtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLmZ1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIkdSSURfXCIgKyB0aGlzLnV1aWQgKyBcIl9SRVNJWkVHUklEXCIpO1xyXG5cclxuXHRcdFx0XHR0aGlzLnNsaWNrR3JpZEhlaWdodCA9IHRoaXMudGFibGVDb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblxyXG5cdFx0XHRcdGNvbnN0IHRlc3RSb3cgPSAoPEhUTUxUYWJsZUVsZW1lbnQ+dGhpcy50YWJsZVJlZi5uYXRpdmVFbGVtZW50KS5pbnNlcnRSb3coMCk7XHJcblx0XHRcdFx0Y29uc3QgdGVzdENlbGwgPSB0ZXN0Um93Lmluc2VydENlbGwoMCk7XHJcblx0XHRcdFx0dGVzdENlbGwuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XHJcblx0XHRcdFx0dGVzdENlbGwuaW5uZXJIVE1MID0gXCImTkJTUFwiO1xyXG5cdFx0XHRcdGNvbnN0IHJvd0hlaWdodCA9IHRlc3RDZWxsLm9mZnNldEhlaWdodDtcclxuXHRcdFx0XHQoPEhUTUxUYWJsZUVsZW1lbnQ+dGhpcy50YWJsZVJlZi5uYXRpdmVFbGVtZW50KS5kZWxldGVSb3coMCk7XHJcblxyXG5cdFx0XHRcdGxldCBoZWFkZXJIZWlnaHQgPSB0aGlzLnRhYmxlSGVhZGVyUm93UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgMjtcclxuXHRcdFx0XHRpZiAodGhpcy50YWJsZUhlYWRlclNlYXJjaFJvd1JlZilcclxuXHRcdFx0XHRcdGhlYWRlckhlaWdodCArPSB0aGlzLnRhYmxlSGVhZGVyU2VhcmNoUm93UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgMjtcclxuXHRcdFx0XHRjb25zdCBjbGllbnRIZWlnaHQgPSB0aGlzLnRhYmxlQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gaGVhZGVySGVpZ2h0O1xyXG5cdFx0XHRcdHRoaXMucmVjb3Jkc1BlclBhZ2UgPSBwYXJzZUludCgoKGNsaWVudEhlaWdodCAvIHJvd0hlaWdodCkgLSAxKS50b0ZpeGVkKDApKTtcclxuXHRcdFx0XHRsZXQgYWN0dWFsUm93SGVpZ2h0ID0gcGFyc2VJbnQoKGNsaWVudEhlaWdodCAvIHRoaXMucmVjb3Jkc1BlclBhZ2UpLnRvRml4ZWQoMCkpIC0gMTtcclxuXHRcdFx0XHRpZiAoYWN0dWFsUm93SGVpZ2h0IDwgcm93SGVpZ2h0KVxyXG5cdFx0XHRcdFx0YWN0dWFsUm93SGVpZ2h0ID0gcm93SGVpZ2h0O1xyXG5cclxuXHRcdFx0XHRjb25zdCBhbGxSb3dzID0gPEhUTUxFbGVtZW50W10+dGhpcy5zbGlja0dyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYmxlIHRib2R5IHRyXCIpO1xyXG5cdFx0XHRcdGFsbFJvd3MuZm9yRWFjaChyb3cgPT4ge1xyXG5cdFx0XHRcdFx0cm93LnN0eWxlLmhlaWdodCA9IChhY3R1YWxSb3dIZWlnaHQpICsgXCJweFwiO1xyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLmZ1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIkdSSURfXCIgKyB0aGlzLnV1aWQgKyBcIl9SRVNJWkVHUklEXCIpO1xyXG5cclxuXHRcdFx0XHR0aGlzLmdyaWRPcGFjaXR5ID0gMTtcclxuXHRcdFx0XHR0aGlzLnNob3dUZXN0Um93ID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdFx0XHR0aGlzLnJlY29yZHNQZXJQYWdlID0gcGFyc2VJbnQodGhpcy5yZWNvcmRzUGVyUGFnZVZhbHVlKTtcclxuXHRcdFx0XHR0aGlzLmdyaWRPcGFjaXR5ID0gMTtcclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0YWRkQ29sdW1uKGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsLCBpZHg6IG51bWJlciA9IG51bGwpIHtcclxuXHJcblx0XHRpZiAoaWR4ID09PSBudWxsKVxyXG5cdFx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuc3BsaWNlKGlkeCwgMCwgY29sdW1uKTtcclxuXHJcblx0XHR0aGlzLnNldEdyaWRPcHRpb25zKHRoaXMuZ3JpZE9wdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0Z2V0UmVxdWVzdE1vZGVsKHJlcXVlc3RNb2RlbDogU2xpY2tHcmlkUmVxdWVzdE1vZGVsID0gbnVsbCk6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCB7XHJcblx0XHRpZiAoIXJlcXVlc3RNb2RlbClcclxuXHRcdFx0cmVxdWVzdE1vZGVsID0gdGhpcy5yZXF1ZXN0TW9kZWw7XHJcblxyXG5cdFx0cmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcyA9IFtdO1xyXG5cclxuXHRcdHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG5cdFx0XHRpZiAoYy52aXNpYmxlKSB7XHJcblx0XHRcdFx0aWYgKGMuZmlsdGVyVHlwZSA9PT0gU2xpY2tHcmlkQ29sdW1uRmlsdGVyVHlwZXMudGV4dCAmJiBjLmZpbHRlclRleHQpIHtcclxuXHRcdFx0XHRcdGMuZmlsdGVyVGV4dCA9IGMuZmlsdGVyVGV4dDtcclxuXHRcdFx0XHRcdHJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMucHVzaCg8SVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbD57XHJcblx0XHRcdFx0XHRcdGNvbHVtbk5hbWU6IGMuZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdFx0c2VhcmNoVmFsdWVJZDogbnVsbCxcclxuXHRcdFx0XHRcdFx0c2VhcmNoVmFsdWVUZXh0OiBjLmZpbHRlclRleHRcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNlIGlmIChjLmZpbHRlclR5cGUgPT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLmRyb3Bkb3duICYmIGMuZmlsdGVyRHJvcGRvd25WYWx1ZSkge1xyXG5cdFx0XHRcdFx0Yy5maWx0ZXJEcm9wZG93blZhbHVlID0gYy5maWx0ZXJEcm9wZG93blZhbHVlO1xyXG5cdFx0XHRcdFx0cmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5wdXNoKDxJU2xpY2tHcmlkUmVxdWVzdFNlYXJjaE1vZGVsPntcclxuXHRcdFx0XHRcdFx0Y29sdW1uTmFtZTogYy5kYXRhRmllbGROYW1lLFxyXG5cdFx0XHRcdFx0XHRzZWFyY2hWYWx1ZUlkOiBjLmZpbHRlckRyb3Bkb3duVmFsdWUsXHJcblx0XHRcdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogbnVsbFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXF1ZXN0TW9kZWwuc29ydENvbHVtbiA9IG51bGw7XHJcblx0XHRjb25zdCBzb3J0Q29sdW1uID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZpbmQoeCA9PiB4LnNvcnREaXJlY3Rpb24gPT09IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24uYXNjIHx8IHguc29ydERpcmVjdGlvbiA9PT0gU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbi5kZXNjKTtcclxuXHRcdGlmIChzb3J0Q29sdW1uKSB7XHJcblx0XHRcdHJlcXVlc3RNb2RlbC5zb3J0Q29sdW1uID0gKHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gMCkgPyBudWxsIDogc29ydENvbHVtbi5kYXRhRmllbGROYW1lO1xyXG5cdFx0XHRyZXF1ZXN0TW9kZWwuc29ydERpcmVjdGlvbiA9IHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAocmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlIDw9IDApXHJcblx0XHRcdHJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IDIwO1xyXG5cclxuXHRcdHJldHVybiB0aGlzLnJlcXVlc3RNb2RlbDtcclxuXHR9XHJcblxyXG5cdHNldEdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBJU2xpY2tHcmlkT3B0aW9ucykge1xyXG5cdFx0dGhpcy5ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xyXG5cclxuXHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXkpIHtcclxuXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmZhdm9yaXRlcykge1xyXG5cdFx0XHRcdGNvbnN0IGZhdm9yaXRlTmFtZXMgPSB0aGlzLmdyaWRPcHRpb25zLmZhdm9yaXRlcy5tYXAoZiA9PiBmLmZhdm9yaXRlTmFtZSk7XHJcblx0XHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0ZBVk9SSVRFU2AsIEpTT04uc3RyaW5naWZ5KGZhdm9yaXRlTmFtZXMpKTtcclxuXHJcblx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5mYXZvcml0ZXMuZm9yRWFjaChmYXZvcml0ZSA9PiB7XHJcblx0XHRcdFx0XHQvLyBNYWtlIHN1cmUgd2UgaGF2ZW4ndCBhZGRlZCBhIG5ldyBjb2x1bW4gdGhhdCBuZWVkcyB0byBiZSBzYXZlZFxyXG5cdFx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGNvbHVtbkV4aXN0cyA9IGZhdm9yaXRlLmNvbHVtbnMuZmluZEluZGV4KHggPT4geC5kYXRhRmllbGROYW1lID09PSBjLmRhdGFGaWVsZE5hbWUpO1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uRXhpc3RzIDwgMClcclxuXHRcdFx0XHRcdFx0XHRmYXZvcml0ZS5jb2x1bW5zLnB1c2goYyk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdGxldCBncmlkQ29sdW1uc0pTT04gPSBKU09OLnN0cmluZ2lmeShmYXZvcml0ZS5jb2x1bW5zKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXkpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3Qgc3VmZml4ID0gZmF2b3JpdGUuZmF2b3JpdGVOYW1lID09PSAnRGVmYXVsdCcgPyAnJyA6ICgnXycgKyBmYXZvcml0ZS5mYXZvcml0ZU5hbWUpO1xyXG5cdFx0XHRcdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWAsIGdyaWRDb2x1bW5zSlNPTik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdGlmIChmYXZvcml0ZU5hbWVzLmluZGV4T2YodGhpcy5zZWxlY3RlZEZhdm9yaXRlKSA8IDApXHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPSBcIkRlZmF1bHRcIjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5zZWxlY3RlZEZhdm9yaXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfU0VMRUNURURfRkFWT1JJVEVcIikgfHwgJ0RlZmF1bHQnO1xyXG5cclxuXHRcdFx0Ly8gQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgYW55IGR1cGxpY2F0ZSBjb2x1bW4gbmFtZXNcclxuXHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goYzEgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGFGaWVsZENvdW50ID0gKHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmRhdGFGaWVsZE5hbWUgPT09IGMxLmRhdGFGaWVsZE5hbWUpIHx8IFtdKS5sZW5ndGg7XHJcblx0XHRcdFx0aWYgKGRhdGFGaWVsZENvdW50ID4gMSlcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoYEdyaWQgJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9IGNvbHVtbiAke2MxLmRhdGFGaWVsZE5hbWV9IGlzIGRlZmluZWQgJHtkYXRhRmllbGRDb3VudH0gdGltZXNgKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHRjb25zdCBzdWZmaXggPSB0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPT09ICdEZWZhdWx0JyA/ICcnIDogKCdfJyArIHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSk7XHJcblx0XHRcdGxldCBncmlkQ29sdW1uc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWApO1xyXG5cdFx0XHRpZiAoZ3JpZENvbHVtbnNKc29uKSB7XHJcblx0XHRcdFx0bGV0IGNvbHVtbnMgPSA8SVNsaWNrR3JpZENvbHVtbk1vZGVsW10+SlNPTi5wYXJzZShncmlkQ29sdW1uc0pzb24pO1xyXG5cclxuXHRcdFx0XHRsZXQgZGlzcGxheU9yZGVyID0gMDtcclxuXHRcdFx0XHRjb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcblx0XHRcdFx0XHRsZXQgY29sdW1uID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZpbmQoZ3JpZENvbHVtbiA9PiBncmlkQ29sdW1uLmRhdGFGaWVsZE5hbWUgPT09IGMuZGF0YUZpZWxkTmFtZSk7XHJcblx0XHRcdFx0XHRpZiAoY29sdW1uKSB7XHJcblx0XHRcdFx0XHRcdGNvbHVtbi52aXNpYmxlID0gYy52aXNpYmxlO1xyXG5cdFx0XHRcdFx0XHRjb2x1bW4uZGlzcGxheU9yZGVyID0gZGlzcGxheU9yZGVyO1xyXG5cdFx0XHRcdFx0XHRjb2x1bW4udGl0bGVPcmllbnRhdGlvbiA9IGMudGl0bGVPcmllbnRhdGlvbjtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLnRpdGxlSGVpZ2h0ID0gYy50aXRsZUhlaWdodDtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLndpZHRoID0gYy53aWR0aDtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLmZsZXhpYmxlID0gYy5mbGV4aWJsZTtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLnNvcnREaXJlY3Rpb24gPSBjLnNvcnREaXJlY3Rpb247XHJcblx0XHRcdFx0XHRcdGNvbHVtbi5pc0xvY2tlZCA9IGMuaXNMb2NrZWQ7XHJcblx0XHRcdFx0XHRcdC8vY29sdW1uLmZpbHRlclR5cGUgPSBjLmZpbHRlclR5cGU7XHJcblx0XHRcdFx0XHRcdGlmIChjb2x1bW4uaXNMb2NrZWQgJiYgY29sdW1uLmZpbHRlclR5cGUgIT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLm5vbmUpIHtcclxuXHRcdFx0XHRcdFx0XHRjb2x1bW4uaXNGaWx0ZXJpbmcgPSB0cnVlO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoY29sdW1uLmZpbHRlclR5cGUgPT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLnRleHQpXHJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW4uZmlsdGVyVGV4dCA9IGMuZmlsdGVyVGV4dDtcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChjb2x1bW4uZmlsdGVyVHlwZSA9PT0gU2xpY2tHcmlkQ29sdW1uRmlsdGVyVHlwZXMuZHJvcGRvd24pXHJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW4uZmlsdGVyRHJvcGRvd25WYWx1ZSA9IGMuZmlsdGVyRHJvcGRvd25WYWx1ZTtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKCFjb2x1bW4uZmlsdGVyVGV4dCAmJiAhY29sdW1uLmZpbHRlckRyb3Bkb3duVmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbi5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLmlzTG9ja2VkID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW4uZmlsdGVyVGV4dCA9IG51bGw7XHJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW4uZmlsdGVyRHJvcGRvd25WYWx1ZSA9IG51bGw7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0ZGlzcGxheU9yZGVyKys7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmRlZmF1bHRSZWNvcmRzUGVyUGFnZSAmJiAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfUkVDT1JEU19QRVJfUEFHRVwiKSlcclxuXHRcdFx0XHR0aGlzLnJlY29yZHNQZXJQYWdlVmFsdWUgPSB0aGlzLmdyaWRPcHRpb25zLmRlZmF1bHRSZWNvcmRzUGVyUGFnZS50b1N0cmluZygpO1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5yZWNvcmRzUGVyUGFnZVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfUkVDT1JEU19QRVJfUEFHRVwiKSB8fCBcIkF1dG9cIjtcclxuXHJcblx0XHRcdGNvbnN0IGZhdm9yaXRlc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkdSSURfXCIgKyB0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXkgKyBcIl9GQVZPUklURVNcIikgfHwgYFtcIkRlZmF1bHRcIl1gO1xyXG5cdFx0XHR0aGlzLmZhdm9yaXRlcyA9ICg8c3RyaW5nW10+SlNPTi5wYXJzZShmYXZvcml0ZXNKc29uKSkubWFwKGZhdm9yaXRlID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gbmV3IERyb3BEb3duTW9kZWwoZmF2b3JpdGUpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihjID0+IGMudmlzaWJsZSA9PT0gdHJ1ZSk7XHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLnNob3dTZWFyY2hSb3cgPSB0aGlzLnZpc2libGVDb2x1bW5zLmZpbHRlcihjID0+IGMuZmlsdGVyVHlwZSAhPT0gU2xpY2tHcmlkQ29sdW1uRmlsdGVyVHlwZXMubm9uZSkubGVuZ3RoID4gMDtcclxuXHRcdGxldCBzb3J0Q29sdW1uID0gdGhpcy52aXNpYmxlQ29sdW1ucy5maW5kKGMgPT4gYy5zb3J0YWJsZSA9PT0gdHJ1ZSAmJiBjLnNvcnREaXJlY3Rpb24gPiAwKTtcclxuXHRcdGlmICh0aGlzLnZpc2libGVDb2x1bW5zLmxlbmd0aCA+IDAgJiYgc29ydENvbHVtbikge1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5zb3J0Q29sdW1uID0gc29ydENvbHVtbi5kYXRhRmllbGROYW1lO1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5zb3J0RGlyZWN0aW9uID0gc29ydENvbHVtbi5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0fVxyXG5cdH1cclxufSIsIjxkaXYgaWQ9XCJzbGljay1ncmlkX3t7dXVpZH19XCIgY2xhc3M9XCJzbGljay1ncmlkIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWZpbGxcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwO1wiICNzbGlja0dyaWQ+XHJcblx0PGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJkLWZsZXggZmxleC1maWxsXCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiPlxyXG5cclxuXHRcdDxkaXY+XHJcblx0XHRcdDx0YWJsZSAjdGFibGVSZWYgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbVwiIFtjbGFzcy50YWJsZS1ib3JkZXJlZF09XCJib3JkZXJlZFwiIFtjbGFzcy50YWJsZS1ib3JkZXJsZXNzXT1cIiFib3JkZXJlZFwiIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIiBbY2xhc3MudGFibGUtaG92ZXJdPVwiaG92ZXJcIiBbc3R5bGUub3BhY2l0eV09XCJncmlkT3BhY2l0eVwiIHN0eWxlPVwibWFyZ2luOiAwOyBwYWRkaW5nOiAwO1wiIChrZXlkb3duKT1cInRhYmxlS2V5ZG93bigkZXZlbnQpXCIgdGFiaW5kZXg9XCIwXCI+XHJcblx0XHRcdFx0PHRoZWFkPlxyXG5cdFx0XHRcdFx0PHRyICN0YWJsZUhlYWRlclJvdyAobW91c2Vtb3ZlKT1cIm9uQ29sUmVzaXplTW91c2Vtb3ZlKCRldmVudClcIiBbbmdDbGFzc109XCJ7ICdyZXNpemluZyc6IGlzUmVzaXppbmcgPT09IHRydWUgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgbGV0IGlkeCA9IGluZGV4XCIgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiIFtzdHlsZS5tYXhXaWR0aF09XCJjb2x1bW4ud2lkdGhcIiBbc3R5bGUuaGVpZ2h0XT1cImNvbHVtbi50aXRsZUhlaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgW25nQ2xhc3NdPVwieyAnc2xpY2stZ3JpZF90aXRsZS12ZXJ0aWNhbCcgOiBjb2x1bW4udGl0bGVPcmllbnRhdGlvbiA9PT0gMSB9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaWR4ID4gMCAmJiBpZHggPCB2aXNpYmxlQ29sdW1ucy5sZW5ndGhcIiBjbGFzcz1cInJlc2l6ZV9jb2x1bW5fbGVmdFwiIFtjbGFzcy50YWJsZS1ib3JkZXJlZF09XCJib3JkZXJlZFwiIChtb3VzZWRvd24pPVwib25Db2xSZXNpemVNb3VzZWRvd24oJGV2ZW50LCBpZHggLSAxKVwiIChkYmxjbGljayk9XCJvbkNvbFJlc2l6ZURvdWJsZWNsaWNrKCRldmVudCwgaWR4IC0gMSlcIj48L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic29ydEljb25cIiAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZSA9PT0gdHJ1ZSAmJiBjb2x1bW4uc29ydERpcmVjdGlvbiA+IDBcIj48aSBjbGFzcz1cImZhclwiIFtuZ0NsYXNzXT1cInsnZmEtY2FyZXQtdXAnOiBjb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gMSwgJ2ZhLWNhcmV0LWRvd24nOiBjb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gMn1cIj48L2k+Jm5ic3A7PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiICpuZ0lmPVwiY29sdW1uLnNvcnRhYmxlID09PSB0cnVlXCIgKGNsaWNrKT1cInNvcnRCeShjb2x1bW4pXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiB0aXRsZT1cInt7Y29sdW1uLnRpdGxlfX1cIj57e2NvbHVtbi50aXRsZX19PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZSA9PT0gZmFsc2VcIiB0aXRsZT1cInt7Y29sdW1uLnRpdGxlfX1cIj57e2NvbHVtbi50aXRsZX19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVzaXplX2NvbHVtbl9yaWdodFwiIChtb3VzZWRvd24pPVwib25Db2xSZXNpemVNb3VzZWRvd24oJGV2ZW50LCBpZHgpXCIgKGRibGNsaWNrKT1cIm9uQ29sUmVzaXplRG91YmxlY2xpY2soJGV2ZW50LCBpZHgpXCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdFx0PHRyICN0YWJsZUhlYWRlclNlYXJjaFJvdyAqbmdJZj1cInNob3dTZWFyY2hSb3cgPT09IHRydWVcIj5cclxuXHRcdFx0XHRcdFx0PHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2xpY2stZ3JpZF9zZWFyY2gtY29sdW1uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSAqbmdJZj1cImNvbHVtbi5pc0ZpbHRlcmluZ1wiIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBiZy13aGl0ZSB0ZXh0LWRhbmdlciBtci0xXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVyKGNvbHVtbilcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSAqbmdJZj1cImNvbHVtbi5pc0ZpbHRlcmluZyAmJiBjb2x1bW4uaXNMb2NrZWRcIiBjbGFzcz1cImZhciBmYS1sb2NrIG1yLTFcIiAoY2xpY2spPVwidG9nZ2xlTG9jayhjb2x1bW4pXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgKm5nSWY9XCJjb2x1bW4uaXNGaWx0ZXJpbmcgJiYgIWNvbHVtbi5pc0xvY2tlZFwiIGNsYXNzPVwiZmFyIGZhLWxvY2stb3BlbiBtci0xXCIgKGNsaWNrKT1cInRvZ2dsZUxvY2soY29sdW1uKVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJjb2x1bW4uZmlsdGVyVHlwZSA9PT0gMVwiIGNsYXNzPVwic2xpY2stZ3JpZF90ZXh0LXNlYXJjaFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgYXV0b2NvbXBsZXRlPVwibm9wZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImNvbHVtbi5maWx0ZXJUZXh0XCIgbmFtZT1cInNlYXJjaFRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIm9uU2VhcmNoKGNvbHVtbilcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImNvbHVtbi5maWx0ZXJUeXBlID09PSAyXCIgY2xhc3M9XCJpbnB1dC1ncm91cCBzbGljay1ncmlkX2Ryb3AtZG93bi1zZWFyY2hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNsaWNrLWRyb3AtZG93biBbaXRlbXNdPVwiY29sdW1uLmZpbHRlckRyb3Bkb3duVmFsdWVzXCIgWyhuZ01vZGVsKV09XCJjb2x1bW4uZmlsdGVyRHJvcGRvd25WYWx1ZVwiIGxpc3RXaWR0aD1cImF1dG9cIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChvblNlbGVjdCk9XCJvblNlYXJjaFNlbGVjdCgkZXZlbnQsIGNvbHVtbilcIj48L3NsaWNrLWRyb3AtZG93bj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PC90cj5cclxuXHRcdFx0XHQ8L3RoZWFkPlxyXG5cclxuXHRcdFx0XHQ8dGJvZHk+XHJcblx0XHRcdFx0XHQ8dHIgKm5nSWY9XCJsb2FkZWQgJiYgdmlzaWJsZURhdGEubGVuZ3RoID09PSAwXCI+PHRkIFtjb2xTcGFuXT1cInZpc2libGVDb2x1bW5zLmxlbmd0aFwiPk5vIERhdGE8L3RkPjwvdHI+XHJcblx0XHRcdFx0XHQ8dHIgKm5nRm9yPVwibGV0IHJvd0RhdGEgb2YgdmlzaWJsZURhdGE7IGxldCBpZHggPSBpbmRleFwiICN0YWJsZUJvZHlSb3dzIChjbGljayk9XCJvblJvd0NsaWNrZWQocm93RGF0YSwgaWR4KVwiIChkYmxjbGljayk9XCJvblJvd0RvdWJsZUNsaWNrZWQocm93RGF0YSwgaWR4KVwiIChjb250ZXh0bWVudSk9XCJvblJvd0NvbnRleHRNZW51Q2xpY2tlZCgkZXZlbnQsIHJvd0RhdGEsIGlkeClcIiBbY2xhc3MudGFibGUtc3VjY2Vzc109XCJzZWxlY3RlZEluZGV4ID09PSBpZHhcIj5cclxuXHRcdFx0XHRcdFx0PHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWNvbHVtbi5jb2x1bW5LZXlcIiBjbGFzcz1cInNsaWNrLWdyaWRfY29sdW1uLWNvbnRlbnRcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCIgW3N0eWxlLm1heFdpZHRoXT1cImNvbHVtbi53aWR0aFwiIFtpbm5lckhUTUxdPVwiZ2V0Q29sdW1uSFRNTChyb3dEYXRhLCBjb2x1bW4uZGF0YUZpZWxkTmFtZSkgfCBzbGlja0dyaWRTYW5pdGl6ZUh0bWxcIj48L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiY29sdW1uLmNvbHVtbktleVwiIGNsYXNzPVwic2xpY2stZ3JpZF9jb2x1bW4tY29udGVudFwiIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIiBbc3R5bGUubWF4V2lkdGhdPVwiY29sdW1uLndpZHRoXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZzW2NvbHVtbi5jb2x1bW5LZXldLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93RGF0YSB9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDwvdHI+XHJcblx0XHRcdFx0PC90Ym9keT5cclxuXHRcdFx0PC90YWJsZT5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHJcblx0PGRpdiBjbGFzcz1cInNsaWNrLWdyaWQtZm9vdGVyIG10LTIgZC1mbGV4XCI+XHJcblx0XHQ8ZGl2PlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkNvbHVtblNlbGVjdERpYWxvZygpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNvbHVtbnNcIj48L2k+PC9idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgKm5nSWY9XCJmYXZvcml0ZXM/Lmxlbmd0aCA+IDFcIj5cclxuXHRcdFx0PGJ1dHRvbiAjZmF2b3JpdGVTZWxlY3RSZWYgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWwtMVwiPjxpIGNsYXNzPVwiZmFyIGZhLXN0YXJcIj48L2k+IHt7dGhpcy5zZWxlY3RlZEZhdm9yaXRlfX08L2J1dHRvbj5cclxuXHRcdFx0PHNsaWNrLXBvcG92ZXIgW2VsZW1lbnRdPVwiZmF2b3JpdGVTZWxlY3RSZWZcIiBwb3NpdGlvbj1cInRvcFwiIHNob3dBcnJvdz1cImZhbHNlXCIgW3RvcE9mZnNldFB4XT1cIjBcIiBbbGVmdE9mZnNldFB4XT1cIjBcIiBbc2hvd0J5Q2xpY2tdPVwidHJ1ZVwiPlxyXG5cdFx0XHRcdDx0YWJsZSBjbGFzcz1cInRhYmxlLWJvcmRlcmxlc3MgdGFibGUtc20gdGFibGUtaG92ZXJcIiBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHg7IGN1cnNvcjogZGVmYXVsdFwiPlxyXG5cdFx0XHRcdFx0PHRib2R5PlxyXG5cdFx0XHRcdFx0XHQ8dHIgKm5nRm9yPVwibGV0IGZhdm9yaXRlIG9mIGZhdm9yaXRlc1wiIChjbGljayk9XCJzZXRGYXZvcml0ZShmYXZvcml0ZS50ZXh0KVwiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZD48aSAqbmdJZj1cImZhdm9yaXRlLnRleHQgPT09IHNlbGVjdGVkRmF2b3JpdGVcIiBjbGFzcz1cImZhciBmYS1zdGFyIG1yLTFcIj48L2k+e3tmYXZvcml0ZS50ZXh0fX08L3RkPlxyXG5cdFx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdFx0PC90Ym9keT5cclxuXHRcdFx0XHQ8L3RhYmxlPlxyXG5cdFx0XHQ8L3NsaWNrLXBvcG92ZXI+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgKm5nSWY9XCJzaG93aW5nQWxsUmVjb3JkcyA9PSBmYWxzZVwiPlxyXG5cdFx0XHQ8c2xpY2stcGFnaW5nIFsocGFnZU51bWJlcildPVwiY3VycmVudFBhZ2VcIiBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiIFtyZWNvcmRzUGVyUGFnZV09XCJyZWNvcmRzUGVyUGFnZVwiIChvblBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj48L3NsaWNrLXBhZ2luZz5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiAqbmdJZj1cInNob3dpbmdBbGxSZWNvcmRzID09IGZhbHNlXCIgY2xhc3M9XCJtbC0xXCI+XHJcblx0XHRcdDxidXR0b24gI3JlY29yZHNQZXJQYWdlUmVmIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCI+e3tyZWNvcmRzUGVyUGFnZVZhbHVlfX0mbmJzcDsmbmJzcDs8aSBzdHlsZT1cImZvbnQtc2l6ZTogMTJweFwiIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG93blwiPjwvaT48L2J1dHRvbj5cclxuXHJcblx0XHRcdDxzbGljay1wb3BvdmVyIFtlbGVtZW50XT1cInJlY29yZHNQZXJQYWdlUmVmXCIgcG9zaXRpb249XCJ0b3BcIiBzaG93QXJyb3c9XCJmYWxzZVwiIFt0b3BPZmZzZXRQeF09XCIwXCIgW2xlZnRPZmZzZXRQeF09XCIwXCIgW3Nob3dCeUNsaWNrXT1cInRydWVcIj5cclxuXHRcdFx0XHQ8dGFibGUgY2xhc3M9XCJ0YWJsZS1ib3JkZXJsZXNzIHRhYmxlLXNtIHRhYmxlLWhvdmVyXCIgc3R5bGU9XCJtaW4td2lkdGg6IDE1MHB4O1wiPlxyXG5cdFx0XHRcdFx0PHRib2R5PlxyXG5cdFx0XHRcdFx0XHQ8dHIgKGNsaWNrKT1cIm9uUmVjb3Jkc1BlclBhZ2VTZWxlY3RlZCgnQXV0bycpXCI+PHRkPkF1dG88L3RkPjwvdHI+XHJcblx0XHRcdFx0XHRcdDx0ciAoY2xpY2spPVwib25SZWNvcmRzUGVyUGFnZVNlbGVjdGVkKCcyNScpXCI+PHRkPjI1PC90ZD48L3RyPlxyXG5cdFx0XHRcdFx0XHQ8dHIgKGNsaWNrKT1cIm9uUmVjb3Jkc1BlclBhZ2VTZWxlY3RlZCgnNTAnKVwiPjx0ZD41MDwvdGQ+PC90cj5cclxuXHRcdFx0XHRcdFx0PHRyIChjbGljayk9XCJvblJlY29yZHNQZXJQYWdlU2VsZWN0ZWQoJzEwMCcpXCI+PHRkPjEwMDwvdGQ+PC90cj5cclxuXHRcdFx0XHRcdDwvdGJvZHk+XHJcblx0XHRcdFx0PC90YWJsZT5cclxuXHRcdFx0PC9zbGljay1wb3BvdmVyPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHNsaWNrLWRpYWxvZyAjY29sdW1uU2VsZWN0RGlhbG9nUmVmIGhlYWRlcj1cIlNlbGVjdCBDb2x1bW5zXCI+XHJcblx0PGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDQ3NXB4O1wiIGNsYXNzPVwibXgtNVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleC1maWxsXCI+XHJcblx0XHRcdFx0PHNsaWNrLWRyb3AtZG93biBbaXRlbXNdPVwiZmF2b3JpdGVzXCJcclxuXHRcdFx0XHRcdFx0XHRcdCBbbmdNb2RlbF09XCJzZWxlY3RlZEZhdm9yaXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdCAob25TZWxlY3QpPVwibG9hZEZhdm9yaXRlKCRldmVudClcIj48L3NsaWNrLWRyb3AtZG93bj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXY+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG1sLTFcIiAoY2xpY2spPVwiYWRkTmV3RmF2b3JpdGUoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLXBsdXNcIj48L2k+PC9idXR0b24+PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMVwiIHNsaWNrLWRyb3AtbGlzdCAob25TbGlja0Ryb3BMaXN0UmVvcmRlcik9XCJvbkNvbHVtblJlb3JkZXIoJGV2ZW50KVwiPlxyXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1uc1wiIGNsYXNzPVwiZC1mbGV4XCIgc2xpY2stZHJvcC1saXN0LWl0ZW0+XHJcblx0XHRcdFx0PGRpdiBzdHlsZT1cIndpZHRoOiAyMHB4XCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDJweDtcIiBbKG5nTW9kZWwpXT1cImNvbHVtbi52aXNpYmxlXCIgLz48L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicHktMCBmbGV4LWZpbGxcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7IGN1cnNvcjogbnMtcmVzaXplXCIgc2xpY2stZHJvcC1saXN0LWdyYWI+e3tjb2x1bW4udGl0bGV9fTwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxzbGljay1kaWFsb2ctZm9vdGVyPlxyXG5cdFx0PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCIgY2xhc3M9XCJjb2wtMTIgdGV4dC1jZW50ZXIgbWItMiBtdC0xXCI+XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblNhdmVDb2x1bW5zKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG1yLTFcIj48aSBjbGFzcz1cImZhciBmYS1zYXZlXCI+PC9pPiZuYnNwO1NhdmU8L2J1dHRvbj4mbmJzcDtcclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyXCIgKGNsaWNrKT1cIm9uQ2FuY2VsQ29sdW1ucygpXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L3NsaWNrLWRpYWxvZy1mb290ZXI+XHJcbjwvc2xpY2stZGlhbG9nPlxyXG5cclxuXHJcbjxzbGljay1jb25maXJtLWRpYWxvZyAjYWRkTmV3RmF2b3JpdGVEaWFsb2dSZWYgd2lkdGg9XCIzMDBcIj5cclxuXHQ8bGFiZWw+RW50ZXIgbmV3IGZhdm9yaXRlIG5hbWU8L2xhYmVsPlxyXG5cdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG14LTNcIiBzdHlsZT1cIndpZHRoOiAyNTBweFwiIFsobmdNb2RlbCldPVwibmV3RmF2b3JpdGVUZXh0XCIgLz5cclxuPC9zbGljay1jb25maXJtLWRpYWxvZz4iXX0=
793
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1ncmlkL3NsaWNrLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZ3JpZC9zbGljay1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBMEUsZUFBZSxFQUFhLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDcE8sT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUF5QiwwQkFBMEIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVILE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSw0QkFBNEIsQ0FBQztBQUdqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQStCLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0gsT0FBTyxFQUEyQixzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRTlGLE1BQU0sYUFBYTtJQUNsQixZQUFZLElBQVk7UUFDdkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0NBSUQ7QUFPRCxNQUFNLE9BQU8sa0JBQWtCO0lBOEU5QixZQUFv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QUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ1EsZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ1UscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDSSx1QkFBdUI7c0JBQTVELFNBQVM7dUJBQUMseUJBQXlCO2dCQUVlLHdCQUF3QjtzQkFBMUUsZUFBZTt1QkFBQyxnQ0FBZ0M7Z0JBbUMzQyxRQUFRO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrR3JpZFNlcnZpY2UgfSBmcm9tIFwiLi9zbGljay1ncmlkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSVNsaWNrR3JpZENvbHVtbk1vZGVsLCBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcywgU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbiB9IGZyb20gXCIuL3NsaWNrLWdyaWQtY29sdW1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0dyaWRPcHRpb25zIH0gZnJvbSBcIi4vc2xpY2stZ3JpZC5vcHRpb25zXCI7XHJcbmltcG9ydCB7IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCwgSVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWdyaWQtcmVxdWVzdC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTbGlja0dyaWRSZXNwb25zZU1vZGVsIH0gZnJvbSBcIi4vc2xpY2stZ3JpZC1yZXNwb25zZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTbGlja0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9zbGljay1kaWFsb2cvc2xpY2stZGlhbG9nLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0dyaWRDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuL3NsaWNrLWdyaWQtY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTbGlja0NvbmZpcm1EaWFsb2dDb21wb25lbnQsIFNsaWNrQ29uZmlybURpYWxvZ1Jlc3VsdHMgfSBmcm9tICcuLi9zbGljay1jb25maXJtLWRpYWxvZy9zbGljay1jb25maXJtLWRpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJU2xpY2tHcmlkRmF2b3JpdGVNb2RlbCwgU2xpY2tHcmlkRmF2b3JpdGVNb2RlbCB9IGZyb20gJy4vc2xpY2stZ3JpZC1mYXZvcml0ZS5tb2RlbCc7XHJcblxyXG5jbGFzcyBEcm9wRG93bk1vZGVsIHtcclxuXHRjb25zdHJ1Y3Rvcih0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuaWQgPSB0ZXh0O1xyXG5cdFx0dGhpcy50ZXh0ID0gdGV4dDtcclxuXHR9XHJcblxyXG5cdGlkOiBzdHJpbmc7XHJcblx0dGV4dDogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWdyaWQnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tHcmlkU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cdEBIb3N0QmluZGluZygnY2xhc3MnKSBmbGV4Q29sdW1uID0gJ3NsaWNrLWZsZXgtY29sdW1uJztcclxuXHQvL0BIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdkLWZsZXggZmxleC1jb2x1bW4gZmxleC1maWxsJztcclxuXHJcblx0QElucHV0KCkgZ3JpZE9wdGlvbnM6IElTbGlja0dyaWRPcHRpb25zO1xyXG5cdEBJbnB1dCgpIGJvcmRlcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBzdHJpcGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBob3ZlcjogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgc2hvd2luZ0FsbFJlY29yZHMgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dDb250ZXh0TWVudTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25GYXZvcml0ZXNNb2RpZmllZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblx0QFZpZXdDaGlsZChcInNsaWNrR3JpZFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlja0dyaWRSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlQ29udGFpbmVyXCIpIHRhYmxlQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJ0YWJsZVJlZlwiKSB0YWJsZVJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwidGFibGVIZWFkZXJSb3dcIikgdGFibGVIZWFkZXJSb3dSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlSGVhZGVyU2VhcmNoUm93XCIpIHRhYmxlSGVhZGVyU2VhcmNoUm93UmVmOiBFbGVtZW50UmVmO1xyXG5cdC8vIFRoaXMgaXMgdG8gdGVzdCBob3cgaGlnaCBhIHN0YW5kYXJkIHJvdyBpc1xyXG5cdEBWaWV3Q2hpbGQoXCJ0ZXN0Um93XCIpIHRlc3RSb3dSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInRhYmxlQm9keVJvd3NcIikgdGFibGVCb2R5Um93c1JlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiY29sdW1uU2VsZWN0RGlhbG9nUmVmXCIpIGNvbHVtblNlbGVjdERpYWxvZ1JlZjogU2xpY2tEaWFsb2dDb21wb25lbnQ7XHJcblx0QFZpZXdDaGlsZChcImFkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmXCIpIGFkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmOiBTbGlja0NvbmZpcm1EaWFsb2dDb21wb25lbnQ7XHJcblxyXG5cdEBDb250ZW50Q2hpbGRyZW4oU2xpY2tHcmlkQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUpIHNsaWNrR3JpZENvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFNsaWNrR3JpZENvbHVtblRlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHR0ZW1wbGF0ZVJlZnM6IGFueTtcclxuXHJcblx0cHJpdmF0ZSBmbk9uTW91c2VVcCA9IChlKSA9PiB0aGlzLm9uTW91c2VVcChlKTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IG51bGw7XHJcblx0Z3JpZE9wYWNpdHkgPSAwO1xyXG5cdHZpc2libGVDb2x1bW5zOiBJU2xpY2tHcmlkQ29sdW1uTW9kZWxbXTtcclxuXHRmYXZvcml0ZXM6IERyb3BEb3duTW9kZWxbXTtcclxuXHRzZWxlY3RlZEZhdm9yaXRlOiBzdHJpbmc7XHJcblx0bmV3RmF2b3JpdGVUZXh0OiBzdHJpbmc7XHJcblx0Y29sdW1uU2VsZWN0RGlhbG9nQ29sdW1uczogSVNsaWNrR3JpZENvbHVtbk1vZGVsW107XHJcblx0bG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNEb3VibGVDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGRvdWJsZUNsaWNrV2FpdFRpbWVvdXQ6IE5vZGVKUy5UaW1lcjtcclxuXHRjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuXHRzZWFyY2hUaW1lb3V0OiBOb2RlSlMuVGltZXI7XHJcblx0a2V5cHJlc3NUaW1lb3V0OiBOb2RlSlMuVGltZXI7XHJcblx0c2hvd1Rlc3RSb3cgPSBmYWxzZTtcclxuXHRzaG93U2VhcmNoUm93ID0gZmFsc2U7XHJcblx0aXNSZXNpemluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHZpc2libGVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cdHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XHJcblx0dG90YWxSZWNvcmRzOiBudW1iZXI7XHJcblx0cmVjb3Jkc1BlclBhZ2VWYWx1ZTogc3RyaW5nID0gXCJBdXRvXCI7XHJcblxyXG5cdHByaXZhdGUgc2xpY2tHcmlkSGVpZ2h0OiBudW1iZXI7XHJcblx0cHJpdmF0ZSByZXNpemVUaW1lb3V0OiBOb2RlSlMuVGltZXIgPSBudWxsO1xyXG5cdHByaXZhdGUgcmVxdWVzdE1vZGVsOiBTbGlja0dyaWRSZXF1ZXN0TW9kZWw7XHJcblx0cHJpdmF0ZSByZXNpemVJbml0aWFsUG9zOiBudW1iZXI7XHJcblx0cHJpdmF0ZSByZXNpemVJbml0aWFsV2lkdGg6IG51bWJlcjtcclxuXHRwcml2YXRlIHJlc2l6ZUNvbElkeDogbnVtYmVyO1xyXG5cclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnLCAnJGV2ZW50LnRhcmdldCddKVxyXG5cdGFzeW5jIG9uUmVzaXplKGV2ZW50OiBVSUV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG5cdFx0Ly8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgZmlyZWZveCBzaG93cy9oaWRlcyB0aGUgbWVudSBpZiB5b3UgcHJlc3MgYWx0LiBEb24ndCByZWRyYXcgdGhlIGdyaWQgaWYgd2UncmVcclxuXHRcdC8vIGp1c3Qgc2hvd2luZyB0aGUgbWVudVxyXG5cdFx0aWYgKE1hdGguYWJzKHRoaXMuc2xpY2tHcmlkSGVpZ2h0IC0gdGhpcy5zbGlja0dyaWRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIDwgNTApXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRpZiAodGhpcy5zbGlja0dyaWRIZWlnaHQgIT09IHRoaXMuc2xpY2tHcmlkUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xyXG5cdFx0XHR0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5wYWdlID0gMTtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLnJlc2l6ZUdyaWQoKTtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IHRoaXMucmVjb3Jkc1BlclBhZ2U7XHJcblx0XHRcdFx0dGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHR9LCA1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBncmlkU2VydmljZTogU2xpY2tHcmlkU2VydmljZSxcclxuXHRcdHByaXZhdGUgZnVuY3Rpb25Mb2NrU2VydmljZTogU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsID0gbmV3IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnNldEdyaWRPcHRpb25zKHRoaXMuZ3JpZE9wdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0Ly8gQ29weSB0aGUgdGVtcGxhdGVzIHRvIGEgdmFyaWFibGUgdGhhdCB0aGUgaHRtbCBjYW4gYWNjZXNzLiAgSXQgY2FuJ3QgYWNjZXNzIGEgUXVlcnlMaXN0XHJcblx0XHR0aGlzLnRlbXBsYXRlUmVmcyA9IHt9O1xyXG5cdFx0dGhpcy5zbGlja0dyaWRDb2x1bW5UZW1wbGF0ZXMuZm9yRWFjaCh0ID0+IHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZVJlZnNbdC5jb2x1bW5LZXldID0gdC50ZW1wbGF0ZTtcclxuXHRcdH0pO1xyXG5cdFx0aWYgKHRoaXMudGFibGVSZWYpXHJcblx0XHRcdCg8SFRNTFRhYmxlRWxlbWVudD50aGlzLnRhYmxlUmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyB0YWJsZUtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0Ly8gS2V5IHVwXHJcblx0XHRpZiAoZS53aGljaCA9PT0gMzggJiYgISh0aGlzLnNlbGVjdGVkSW5kZXggPT09IDAgJiYgdGhpcy5jdXJyZW50UGFnZSA9PT0gMSkpIHtcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMua2V5cHJlc3NUaW1lb3V0KTtcclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgMCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRQYWdlID4gMSkge1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50UGFnZS0tO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMub25QYWdlQ2hhbmdlKHRoaXMuY3VycmVudFBhZ2UsIGZhbHNlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMucmVjb3Jkc1BlclBhZ2UgLSAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5rZXlwcmVzc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy52aXNpYmxlRGF0YVt0aGlzLnNlbGVjdGVkSW5kZXhdO1xyXG5cdFx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdH0sIDUwMCk7XHJcblx0XHR9XHJcblx0XHQvLyBLZXkgZG93blxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQwKSB7XHJcblx0XHRcdGlmICgoKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucmVjb3Jkc1BlclBhZ2UpICsgdGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMudG90YWxSZWNvcmRzKVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmtleXByZXNzVGltZW91dCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMucmVjb3Jkc1BlclBhZ2UpIHtcclxuXHRcdFx0XHRpZiAoKCh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJlY29yZHNQZXJQYWdlKSArIHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMudG90YWxSZWNvcmRzKSB7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRQYWdlKys7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5vblBhZ2VDaGFuZ2UodGhpcy5jdXJyZW50UGFnZSwgZmFsc2UpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5rZXlwcmVzc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy52aXNpYmxlRGF0YVt0aGlzLnNlbGVjdGVkSW5kZXhdO1xyXG5cdFx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHRcdH0sIDUwMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5ib3JkZXJlZCkge1xyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ib3JkZXJlZCA9PT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLmJvcmRlcmVkID0gKHRoaXMuYm9yZGVyZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpICE9PSAnZmFsc2UnKSA/IHRydWUgOiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY2hhbmdlcy5zdHJpcGVkKSB7XHJcblx0XHRcdC8vIFRoZSBncmlkIG9wdGlvbnMgb3ZlcnJpZGUgdGhlIHRhZyBvcHRpb25zXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLnN0cmlwZWQgPT09IG51bGwpXHJcblx0XHRcdFx0dGhpcy5zdHJpcGVkID0gKHRoaXMuc3RyaXBlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmhvdmVyKSB7XHJcblx0XHRcdC8vIFRoZSBncmlkIG9wdGlvbnMgb3ZlcnJpZGUgdGhlIHRhZyBvcHRpb25zXHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmhvdmVyID09PSBudWxsKVxyXG5cdFx0XHRcdHRoaXMuaG92ZXIgPSAodGhpcy5ob3Zlci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmdyaWRPcHRpb25zKSB7XHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zLmJvcmRlcmVkICE9PSBudWxsKVxyXG5cdFx0XHRcdHRoaXMuYm9yZGVyZWQgPSB0aGlzLmdyaWRPcHRpb25zLmJvcmRlcmVkO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMuc3RyaXBlZCAhPT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLnN0cmlwZWQgPSB0aGlzLmdyaWRPcHRpb25zLnN0cmlwZWQ7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ob3ZlciAhPT0gbnVsbClcclxuXHRcdFx0XHR0aGlzLmhvdmVyID0gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlcjtcclxuXHJcblx0XHRcdHRoaXMuc2V0R3JpZE9wdGlvbnModGhpcy5ncmlkT3B0aW9ucyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuZGF0YSkge1xyXG5cdFx0XHQvLyBJZiB3ZSBkb24ndCBkbyB0aGlzIGxvY2ssIHRoZSBmaXJzdCBjaGFuZ2Ugd2lsbCBoYXZlIG51bGwgZGF0YSBhbmQgY3Jhc2guICBUaGUgc2Vjb25kIHJlcXVlc3Qgd2lsbCBoYXZlIHRoZSBhY3R1YWwgZGF0YVxyXG5cdFx0XHRhd2FpdCB0aGlzLmZ1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIkdSSURfXCIgKyB0aGlzLnV1aWQgKyBcIl9EQVRBX0NIQU5HRVNcIik7XHJcblx0XHRcdC8vIE9ubHkgcmVzaXplIHRoZSBncmlkIG9uIHRoZSBmaXJzdCBjaGFuZ2UsIG90aGVyd2lzZSB3ZSBnZXQgYSBmbGlja2VyXHJcblx0XHRcdGlmIChjaGFuZ2VzLmRhdGEuZmlyc3RDaGFuZ2UgPT09IHRydWUpXHJcblx0XHRcdFx0YXdhaXQgdGhpcy5yZXNpemVHcmlkKCk7XHJcblx0XHRcdC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlc2l6ZSBpbiB0aGUgT25Jbml0IHRvIGZpbmlzaCBiZWZvcmUgd2UgY29udGludWVcclxuXHRcdFx0dGhpcy5sb2FkZWQgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwucGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlID0gdGhpcy5yZWNvcmRzUGVyUGFnZTtcclxuXHRcdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlRGF0YSAmJiB0aGlzLnZpc2libGVEYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5ncmlkT3B0aW9ucy5hdXRvU2VsZWN0Rmlyc3RSb3cgPT09IHRydWUpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RSb3coMCk7XHJcblx0XHRcdHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX0RBVEFfQ0hBTkdFU1wiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZm5Pbk1vdXNlVXApO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgb25SZWNvcmRzUGVyUGFnZVNlbGVjdGVkKHJlY29yZHNQZXJQYWdlOiBzdHJpbmcpIHtcclxuXHRcdGlmICghcmVjb3Jkc1BlclBhZ2UpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLnJlY29yZHNQZXJQYWdlVmFsdWUgPSByZWNvcmRzUGVyUGFnZTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1JFQ09SRFNfUEVSX1BBR0VcIiwgcmVjb3Jkc1BlclBhZ2UpO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZURhdGEgPSBbXTtcclxuXHRcdHRoaXMuZ3JpZE9wYWNpdHkgPSAwO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdGF3YWl0IHRoaXMucmVzaXplR3JpZCh0cnVlKTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnJlY29yZHNQZXJQYWdlID0gdGhpcy5yZWNvcmRzUGVyUGFnZTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdGF3YWl0IHRoaXMub25QYWdlQ2hhbmdlKHRoaXMuY3VycmVudFBhZ2UsIHRydWUpO1xyXG5cdH1cclxuXHJcblx0b25Db2xSZXNpemVNb3VzZWRvd24oZTogTW91c2VFdmVudCwgY29sdW1uSWR4OiBudW1iZXIpIHtcclxuXHRcdHRoaXMuaXNSZXNpemluZyA9IHRydWU7XHJcblx0XHR0aGlzLnJlc2l6ZUluaXRpYWxQb3MgPSBlLnBhZ2VYO1xyXG5cdFx0dGhpcy5yZXNpemVDb2xJZHggPSBjb2x1bW5JZHg7XHJcblx0XHRsZXQgY29sID0gKDxIVE1MVGFibGVSb3dFbGVtZW50PnRoaXMudGFibGVIZWFkZXJSb3dSZWYubmF0aXZlRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbChcInRkXCIpLml0ZW0oY29sdW1uSWR4KTtcclxuXHRcdHRoaXMucmVzaXplSW5pdGlhbFdpZHRoID0gY29sLm9mZnNldFdpZHRoIC0gOTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zW2NvbHVtbklkeF0uZmxleGlibGUgPSBmYWxzZTtcclxuXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5mbk9uTW91c2VVcCk7XHJcblx0fVxyXG5cclxuXHRvbkNvbFJlc2l6ZURvdWJsZWNsaWNrKGU6IE1vdXNlRXZlbnQsIGNvbHVtbklkeDogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zW2NvbHVtbklkeF0uZmxleGlibGUgPSB0cnVlO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1tjb2x1bW5JZHhdLndpZHRoID0gbnVsbDtcclxuXHRcdHRoaXMuc2F2ZUNvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cdH1cclxuXHJcblx0b25Db2xSZXNpemVNb3VzZW1vdmUoZTogTW91c2VFdmVudCkge1xyXG5cdFx0aWYgKCF0aGlzLmlzUmVzaXppbmcpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRsZXQgbmV3Q3Vyc29yUG9zID0gZS5wYWdlWDtcclxuXHRcdGxldCBkaWZmID0gbmV3Q3Vyc29yUG9zIC0gdGhpcy5yZXNpemVJbml0aWFsUG9zO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1t0aGlzLnJlc2l6ZUNvbElkeF0ud2lkdGggPSAodGhpcy5yZXNpemVJbml0aWFsV2lkdGggKyBkaWZmKSArIFwicHhcIjtcclxuXHRcdGlmICgodGhpcy5yZXNpemVJbml0aWFsV2lkdGggKyBkaWZmKSA8IDEwKVxyXG5cdFx0XHR0aGlzLnZpc2libGVDb2x1bW5zW3RoaXMucmVzaXplQ29sSWR4XS53aWR0aCA9IFwiMTBweFwiO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1uc1t0aGlzLnJlc2l6ZUNvbElkeF0uZmxleGlibGUgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb25Nb3VzZVVwKGUpIHtcclxuXHRcdHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZm5Pbk1vdXNlVXApO1xyXG5cdFx0dGhpcy5zYXZlQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRWaXNpYmxlUmVjb3JkcygpIHtcclxuXHRcdHJldHVybiB0aGlzLnZpc2libGVEYXRhO1xyXG5cdH1cclxuXHJcblx0YWRkTmV3UmVjb3JkKG5ld1JlY29yZDogYW55LCBzZWxlY3ROZXdSZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0dGhpcy52aXNpYmxlRGF0YS51bnNoaWZ0KG5ld1JlY29yZCk7XHJcblxyXG5cdFx0aWYgKHNlbGVjdE5ld1JlY29yZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4KVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlUmVjb3JkKHJvd051bTogbnVtYmVyLCByZWNvcmQ6IGFueSkge1xyXG5cdFx0dGhpcy52aXNpYmxlRGF0YVtyb3dOdW1dID0gcmVjb3JkO1xyXG5cdH1cclxuXHJcblx0b25Sb3dDbGlja2VkKHJvd0RhdGE6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IGlkeDtcclxuXHRcdGNsZWFyVGltZW91dCh0aGlzLmRvdWJsZUNsaWNrV2FpdFRpbWVvdXQpO1xyXG5cdFx0dGhpcy5kb3VibGVDbGlja1dhaXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KHJvd0RhdGEpO1xyXG5cdFx0fSwgMjUwKTtcclxuXHR9XHJcblxyXG5cdG9uUm93RG91YmxlQ2xpY2tlZChyb3dEYXRhOiBhbnksIGlkeCkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gaWR4O1xyXG5cdFx0Y2xlYXJUaW1lb3V0KHRoaXMuZG91YmxlQ2xpY2tXYWl0VGltZW91dCk7XHJcblx0XHR0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdChyb3dEYXRhKTtcclxuXHR9XHJcblxyXG5cdG9uUm93Q29udGV4dE1lbnVDbGlja2VkKGU6IE1vdXNlRXZlbnQsIHJvd0RhdGEsIGlkeCkge1xyXG5cdFx0aWYgKHRoaXMub25Sb3dDb250ZXh0TWVudSkge1xyXG5cdFx0XHRsZXQgcm93Q29udGV4dE1lbnVNb2RlbCA9IHtcclxuXHRcdFx0XHRtb3VzZUV2ZW50OiBlLFxyXG5cdFx0XHRcdGRhdGE6IHJvd0RhdGEsXHJcblx0XHRcdFx0cm93SWR4OiBpZHhcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5vblJvd0NvbnRleHRNZW51LmVtaXQocm93Q29udGV4dE1lbnVNb2RlbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBvblBhZ2VDaGFuZ2UocGFnZU51bWJlciwgc2VsZWN0Um93OiBib29sZWFuID0gdHJ1ZSkge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XHJcblx0XHR0aGlzLnJlcXVlc3RNb2RlbC5wYWdlID0gcGFnZU51bWJlcjtcclxuXHRcdGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0aGlzLmdyaWRPcHRpb25zLmF1dG9TZWxlY3RGaXJzdFJvdyA9PT0gdHJ1ZSkgPyAwIDogbnVsbDtcclxuXHJcblx0XHRpZiAoc2VsZWN0Um93ID09PSB0cnVlICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKSB7XHJcblx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLnZpc2libGVEYXRhW3RoaXMuc2VsZWN0ZWRJbmRleF07XHJcblx0XHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XHJcblx0XHR9XHJcblxyXG5cdFx0KDxIVE1MVGFibGVFbGVtZW50PnRoaXMudGFibGVSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHJlbG9hZEdyaWQoYWRkaXRpb25hbFBhcmFtczogYW55KTogUHJvbWlzZTxTbGlja0dyaWRSZXNwb25zZU1vZGVsPiB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnJlc2l6ZUdyaWQoKTtcclxuXHRcdFx0YXdhaXQgdGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFwiKTtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwudXJsID0gdGhpcy5ncmlkT3B0aW9ucy5nZXRVcmw7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmh0dHBIZWFkZXJzID0gdGhpcy5ncmlkT3B0aW9ucy5odHRwSGVhZGVycztcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuYWRkaXRpb25hbFBhcmFtcyA9IGFkZGl0aW9uYWxQYXJhbXM7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IHRoaXMucmVjb3Jkc1BlclBhZ2U7XHJcblxyXG5cdFx0XHRsZXQgcmVzcG9uc2VNb2RlbDogU2xpY2tHcmlkUmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdFx0dGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFwiKTtcclxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZU1vZGVsKTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyByZWxvYWRHcmlkV2l0aFJlcXVlc3RNb2RlbChyZXF1ZXN0TW9kZWw6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCk6IFByb21pc2U8U2xpY2tHcmlkUmVzcG9uc2VNb2RlbD4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5yZXNpemVHcmlkKCk7XHJcblx0XHRcdGF3YWl0IHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX1JFTE9BREdSSURXSVRIUkVRVUVTVE1PREVMXCIpO1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbCA9IHJlcXVlc3RNb2RlbDtcclxuXHRcdFx0dGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0XHRsZXQgcmVzcG9uc2VNb2RlbDogU2xpY2tHcmlkUmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMucmVsb2FkKHRoaXMucmVxdWVzdE1vZGVsKTtcclxuXHRcdFx0dGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FER1JJRFdJVEhSRVFVRVNUTU9ERUxcIik7XHJcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2VNb2RlbCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIHJlbG9hZChyZXF1ZXN0TW9kZWw6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCk6IFByb21pc2U8U2xpY2tHcmlkUmVzcG9uc2VNb2RlbD4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVMT0FEXCIpO1xyXG5cclxuXHRcdFx0cmVxdWVzdE1vZGVsID0gdGhpcy5nZXRSZXF1ZXN0TW9kZWwodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cclxuXHRcdFx0bGV0IHJlc3BvbnNlTW9kZWw6IFNsaWNrR3JpZFJlc3BvbnNlTW9kZWwgPSBudWxsO1xyXG5cdFx0XHRpZiAocmVxdWVzdE1vZGVsLnVybClcclxuXHRcdFx0XHRyZXNwb25zZU1vZGVsID0gYXdhaXQgdGhpcy5ncmlkU2VydmljZS5nZXREYXRhRnJvbVNlcnZlcihyZXF1ZXN0TW9kZWwpO1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0cmVzcG9uc2VNb2RlbCA9IGF3YWl0IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0RGF0YUZyb21EYXRhT2JqKHJlcXVlc3RNb2RlbCwgdGhpcy5kYXRhKTtcclxuXHJcblx0XHRcdHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZU1vZGVsLnRvdGFsUmVjb3JkcztcclxuXHRcdFx0dGhpcy52aXNpYmxlRGF0YSA9IHJlc3BvbnNlTW9kZWwuZGF0YTtcclxuXHJcblx0XHRcdHRoaXMuZnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiR1JJRF9cIiArIHRoaXMudXVpZCArIFwiX1JFTE9BRFwiKTtcclxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlTW9kZWwpO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dW5zZWxlY3RSb3coKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0Um93KHJvd051bWJlcjogbnVtYmVyKSB7XHJcblx0XHRsZXQgcm93RGF0YSA9IHRoaXMudmlzaWJsZURhdGFbcm93TnVtYmVyXTtcclxuXHRcdHRoaXMub25Sb3dDbGlja2VkKHJvd0RhdGEsIHJvd051bWJlcik7XHJcblx0fVxyXG5cclxuXHRnZXRDb2x1bW5IVE1MKHJvd0RhdGEsIGRhdGFGaWVsZE5hbWUpIHtcclxuXHRcdGNvbnN0IGNvbHVtbkhUTUwgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KHJvd0RhdGEsIGRhdGFGaWVsZE5hbWUpO1xyXG5cclxuXHRcdGlmIChjb2x1bW5IVE1MID09PSBudWxsIHx8IGNvbHVtbkhUTUwgPT09IHVuZGVmaW5lZClcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cclxuXHRcdHJldHVybiBjb2x1bW5IVE1MLnRvU3RyaW5nKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzb3J0Qnkoc29ydENvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuXHRcdFx0aWYgKHNvcnRDb2x1bW4gJiYgYy5jb2x1bW5LZXkgIT09IHNvcnRDb2x1bW4uY29sdW1uS2V5KSB7XHJcblxyXG5cdFx0XHRcdGMuc29ydERpcmVjdGlvbiA9IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24ubm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHJcblx0XHRpZiAoc29ydENvbHVtbikge1xyXG5cdFx0XHRpZiAoc29ydENvbHVtbi5zb3J0RGlyZWN0aW9uID09PSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmUpIHtcclxuXHRcdFx0XHR0aGlzLnZpc2libGVDb2x1bW5zLmZvckVhY2goYyA9PiBjLnNvcnREaXJlY3Rpb24gPSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmUpO1xyXG5cdFx0XHRcdHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbiA9IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24uYXNjO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2UgaWYgKHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbi5hc2MpXHJcblx0XHRcdFx0c29ydENvbHVtbi5zb3J0RGlyZWN0aW9uID0gU2xpY2tHcmlkQ29sdW1uU29ydERpcmVjdGlvbi5kZXNjO1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRzb3J0Q29sdW1uLnNvcnREaXJlY3Rpb24gPSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLm5vbmU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uU2VhcmNoU2VsZWN0KGRkVmFsdWUsIGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRpZiAoIXRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcylcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzID0gW107XHJcblxyXG5cdFx0bGV0IGNvbHVtblNlYXJjaFZhbHVlSWR4ID0gdGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzLmZpbmRJbmRleCh4ID0+IHguY29sdW1uTmFtZSA9PT0gY29sdW1uLmRhdGFGaWVsZE5hbWUpO1xyXG5cdFx0aWYgKGNvbHVtblNlYXJjaFZhbHVlSWR4ID49IDApXHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5zcGxpY2UoY29sdW1uU2VhcmNoVmFsdWVJZHgsIDEpO1xyXG5cclxuXHRcdGNvbHVtbi5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChkZFZhbHVlKSB7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5wdXNoKDxJU2xpY2tHcmlkUmVxdWVzdFNlYXJjaE1vZGVsPntcclxuXHRcdFx0XHRjb2x1bW5OYW1lOiBjb2x1bW4uZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRzZWFyY2hWYWx1ZUlkOiBkZFZhbHVlLmlkLFxyXG5cdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogZGRWYWx1ZS50ZXh0XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Y29sdW1uLmlzRmlsdGVyaW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb2x1bW4uaXNMb2NrZWQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uU2VhcmNoKGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdGlmICghdGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzKVxyXG5cdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMgPSBbXTtcclxuXHJcblx0XHRpZiAoY29sdW1uLmZpbHRlclRleHQgPT09IGNvbHVtbi5sYXN0U2VhcmNoVGV4dClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGNvbHVtbi5sYXN0U2VhcmNoVGV4dCA9IGNvbHVtbi5maWx0ZXJUZXh0O1xyXG5cdFx0Y29sdW1uLmlzRmlsdGVyaW5nID0gISFjb2x1bW4uZmlsdGVyVGV4dDtcclxuXHRcdGlmICghY29sdW1uLmlzRmlsdGVyaW5nKVxyXG5cdFx0XHRjb2x1bW4uaXNMb2NrZWQgPSBmYWxzZTtcclxuXHJcblx0XHRjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcclxuXHRcdHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHRcdGxldCBjb2x1bW5TZWFyY2hWYWx1ZUlkeCA9IHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5maW5kSW5kZXgoeCA9PiB4LmNvbHVtbk5hbWUgPT09IGNvbHVtbi5kYXRhRmllbGROYW1lKTtcclxuXHRcdFx0aWYgKGNvbHVtblNlYXJjaFZhbHVlSWR4ID49IDApXHJcblx0XHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzLnNwbGljZShjb2x1bW5TZWFyY2hWYWx1ZUlkeCwgMSk7XHJcblxyXG5cdFx0XHRpZiAoY29sdW1uLmZpbHRlclRleHQpIHtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMucHVzaCg8SVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbD57XHJcblx0XHRcdFx0XHRjb2x1bW5OYW1lOiBjb2x1bW4uZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogY29sdW1uLmZpbHRlclRleHRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcblx0XHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0XHRhd2FpdCB0aGlzLnJlbG9hZCh0aGlzLnJlcXVlc3RNb2RlbCk7XHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVEYXRhICYmIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmdyaWRPcHRpb25zLmF1dG9TZWxlY3RGaXJzdFJvdyA9PT0gdHJ1ZSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHRcdH0sIDI1MCk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVMb2NrKGNvbHVtbjogSVNsaWNrR3JpZENvbHVtbk1vZGVsKSB7XHJcblx0XHRjb2x1bW4uaXNMb2NrZWQgPSAhY29sdW1uLmlzTG9ja2VkO1xyXG5cclxuXHRcdHRoaXMuc2F2ZUNvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVzZXRGaWx0ZXIoY29sdW1uOiBJU2xpY2tHcmlkQ29sdW1uTW9kZWwpIHtcclxuXHRcdGNvbHVtbi5pc0ZpbHRlcmluZyA9IGZhbHNlO1xyXG5cdFx0Y29sdW1uLmlzTG9ja2VkID0gZmFsc2U7XHJcblxyXG5cdFx0Y29sdW1uLmZpbHRlclRleHQgPSBudWxsO1xyXG5cdFx0Y29sdW1uLmxhc3RTZWFyY2hUZXh0ID0gbnVsbDtcclxuXHRcdGNvbHVtbi5maWx0ZXJEcm9wZG93blZhbHVlID0gbnVsbDtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcyA9IHRoaXMucmVxdWVzdE1vZGVsLmNvbHVtblNlYXJjaFZhbHVlcy5maWx0ZXIoeCA9PiB4LmNvbHVtbk5hbWUgIT09IGNvbHVtbi5kYXRhRmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLnNhdmVDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuXHRcdHRoaXMucmVxdWVzdE1vZGVsLnBhZ2UgPSAxO1xyXG5cdFx0YXdhaXQgdGhpcy5yZWxvYWQodGhpcy5yZXF1ZXN0TW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMudmlzaWJsZURhdGEgJiYgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXV0b1NlbGVjdEZpcnN0Um93ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdFJvdygwKTtcclxuXHR9XHJcblxyXG5cdG9wZW5Db2x1bW5TZWxlY3REaWFsb2coKSB7XHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMgPSBbLi4udGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zXTtcclxuXHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ1JlZi5zaG93RGlhbG9nKCk7XHJcblx0fVxyXG5cclxuXHRvbkNvbHVtbkRyb3AoZTogYW55KSB7XHJcblx0XHRjb25zb2xlLmluZm8oZSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbkNvbHVtblJlb3JkZXIoZTogbnVtYmVyW10pIHtcclxuXHRcdGNvbnN0IG9sZE9yZGVyID0gZVswXTtcclxuXHRcdGNvbnN0IG5ld09yZGVyID0gZVsxXTtcclxuXHJcblx0XHRpZiAob2xkT3JkZXIgPT09IG5ld09yZGVyKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRDb2wgPSB0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMuc3BsaWNlKG9sZE9yZGVyLCAxKVswXTtcclxuXHRcdHNlbGVjdGVkQ29sLmRpc3BsYXlPcmRlciA9IG5ld09yZGVyO1xyXG5cclxuXHRcdGxldCBjdXJyZW50T3JkZXIgPSAwO1xyXG5cdFx0Ly8gRXZlcnl0aGluZyB1cCB0byB0aGUgbmV3IG9yZGVyIHJlb3JkZXJlZCBmcm9tIDBcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdC8vIElmIHdlJ3JlIGF0IG5ld09yZGVyLCBsZWF2ZSBhIHNwb3RcclxuXHRcdFx0aWYgKGkgPT09IG5ld09yZGVyKVxyXG5cdFx0XHRcdGN1cnJlbnRPcmRlcisrO1xyXG5cdFx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnNbaV0uZGlzcGxheU9yZGVyID0gY3VycmVudE9yZGVyKys7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1ucywgc2VsZWN0ZWRDb2xdO1xyXG5cdFx0dGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zID0gdGhpcy5jb2x1bW5TZWxlY3REaWFsb2dDb2x1bW5zLnNvcnQoKGEsIGIpID0+IChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSA/IDEgOiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikgPyAtMSA6IDApO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgYWRkTmV3RmF2b3JpdGUoKSB7XHJcblx0XHR0aGlzLm5ld0Zhdm9yaXRlVGV4dCA9ICcnO1xyXG5cclxuXHRcdGNvbnN0IGNvbmZpcm1SZXN1bHQgPSBhd2FpdCB0aGlzLmFkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmLmNvbmZpcm0oKTtcclxuXHJcblx0XHRpZiAoY29uZmlybVJlc3VsdCA9PT0gU2xpY2tDb25maXJtRGlhbG9nUmVzdWx0cy5PayAmJiB0aGlzLm5ld0Zhdm9yaXRlVGV4dCkge1xyXG5cdFx0XHQvLyBTYXZlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gdG8gbG9jYWxzdG9yYWdlXHJcblx0XHRcdHRoaXMuc2F2ZURpYWxvZ0NvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5mYXZvcml0ZXMucHVzaChuZXcgRHJvcERvd25Nb2RlbCh0aGlzLm5ld0Zhdm9yaXRlVGV4dCkpO1xyXG5cclxuXHRcdFx0dGhpcy5zZWxlY3RlZEZhdm9yaXRlID0gdGhpcy5uZXdGYXZvcml0ZVRleHQ7XHJcblx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1NFTEVDVEVEX0ZBVk9SSVRFXCIsIHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSk7XHJcblxyXG5cdFx0XHRjb25zdCBmYXZvcml0ZXNKc29uID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mYXZvcml0ZXMubWFwKHggPT4geC50ZXh0KSk7XHJcblx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX0ZBVk9SSVRFU1wiLCBmYXZvcml0ZXNKc29uKTtcclxuXHJcblx0XHRcdC8vIFNhdmUgdGhlIG5ldyBvbmUgdG8gbG9jYWxzdG9yYWdlXHJcblx0XHRcdHRoaXMuc2F2ZURpYWxvZ0NvbHVtbnNUb0xvY2FsU3RvcmFnZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bG9hZEZhdm9yaXRlKGZhdm9yaXRlOiBEcm9wRG93bk1vZGVsKSB7XHJcblx0XHR0aGlzLnNhdmVEaWFsb2dDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPSBmYXZvcml0ZS50ZXh0O1xyXG5cdFx0bGV0IGdyaWRDb2x1bW5zSnNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9DT0xVTU5TJHt0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPT09ICdEZWZhdWx0JyA/ICcnIDogJ18nICsgdGhpcy5zZWxlY3RlZEZhdm9yaXRlfWApO1xyXG5cdFx0aWYgKGdyaWRDb2x1bW5zSnNvbikge1xyXG5cdFx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMgPSA8SVNsaWNrR3JpZENvbHVtbk1vZGVsW10+SlNPTi5wYXJzZShncmlkQ29sdW1uc0pzb24pO1xyXG5cdFx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMuc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpID8gMSA6IChhLmRpc3BsYXlPcmRlciA8IGIuZGlzcGxheU9yZGVyKSA/IC0xIDogMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBzZXRGYXZvcml0ZShmYXZvcml0ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPSBmYXZvcml0ZTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1NFTEVDVEVEX0ZBVk9SSVRFXCIsIHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSk7XHJcblxyXG5cdFx0bGV0IGdyaWRDb2x1bW5zSnNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9DT0xVTU5TJHt0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPT09ICdEZWZhdWx0JyA/ICcnIDogJ18nICsgdGhpcy5zZWxlY3RlZEZhdm9yaXRlfWApO1xyXG5cdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zID0gPElTbGlja0dyaWRDb2x1bW5Nb2RlbFtdPkpTT04ucGFyc2UoZ3JpZENvbHVtbnNKc29uKTtcclxuXHRcdHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihjID0+IGMudmlzaWJsZSA9PT0gdHJ1ZSk7XHJcblx0XHR0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucy5zb3J0KChhLCBiKSA9PiAoYS5kaXNwbGF5T3JkZXIgPiBiLmRpc3BsYXlPcmRlcikgPyAxIDogKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpID8gLTEgOiAwKTtcclxuXHRcdHRoaXMuc2hvd1NlYXJjaFJvdyA9IHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWx0ZXJUeXBlICE9PSBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcy5ub25lKS5sZW5ndGggPiAwO1xyXG5cclxuXHRcdHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG5cdFx0dGhpcy5yZXF1ZXN0TW9kZWwucGFnZSA9IDE7XHJcblx0XHR0aGlzLnJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA9IHRoaXMucmVjb3Jkc1BlclBhZ2U7XHJcblx0XHRhd2FpdCB0aGlzLnJlbG9hZCh0aGlzLnJlcXVlc3RNb2RlbCk7XHJcblx0fVxyXG5cclxuXHRvblNhdmVDb2x1bW5zKCkge1xyXG5cdFx0dGhpcy5zYXZlRGlhbG9nQ29sdW1uc1RvTG9jYWxTdG9yYWdlKCk7XHJcblxyXG5cdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uU2VsZWN0RGlhbG9nQ29sdW1uc107XHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIGlmIHRoZXkndmUgaGlkZGVuIGEgY29sdW1uIHRoYXQgd2UgYXJlbid0IHRyeWluZyB0byBzb3J0IG9yIGZpbHRlciBieSB0aGlzIGNvbHVtblxyXG5cdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goeCA9PiB7XHJcblx0XHRcdGlmICh4LnZpc2libGUgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0eC5maWx0ZXJEcm9wZG93blZhbHVlID0gbnVsbDtcclxuXHRcdFx0XHR4LmZpbHRlclRleHQgPSBudWxsO1xyXG5cdFx0XHRcdHguaXNGaWx0ZXJpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR4LmlzTG9ja2VkID0gZmFsc2U7XHJcblx0XHRcdFx0eC5sYXN0U2VhcmNoVGV4dCA9IG51bGw7XHJcblx0XHRcdFx0eC5zb3J0RGlyZWN0aW9uID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUgPT09IHRydWUpO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnMuc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpID8gMSA6IChhLmRpc3BsYXlPcmRlciA8IGIuZGlzcGxheU9yZGVyKSA/IC0xIDogMCk7XHJcblx0XHR0aGlzLnNob3dTZWFyY2hSb3cgPSB0aGlzLnZpc2libGVDb2x1bW5zLmZpbHRlcihjID0+IGMuZmlsdGVyVHlwZSAhPT0gU2xpY2tHcmlkQ29sdW1uRmlsdGVyVHlwZXMubm9uZSkubGVuZ3RoID4gMDtcclxuXHJcblx0XHR0aGlzLmNvbHVtblNlbGVjdERpYWxvZ1JlZi5oaWRlRGlhbG9nKCk7XHJcblx0XHR0aGlzLnJlc2l6ZUdyaWQoKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkZhdm9yaXRlc01vZGlmaWVkKSB7XHJcblx0XHRcdGNvbnN0IGdyaWRGYXZvcml0ZXM6IElTbGlja0dyaWRGYXZvcml0ZU1vZGVsW10gPSB0aGlzLmZhdm9yaXRlcy5tYXAoZmF2b3JpdGUgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGdyaWRGYXZvcml0ZSA9IG5ldyBTbGlja0dyaWRGYXZvcml0ZU1vZGVsKCk7XHJcblx0XHRcdFx0Z3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSA9IGZhdm9yaXRlLnRleHQ7XHJcblx0XHRcdFx0Y29uc3Qgc3VmZml4ID0gZ3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAoJ18nICsgZ3JpZEZhdm9yaXRlLmZhdm9yaXRlTmFtZSk7XHJcblx0XHRcdFx0Y29uc3QgZGlhbG9nQ29sdW1uc0pTT04gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWApO1xyXG5cdFx0XHRcdGdyaWRGYXZvcml0ZS5jb2x1bW5zID0gSlNPTi5wYXJzZShkaWFsb2dDb2x1bW5zSlNPTik7XHJcblx0XHRcdFx0cmV0dXJuIGdyaWRGYXZvcml0ZTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHR0aGlzLm9uRmF2b3JpdGVzTW9kaWZpZWQuZW1pdChncmlkRmF2b3JpdGVzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uQ2FuY2VsQ29sdW1ucygpIHtcclxuXHRcdHRoaXMuY29sdW1uU2VsZWN0RGlhbG9nUmVmLmhpZGVEaWFsb2coKTtcclxuXHR9XHJcblxyXG5cdHNhdmVEaWFsb2dDb2x1bW5zVG9Mb2NhbFN0b3JhZ2UoKSB7XHJcblx0XHRsZXQgZGlhbG9nQ29sdW1uc0pTT04gPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnMpO1xyXG5cdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSkge1xyXG5cdFx0XHRjb25zdCBzdWZmaXggPSB0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPT09ICdEZWZhdWx0JyA/ICcnIDogKCdfJyArIHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSk7XHJcblx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9DT0xVTU5TJHtzdWZmaXh9YCwgZGlhbG9nQ29sdW1uc0pTT04pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2F2ZUNvbHVtbnNUb0xvY2FsU3RvcmFnZSgpIHtcclxuXHRcdGxldCBncmlkQ29sdW1uc0pTT04gPSBKU09OLnN0cmluZ2lmeSh0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMpO1xyXG5cdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSkge1xyXG5cdFx0XHRjb25zdCBzdWZmaXggPSB0aGlzLnNlbGVjdGVkRmF2b3JpdGUgPT09ICdEZWZhdWx0JyA/ICcnIDogKCdfJyArIHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSk7XHJcblxyXG5cdFx0XHRsZXQgZ3JpZENvbHVtbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3N1ZmZpeH1gKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmIChncmlkQ29sdW1uc0pzb24pIHtcclxuXHRcdFx0XHRsZXQgY29sdW1ucyA9IDxJU2xpY2tHcmlkQ29sdW1uTW9kZWxbXT5KU09OLnBhcnNlKGdyaWRDb2x1bW5zSnNvbik7XHJcblxyXG5cdFx0XHRcdGxldCBkaXNwbGF5T3JkZXIgPSAwO1xyXG5cdFx0XHRcdGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuXHRcdFx0XHRcdGxldCBjb2x1bW4gPSB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZmluZChncmlkQ29sdW1uID0+IGdyaWRDb2x1bW4uZGF0YUZpZWxkTmFtZSA9PT0gYy5kYXRhRmllbGROYW1lKTtcclxuXHRcdFx0XHRcdGlmIChjb2x1bW4pIHtcclxuXHRcdFx0XHRcdFx0Yy5kaXNwbGF5T3JkZXIgPSBkaXNwbGF5T3JkZXI7XHJcblx0XHRcdFx0XHRcdGMudGl0bGVPcmllbnRhdGlvbiA9IGNvbHVtbi50aXRsZU9yaWVudGF0aW9uO1xyXG5cdFx0XHRcdFx0XHRjLnRpdGxlSGVpZ2h0ID0gY29sdW1uLnRpdGxlSGVpZ2h0O1xyXG5cdFx0XHRcdFx0XHRjLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG5cdFx0XHRcdFx0XHRjLmZpbHRlckRyb3Bkb3duVmFsdWUgPSBjb2x1bW4uZmlsdGVyRHJvcGRvd25WYWx1ZTtcclxuXHRcdFx0XHRcdFx0Yy5maWx0ZXJUZXh0ID0gY29sdW1uLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0XHRcdGMuaXNMb2NrZWQgPSBjb2x1bW4uaXNMb2NrZWQ7XHJcblx0XHRcdFx0XHRcdGMuaXNGaWx0ZXJpbmcgPSBjb2x1bW4uaXNGaWx0ZXJpbmc7XHJcblx0XHRcdFx0XHRcdGMuc29ydERpcmVjdGlvbiA9IGNvbHVtbi5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGRpc3BsYXlPcmRlcisrO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGNvbHVtbnMgPSBjb2x1bW5zLnNvcnQoKGEsIGIpID0+IChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSA/IDEgOiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikgPyAtMSA6IDApO1xyXG5cdFx0XHRcdGdyaWRDb2x1bW5zSlNPTiA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgR1JJRF8ke3RoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleX1fQ09MVU1OUyR7c3VmZml4fWAsIGdyaWRDb2x1bW5zSlNPTik7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMub25GYXZvcml0ZXNNb2RpZmllZCkge1xyXG5cdFx0XHRjb25zdCBncmlkRmF2b3JpdGVzOiBJU2xpY2tHcmlkRmF2b3JpdGVNb2RlbFtdID0gdGhpcy5mYXZvcml0ZXMubWFwKGZhdm9yaXRlID0+IHtcclxuXHRcdFx0XHRjb25zdCBncmlkRmF2b3JpdGUgPSBuZXcgU2xpY2tHcmlkRmF2b3JpdGVNb2RlbCgpO1xyXG5cdFx0XHRcdGdyaWRGYXZvcml0ZS5mYXZvcml0ZU5hbWUgPSBmYXZvcml0ZS50ZXh0O1xyXG5cdFx0XHRcdGNvbnN0IHN1ZmZpeCA9IGdyaWRGYXZvcml0ZS5mYXZvcml0ZU5hbWUgPT09ICdEZWZhdWx0JyA/ICcnIDogKCdfJyArIGdyaWRGYXZvcml0ZS5mYXZvcml0ZU5hbWUpO1xyXG5cdFx0XHRcdGNvbnN0IGRpYWxvZ0NvbHVtbnNKU09OID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3N1ZmZpeH1gKTtcclxuXHRcdFx0XHRncmlkRmF2b3JpdGUuY29sdW1ucyA9IEpTT04ucGFyc2UoZGlhbG9nQ29sdW1uc0pTT04pO1xyXG5cdFx0XHRcdHJldHVybiBncmlkRmF2b3JpdGU7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0dGhpcy5vbkZhdm9yaXRlc01vZGlmaWVkLmVtaXQoZ3JpZEZhdm9yaXRlcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblx0cHJpdmF0ZSBhc3luYyByZXNpemVHcmlkKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHRcdFx0aWYgKCFmb3JjZVJlZnJlc2ggJiYgdGhpcy5zbGlja0dyaWRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPT09IHRoaXMuc2xpY2tHcmlkSGVpZ2h0KSB7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMucmVjb3Jkc1BlclBhZ2VWYWx1ZSA9PT0gJ0F1dG8nKSB7XHJcblx0XHRcdFx0YXdhaXQgdGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVTSVpFR1JJRFwiKTtcclxuXHJcblx0XHRcdFx0dGhpcy5zbGlja0dyaWRIZWlnaHQgPSB0aGlzLnRhYmxlQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG5cclxuXHRcdFx0XHRjb25zdCB0ZXN0Um93ID0gKDxIVE1MVGFibGVFbGVtZW50PnRoaXMudGFibGVSZWYubmF0aXZlRWxlbWVudCkuaW5zZXJ0Um93KDApO1xyXG5cdFx0XHRcdGNvbnN0IHRlc3RDZWxsID0gdGVzdFJvdy5pbnNlcnRDZWxsKDApO1xyXG5cdFx0XHRcdHRlc3RDZWxsLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG5cdFx0XHRcdHRlc3RDZWxsLmlubmVySFRNTCA9IFwiJk5CU1BcIjtcclxuXHRcdFx0XHRjb25zdCByb3dIZWlnaHQgPSB0ZXN0Q2VsbC5vZmZzZXRIZWlnaHQ7XHJcblx0XHRcdFx0KDxIVE1MVGFibGVFbGVtZW50PnRoaXMudGFibGVSZWYubmF0aXZlRWxlbWVudCkuZGVsZXRlUm93KDApO1xyXG5cclxuXHRcdFx0XHRsZXQgaGVhZGVySGVpZ2h0ID0gdGhpcy50YWJsZUhlYWRlclJvd1JlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIDI7XHJcblx0XHRcdFx0aWYgKHRoaXMudGFibGVIZWFkZXJTZWFyY2hSb3dSZWYpXHJcblx0XHRcdFx0XHRoZWFkZXJIZWlnaHQgKz0gdGhpcy50YWJsZUhlYWRlclNlYXJjaFJvd1JlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIDI7XHJcblx0XHRcdFx0Y29uc3QgY2xpZW50SGVpZ2h0ID0gdGhpcy50YWJsZUNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIGhlYWRlckhlaWdodDtcclxuXHRcdFx0XHR0aGlzLnJlY29yZHNQZXJQYWdlID0gcGFyc2VJbnQoKChjbGllbnRIZWlnaHQgLyByb3dIZWlnaHQpIC0gMSkudG9GaXhlZCgwKSk7XHJcblx0XHRcdFx0bGV0IGFjdHVhbFJvd0hlaWdodCA9IHBhcnNlSW50KChjbGllbnRIZWlnaHQgLyB0aGlzLnJlY29yZHNQZXJQYWdlKS50b0ZpeGVkKDApKSAtIDE7XHJcblx0XHRcdFx0aWYgKGFjdHVhbFJvd0hlaWdodCA8IHJvd0hlaWdodClcclxuXHRcdFx0XHRcdGFjdHVhbFJvd0hlaWdodCA9IHJvd0hlaWdodDtcclxuXHJcblx0XHRcdFx0Y29uc3QgYWxsUm93cyA9IDxIVE1MRWxlbWVudFtdPnRoaXMuc2xpY2tHcmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi50YWJsZSB0Ym9keSB0clwiKTtcclxuXHRcdFx0XHRhbGxSb3dzLmZvckVhY2gocm93ID0+IHtcclxuXHRcdFx0XHRcdHJvdy5zdHlsZS5oZWlnaHQgPSAoYWN0dWFsUm93SGVpZ2h0KSArIFwicHhcIjtcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0dGhpcy5mdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJHUklEX1wiICsgdGhpcy51dWlkICsgXCJfUkVTSVpFR1JJRFwiKTtcclxuXHJcblx0XHRcdFx0dGhpcy5ncmlkT3BhY2l0eSA9IDE7XHJcblx0XHRcdFx0dGhpcy5zaG93VGVzdFJvdyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRcdFx0dGhpcy5yZWNvcmRzUGVyUGFnZSA9IHBhcnNlSW50KHRoaXMucmVjb3Jkc1BlclBhZ2VWYWx1ZSk7XHJcblx0XHRcdFx0dGhpcy5ncmlkT3BhY2l0eSA9IDE7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFkZENvbHVtbihjb2x1bW46IElTbGlja0dyaWRDb2x1bW5Nb2RlbCwgaWR4OiBudW1iZXIgPSBudWxsKSB7XHJcblxyXG5cdFx0aWYgKGlkeCA9PT0gbnVsbClcclxuXHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5zLnNwbGljZShpZHgsIDAsIGNvbHVtbik7XHJcblxyXG5cdFx0dGhpcy5zZXRHcmlkT3B0aW9ucyh0aGlzLmdyaWRPcHRpb25zKTtcclxuXHR9XHJcblxyXG5cdGdldFJlcXVlc3RNb2RlbChyZXF1ZXN0TW9kZWw6IFNsaWNrR3JpZFJlcXVlc3RNb2RlbCA9IG51bGwpOiBTbGlja0dyaWRSZXF1ZXN0TW9kZWwge1xyXG5cdFx0aWYgKCFyZXF1ZXN0TW9kZWwpXHJcblx0XHRcdHJlcXVlc3RNb2RlbCA9IHRoaXMucmVxdWVzdE1vZGVsO1xyXG5cclxuXHRcdHJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMgPSBbXTtcclxuXHJcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuXHRcdFx0aWYgKGMudmlzaWJsZSkge1xyXG5cdFx0XHRcdGlmIChjLmZpbHRlclR5cGUgPT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLnRleHQgJiYgYy5maWx0ZXJUZXh0KSB7XHJcblx0XHRcdFx0XHRjLmZpbHRlclRleHQgPSBjLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0XHRyZXF1ZXN0TW9kZWwuY29sdW1uU2VhcmNoVmFsdWVzLnB1c2goPElTbGlja0dyaWRSZXF1ZXN0U2VhcmNoTW9kZWw+e1xyXG5cdFx0XHRcdFx0XHRjb2x1bW5OYW1lOiBjLmRhdGFGaWVsZE5hbWUsXHJcblx0XHRcdFx0XHRcdHNlYXJjaFZhbHVlSWQ6IG51bGwsXHJcblx0XHRcdFx0XHRcdHNlYXJjaFZhbHVlVGV4dDogYy5maWx0ZXJUZXh0XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZSBpZiAoYy5maWx0ZXJUeXBlID09PSBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcy5kcm9wZG93biAmJiBjLmZpbHRlckRyb3Bkb3duVmFsdWUpIHtcclxuXHRcdFx0XHRcdGMuZmlsdGVyRHJvcGRvd25WYWx1ZSA9IGMuZmlsdGVyRHJvcGRvd25WYWx1ZTtcclxuXHRcdFx0XHRcdHJlcXVlc3RNb2RlbC5jb2x1bW5TZWFyY2hWYWx1ZXMucHVzaCg8SVNsaWNrR3JpZFJlcXVlc3RTZWFyY2hNb2RlbD57XHJcblx0XHRcdFx0XHRcdGNvbHVtbk5hbWU6IGMuZGF0YUZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdFx0c2VhcmNoVmFsdWVJZDogYy5maWx0ZXJEcm9wZG93blZhbHVlLFxyXG5cdFx0XHRcdFx0XHRzZWFyY2hWYWx1ZVRleHQ6IG51bGxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmVxdWVzdE1vZGVsLnNvcnRDb2x1bW4gPSBudWxsO1xyXG5cdFx0Y29uc3Qgc29ydENvbHVtbiA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maW5kKHggPT4geC5zb3J0RGlyZWN0aW9uID09PSBTbGlja0dyaWRDb2x1bW5Tb3J0RGlyZWN0aW9uLmFzYyB8fCB4LnNvcnREaXJlY3Rpb24gPT09IFNsaWNrR3JpZENvbHVtblNvcnREaXJlY3Rpb24uZGVzYyk7XHJcblx0XHRpZiAoc29ydENvbHVtbikge1xyXG5cdFx0XHRyZXF1ZXN0TW9kZWwuc29ydENvbHVtbiA9IChzb3J0Q29sdW1uLnNvcnREaXJlY3Rpb24gPT09IDApID8gbnVsbCA6IHNvcnRDb2x1bW4uZGF0YUZpZWxkTmFtZTtcclxuXHRcdFx0cmVxdWVzdE1vZGVsLnNvcnREaXJlY3Rpb24gPSBzb3J0Q29sdW1uLnNvcnREaXJlY3Rpb247XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHJlcXVlc3RNb2RlbC5yZWNvcmRzUGVyUGFnZSA8PSAwKVxyXG5cdFx0XHRyZXF1ZXN0TW9kZWwucmVjb3Jkc1BlclBhZ2UgPSAyMDtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5yZXF1ZXN0TW9kZWw7XHJcblx0fVxyXG5cclxuXHRzZXRHcmlkT3B0aW9ucyhncmlkT3B0aW9uczogSVNsaWNrR3JpZE9wdGlvbnMpIHtcclxuXHRcdHRoaXMuZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcclxuXHJcblx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5KSB7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5mYXZvcml0ZXMpIHtcclxuXHRcdFx0XHRjb25zdCBmYXZvcml0ZU5hbWVzID0gdGhpcy5ncmlkT3B0aW9ucy5mYXZvcml0ZXMubWFwKGYgPT4gZi5mYXZvcml0ZU5hbWUpO1xyXG5cdFx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKGBHUklEXyR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fV9GQVZPUklURVNgLCBKU09OLnN0cmluZ2lmeShmYXZvcml0ZU5hbWVzKSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuZmF2b3JpdGVzLmZvckVhY2goZmF2b3JpdGUgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gTWFrZSBzdXJlIHdlIGhhdmVuJ3QgYWRkZWQgYSBuZXcgY29sdW1uIHRoYXQgbmVlZHMgdG8gYmUgc2F2ZWRcclxuXHRcdFx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBjb2x1bW5FeGlzdHMgPSBmYXZvcml0ZS5jb2x1bW5zLmZpbmRJbmRleCh4ID0+IHguZGF0YUZpZWxkTmFtZSA9PT0gYy5kYXRhRmllbGROYW1lKTtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbkV4aXN0cyA8IDApXHJcblx0XHRcdFx0XHRcdFx0ZmF2b3JpdGUuY29sdW1ucy5wdXNoKGMpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRsZXQgZ3JpZENvbHVtbnNKU09OID0gSlNPTi5zdHJpbmdpZnkoZmF2b3JpdGUuY29sdW1ucyk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5KSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHN1ZmZpeCA9IGZhdm9yaXRlLmZhdm9yaXRlTmFtZSA9PT0gJ0RlZmF1bHQnID8gJycgOiAoJ18nICsgZmF2b3JpdGUuZmF2b3JpdGVOYW1lKTtcclxuXHRcdFx0XHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3N1ZmZpeH1gLCBncmlkQ29sdW1uc0pTT04pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRpZiAoZmF2b3JpdGVOYW1lcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSkgPCAwKVxyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEZhdm9yaXRlID0gXCJEZWZhdWx0XCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRGYXZvcml0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1NFTEVDVEVEX0ZBVk9SSVRFXCIpIHx8ICdEZWZhdWx0JztcclxuXHJcblx0XHRcdC8vIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGFueSBkdXBsaWNhdGUgY29sdW1uIG5hbWVzXHJcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKGMxID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhRmllbGRDb3VudCA9ICh0aGlzLmdyaWRPcHRpb25zLmNvbHVtbnMuZmlsdGVyKHggPT4geC5kYXRhRmllbGROYW1lID09PSBjMS5kYXRhRmllbGROYW1lKSB8fCBbXSkubGVuZ3RoO1xyXG5cdFx0XHRcdGlmIChkYXRhRmllbGRDb3VudCA+IDEpXHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGBHcmlkICR7dGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5fSBjb2x1bW4gJHtjMS5kYXRhRmllbGROYW1lfSBpcyBkZWZpbmVkICR7ZGF0YUZpZWxkQ291bnR9IHRpbWVzYCk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Y29uc3Qgc3VmZml4ID0gdGhpcy5zZWxlY3RlZEZhdm9yaXRlID09PSAnRGVmYXVsdCcgPyAnJyA6ICgnXycgKyB0aGlzLnNlbGVjdGVkRmF2b3JpdGUpO1xyXG5cdFx0XHRsZXQgZ3JpZENvbHVtbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYEdSSURfJHt0aGlzLmdyaWRPcHRpb25zLmdyaWRLZXl9X0NPTFVNTlMke3N1ZmZpeH1gKTtcclxuXHRcdFx0aWYgKGdyaWRDb2x1bW5zSnNvbikge1xyXG5cdFx0XHRcdGxldCBjb2x1bW5zID0gPElTbGlja0dyaWRDb2x1bW5Nb2RlbFtdPkpTT04ucGFyc2UoZ3JpZENvbHVtbnNKc29uKTtcclxuXHJcblx0XHRcdFx0bGV0IGRpc3BsYXlPcmRlciA9IDA7XHJcblx0XHRcdFx0Y29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGNvbHVtbiA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maW5kKGdyaWRDb2x1bW4gPT4gZ3JpZENvbHVtbi5kYXRhRmllbGROYW1lID09PSBjLmRhdGFGaWVsZE5hbWUpO1xyXG5cdFx0XHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRjb2x1bW4udmlzaWJsZSA9IGMudmlzaWJsZTtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLmRpc3BsYXlPcmRlciA9IGRpc3BsYXlPcmRlcjtcclxuXHRcdFx0XHRcdFx0Y29sdW1uLnRpdGxlT3JpZW50YXRpb24gPSBjLnRpdGxlT3JpZW50YXRpb247XHJcblx0XHRcdFx0XHRcdGNvbHVtbi50aXRsZUhlaWdodCA9IGMudGl0bGVIZWlnaHQ7XHJcblx0XHRcdFx0XHRcdGNvbHVtbi53aWR0aCA9IGMud2lkdGg7XHJcblx0XHRcdFx0XHRcdGNvbHVtbi5mbGV4aWJsZSA9IGMuZmxleGlibGU7XHJcblx0XHRcdFx0XHRcdGNvbHVtbi5zb3J0RGlyZWN0aW9uID0gYy5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRjb2x1bW4uaXNMb2NrZWQgPSBjLmlzTG9ja2VkO1xyXG5cdFx0XHRcdFx0XHQvL2NvbHVtbi5maWx0ZXJUeXBlID0gYy5maWx0ZXJUeXBlO1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uLmlzTG9ja2VkICYmIGNvbHVtbi5maWx0ZXJUeXBlICE9PSBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcy5ub25lKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29sdW1uLmlzRmlsdGVyaW5nID0gdHJ1ZTtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5maWx0ZXJUeXBlID09PSBTbGlja0dyaWRDb2x1bW5GaWx0ZXJUeXBlcy50ZXh0KVxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLmZpbHRlclRleHQgPSBjLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoY29sdW1uLmZpbHRlclR5cGUgPT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLmRyb3Bkb3duKVxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLmZpbHRlckRyb3Bkb3duVmFsdWUgPSBjLmZpbHRlckRyb3Bkb3duVmFsdWU7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGlmICghY29sdW1uLmZpbHRlclRleHQgJiYgIWNvbHVtbi5maWx0ZXJEcm9wZG93blZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW4uaXNGaWx0ZXJpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbi5pc0xvY2tlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLmZpbHRlclRleHQgPSBudWxsO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLmZpbHRlckRyb3Bkb3duVmFsdWUgPSBudWxsO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGRpc3BsYXlPcmRlcisrO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucy5kZWZhdWx0UmVjb3Jkc1BlclBhZ2UgJiYgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1JFQ09SRFNfUEVSX1BBR0VcIikpXHJcblx0XHRcdFx0dGhpcy5yZWNvcmRzUGVyUGFnZVZhbHVlID0gdGhpcy5ncmlkT3B0aW9ucy5kZWZhdWx0UmVjb3Jkc1BlclBhZ2UudG9TdHJpbmcoKTtcclxuXHRcdFx0ZWxzZVxyXG5cdFx0XHRcdHRoaXMucmVjb3Jkc1BlclBhZ2VWYWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiR1JJRF9cIiArIHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZEtleSArIFwiX1JFQ09SRFNfUEVSX1BBR0VcIikgfHwgXCJBdXRvXCI7XHJcblxyXG5cdFx0XHRjb25zdCBmYXZvcml0ZXNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJHUklEX1wiICsgdGhpcy5ncmlkT3B0aW9ucy5ncmlkS2V5ICsgXCJfRkFWT1JJVEVTXCIpIHx8IGBbXCJEZWZhdWx0XCJdYDtcclxuXHRcdFx0dGhpcy5mYXZvcml0ZXMgPSAoPHN0cmluZ1tdPkpTT04ucGFyc2UoZmF2b3JpdGVzSnNvbikpLm1hcChmYXZvcml0ZSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIG5ldyBEcm9wRG93bk1vZGVsKGZhdm9yaXRlKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUgPT09IHRydWUpO1xyXG5cdFx0dGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnMuc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpID8gMSA6IChhLmRpc3BsYXlPcmRlciA8IGIuZGlzcGxheU9yZGVyKSA/IC0xIDogMCk7XHJcblxyXG5cdFx0dGhpcy5zaG93U2VhcmNoUm93ID0gdGhpcy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpbHRlclR5cGUgIT09IFNsaWNrR3JpZENvbHVtbkZpbHRlclR5cGVzLm5vbmUpLmxlbmd0aCA+IDA7XHJcblx0XHRsZXQgc29ydENvbHVtbiA9IHRoaXMudmlzaWJsZUNvbHVtbnMuZmluZChjID0+IGMuc29ydGFibGUgPT09IHRydWUgJiYgYy5zb3J0RGlyZWN0aW9uID4gMCk7XHJcblx0XHRpZiAodGhpcy52aXNpYmxlQ29sdW1ucy5sZW5ndGggPiAwICYmIHNvcnRDb2x1bW4pIHtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuc29ydENvbHVtbiA9IHNvcnRDb2x1bW4uZGF0YUZpZWxkTmFtZTtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0TW9kZWwuc29ydERpcmVjdGlvbiA9IHNvcnRDb2x1bW4uc29ydERpcmVjdGlvbjtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8ZGl2IGlkPVwic2xpY2stZ3JpZF97e3V1aWR9fVwiIGNsYXNzPVwic2xpY2stZ3JpZCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1maWxsXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDtcIiAjc2xpY2tHcmlkPlxyXG5cdDxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwiZC1mbGV4IGZsZXgtZmlsbFwiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG9cIj5cclxuXHJcblx0XHQ8ZGl2PlxyXG5cdFx0XHQ8dGFibGUgI3RhYmxlUmVmIGNsYXNzPVwidGFibGUgdGFibGUtc21cIiBbY2xhc3MudGFibGUtYm9yZGVyZWRdPVwiYm9yZGVyZWRcIiBbY2xhc3MudGFibGUtYm9yZGVybGVzc109XCIhYm9yZGVyZWRcIiBbY2xhc3MudGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnRhYmxlLWhvdmVyXT1cImhvdmVyXCIgW3N0eWxlLm9wYWNpdHldPVwiZ3JpZE9wYWNpdHlcIiBzdHlsZT1cIm1hcmdpbjogMDsgcGFkZGluZzogMDtcIiAoa2V5ZG93bik9XCJ0YWJsZUtleWRvd24oJGV2ZW50KVwiIHRhYmluZGV4PVwiMFwiPlxyXG5cdFx0XHRcdDx0aGVhZD5cclxuXHRcdFx0XHRcdDx0ciAjdGFibGVIZWFkZXJSb3cgKG1vdXNlbW92ZSk9XCJvbkNvbFJlc2l6ZU1vdXNlbW92ZSgkZXZlbnQpXCIgW25nQ2xhc3NdPVwieyAncmVzaXppbmcnOiBpc1Jlc2l6aW5nID09PSB0cnVlIH1cIj5cclxuXHRcdFx0XHRcdFx0PHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IGxldCBpZHggPSBpbmRleFwiIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIiBbc3R5bGUubWF4V2lkdGhdPVwiY29sdW1uLndpZHRoXCIgW3N0eWxlLmhlaWdodF09XCJjb2x1bW4udGl0bGVIZWlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IFtuZ0NsYXNzXT1cInsgJ3NsaWNrLWdyaWRfdGl0bGUtdmVydGljYWwnIDogY29sdW1uLnRpdGxlT3JpZW50YXRpb24gPT09IDEgfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImlkeCA+IDAgJiYgaWR4IDwgdmlzaWJsZUNvbHVtbnMubGVuZ3RoXCIgY2xhc3M9XCJyZXNpemVfY29sdW1uX2xlZnRcIiBbY2xhc3MudGFibGUtYm9yZGVyZWRdPVwiYm9yZGVyZWRcIiAobW91c2Vkb3duKT1cIm9uQ29sUmVzaXplTW91c2Vkb3duKCRldmVudCwgaWR4IC0gMSlcIiAoZGJsY2xpY2spPVwib25Db2xSZXNpemVEb3VibGVjbGljaygkZXZlbnQsIGlkeCAtIDEpXCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInNvcnRJY29uXCIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgPT09IHRydWUgJiYgY29sdW1uLnNvcnREaXJlY3Rpb24gPiAwXCI+PGkgY2xhc3M9XCJmYXJcIiBbbmdDbGFzc109XCJ7J2ZhLWNhcmV0LXVwJzogY29sdW1uLnNvcnREaXJlY3Rpb24gPT09IDEsICdmYS1jYXJldC1kb3duJzogY29sdW1uLnNvcnREaXJlY3Rpb24gPT09IDJ9XCI+PC9pPiZuYnNwOzwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZSA9PT0gdHJ1ZVwiIChjbGljayk9XCJzb3J0QnkoY29sdW1uKVwiIGRyYWdnYWJsZT1cImZhbHNlXCIgdGl0bGU9XCJ7e2NvbHVtbi50aXRsZX19XCI+e3tjb2x1bW4udGl0bGV9fTwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgPT09IGZhbHNlXCIgdGl0bGU9XCJ7e2NvbHVtbi50aXRsZX19XCI+e3tjb2x1bW4udGl0bGV9fTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlc2l6ZV9jb2x1bW5fcmlnaHRcIiAobW91c2Vkb3duKT1cIm9uQ29sUmVzaXplTW91c2Vkb3duKCRldmVudCwgaWR4KVwiIChkYmxjbGljayk9XCJvbkNvbFJlc2l6ZURvdWJsZWNsaWNrKCRldmVudCwgaWR4KVwiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PC90cj5cclxuXHRcdFx0XHRcdDx0ciAjdGFibGVIZWFkZXJTZWFyY2hSb3cgKm5nSWY9XCJzaG93U2VhcmNoUm93ID09PSB0cnVlXCI+XHJcblx0XHRcdFx0XHRcdDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHZpc2libGVDb2x1bW5zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInNsaWNrLWdyaWRfc2VhcmNoLWNvbHVtblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgKm5nSWY9XCJjb2x1bW4uaXNGaWx0ZXJpbmdcIiBjbGFzcz1cImZhcyBmYS10aW1lcy1jaXJjbGUgYmctd2hpdGUgdGV4dC1kYW5nZXIgbXItMVwiIChjbGljayk9XCJyZXNldEZpbHRlcihjb2x1bW4pXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgKm5nSWY9XCJjb2x1bW4uaXNGaWx0ZXJpbmcgJiYgY29sdW1uLmlzTG9ja2VkXCIgY2xhc3M9XCJmYXIgZmEtbG9jayBtci0xXCIgKGNsaWNrKT1cInRvZ2dsZUxvY2soY29sdW1uKVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxpICpuZ0lmPVwiY29sdW1uLmlzRmlsdGVyaW5nICYmICFjb2x1bW4uaXNMb2NrZWRcIiBjbGFzcz1cImZhciBmYS1sb2NrLW9wZW4gbXItMVwiIChjbGljayk9XCJ0b2dnbGVMb2NrKGNvbHVtbilcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiY29sdW1uLmZpbHRlclR5cGUgPT09IDFcIiBjbGFzcz1cInNsaWNrLWdyaWRfdGV4dC1zZWFyY2hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGF1dG9jb21wbGV0ZT1cIm5vcGVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJjb2x1bW4uZmlsdGVyVGV4dFwiIG5hbWU9XCJzZWFyY2hUZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAoa2V5ZG93bik9XCJvblNlYXJjaChjb2x1bW4pXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJjb2x1bW4uZmlsdGVyVHlwZSA9PT0gMlwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgc2xpY2stZ3JpZF9kcm9wLWRvd24tc2VhcmNoXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzbGljay1kcm9wLWRvd24gW2l0ZW1zXT1cImNvbHVtbi5maWx0ZXJEcm9wZG93blZhbHVlc1wiIFsobmdNb2RlbCldPVwiY29sdW1uLmZpbHRlckRyb3Bkb3duVmFsdWVcIiBsaXN0V2lkdGg9XCJhdXRvXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAob25TZWxlY3QpPVwib25TZWFyY2hTZWxlY3QoJGV2ZW50LCBjb2x1bW4pXCI+PC9zbGljay1kcm9wLWRvd24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDwvdHI+XHJcblx0XHRcdFx0PC90aGVhZD5cclxuXHJcblx0XHRcdFx0PHRib2R5PlxyXG5cdFx0XHRcdFx0PHRyICpuZ0lmPVwibG9hZGVkICYmIHZpc2libGVEYXRhLmxlbmd0aCA9PT0gMFwiPjx0ZCBbY29sU3Bhbl09XCJ2aXNpYmxlQ29sdW1ucy5sZW5ndGhcIj5ObyBEYXRhPC90ZD48L3RyPlxyXG5cdFx0XHRcdFx0PHRyICpuZ0Zvcj1cImxldCByb3dEYXRhIG9mIHZpc2libGVEYXRhOyBsZXQgaWR4ID0gaW5kZXhcIiAjdGFibGVCb2R5Um93cyAoY2xpY2spPVwib25Sb3dDbGlja2VkKHJvd0RhdGEsIGlkeClcIiAoZGJsY2xpY2spPVwib25Sb3dEb3VibGVDbGlja2VkKHJvd0RhdGEsIGlkeClcIiAoY29udGV4dG1lbnUpPVwib25Sb3dDb250ZXh0TWVudUNsaWNrZWQoJGV2ZW50LCByb3dEYXRhLCBpZHgpXCIgW2NsYXNzLnRhYmxlLXN1Y2Nlc3NdPVwic2VsZWN0ZWRJbmRleCA9PT0gaWR4XCI+XHJcblx0XHRcdFx0XHRcdDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHZpc2libGVDb2x1bW5zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cIiFjb2x1bW4uY29sdW1uS2V5XCIgY2xhc3M9XCJzbGljay1ncmlkX2NvbHVtbi1jb250ZW50XCIgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiIFtzdHlsZS5tYXhXaWR0aF09XCJjb2x1bW4ud2lkdGhcIiBbaW5uZXJIVE1MXT1cImdldENvbHVtbkhUTUwocm93RGF0YSwgY29sdW1uLmRhdGFGaWVsZE5hbWUpIHwgc2xpY2tHcmlkU2FuaXRpemVIdG1sXCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImNvbHVtbi5jb2x1bW5LZXlcIiBjbGFzcz1cInNsaWNrLWdyaWRfY29sdW1uLWNvbnRlbnRcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCIgW3N0eWxlLm1heFdpZHRoXT1cImNvbHVtbi53aWR0aFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmc1tjb2x1bW4uY29sdW1uS2V5XSwgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDwvdGJvZHk+XHJcblx0XHRcdDwvdGFibGU+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzbGljay1ncmlkLWZvb3RlciBtdC0yIGQtZmxleFwiPlxyXG5cdFx0PGRpdj5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Db2x1bW5TZWxlY3REaWFsb2coKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj48aSBjbGFzcz1cImZhciBmYS1jb2x1bW5zXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwiZmF2b3JpdGVzPy5sZW5ndGggPiAxXCI+XHJcblx0XHRcdDxidXR0b24gI2Zhdm9yaXRlU2VsZWN0UmVmIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG1sLTFcIj48aSBjbGFzcz1cImZhciBmYS1zdGFyXCI+PC9pPiB7e3RoaXMuc2VsZWN0ZWRGYXZvcml0ZX19PC9idXR0b24+XHJcblx0XHRcdDxzbGljay1wb3BvdmVyIFtlbGVtZW50XT1cImZhdm9yaXRlU2VsZWN0UmVmXCIgcG9zaXRpb249XCJ0b3BcIiBzaG93QXJyb3c9XCJmYWxzZVwiIFt0b3BPZmZzZXRQeF09XCIwXCIgW2xlZnRPZmZzZXRQeF09XCIwXCIgW3Nob3dCeUNsaWNrXT1cInRydWVcIj5cclxuXHRcdFx0XHQ8dGFibGUgY2xhc3M9XCJ0YWJsZS1ib3JkZXJsZXNzIHRhYmxlLXNtIHRhYmxlLWhvdmVyXCIgc3R5bGU9XCJtaW4td2lkdGg6IDI1MHB4OyBjdXJzb3I6IGRlZmF1bHRcIj5cclxuXHRcdFx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHRcdFx0PHRyICpuZ0Zvcj1cImxldCBmYXZvcml0ZSBvZiBmYXZvcml0ZXNcIiAoY2xpY2spPVwic2V0RmF2b3JpdGUoZmF2b3JpdGUudGV4dClcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGQ+PGkgKm5nSWY9XCJmYXZvcml0ZS50ZXh0ID09PSBzZWxlY3RlZEZhdm9yaXRlXCIgY2xhc3M9XCJmYXIgZmEtc3RhciBtci0xXCI+PC9pPnt7ZmF2b3JpdGUudGV4dH19PC90ZD5cclxuXHRcdFx0XHRcdFx0PC90cj5cclxuXHRcdFx0XHRcdDwvdGJvZHk+XHJcblx0XHRcdFx0PC90YWJsZT5cclxuXHRcdFx0PC9zbGljay1wb3BvdmVyPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd2luZ0FsbFJlY29yZHMgPT0gZmFsc2VcIj5cclxuXHRcdFx0PHNsaWNrLXBhZ2luZyBbKHBhZ2VOdW1iZXIpXT1cImN1cnJlbnRQYWdlXCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcmVjb3Jkc1BlclBhZ2VdPVwicmVjb3Jkc1BlclBhZ2VcIiAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9zbGljay1wYWdpbmc+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgKm5nSWY9XCJzaG93aW5nQWxsUmVjb3JkcyA9PSBmYWxzZVwiIGNsYXNzPVwibWwtMVwiPlxyXG5cdFx0XHQ8YnV0dG9uICNyZWNvcmRzUGVyUGFnZVJlZiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiPnt7cmVjb3Jkc1BlclBhZ2VWYWx1ZX19Jm5ic3A7Jm5ic3A7PGkgc3R5bGU9XCJmb250LXNpemU6IDEycHhcIiBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9idXR0b24+XHJcblxyXG5cdFx0XHQ8c2xpY2stcG9wb3ZlciBbZWxlbWVudF09XCJyZWNvcmRzUGVyUGFnZVJlZlwiIHBvc2l0aW9uPVwidG9wXCIgc2hvd0Fycm93PVwiZmFsc2VcIiBbdG9wT2Zmc2V0UHhdPVwiMFwiIFtsZWZ0T2Zmc2V0UHhdPVwiMFwiIFtzaG93QnlDbGlja109XCJ0cnVlXCI+XHJcblx0XHRcdFx0PHRhYmxlIGNsYXNzPVwidGFibGUtYm9yZGVybGVzcyB0YWJsZS1zbSB0YWJsZS1ob3ZlclwiIHN0eWxlPVwibWluLXdpZHRoOiAxNTBweDtcIj5cclxuXHRcdFx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHRcdFx0PHRyIChjbGljayk9XCJvblJlY29yZHNQZXJQYWdlU2VsZWN0ZWQoJ0F1dG8nKVwiPjx0ZD5BdXRvPC90ZD48L3RyPlxyXG5cdFx0XHRcdFx0XHQ8dHIgKGNsaWNrKT1cIm9uUmVjb3Jkc1BlclBhZ2VTZWxlY3RlZCgnMjUnKVwiPjx0ZD4yNTwvdGQ+PC90cj5cclxuXHRcdFx0XHRcdFx0PHRyIChjbGljayk9XCJvblJlY29yZHNQZXJQYWdlU2VsZWN0ZWQoJzUwJylcIj48dGQ+NTA8L3RkPjwvdHI+XHJcblx0XHRcdFx0XHRcdDx0ciAoY2xpY2spPVwib25SZWNvcmRzUGVyUGFnZVNlbGVjdGVkKCcxMDAnKVwiPjx0ZD4xMDA8L3RkPjwvdHI+XHJcblx0XHRcdFx0XHQ8L3Rib2R5PlxyXG5cdFx0XHRcdDwvdGFibGU+XHJcblx0XHRcdDwvc2xpY2stcG9wb3Zlcj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxzbGljay1kaWFsb2cgI2NvbHVtblNlbGVjdERpYWxvZ1JlZiBoZWFkZXI9XCJTZWxlY3QgQ29sdW1uc1wiPlxyXG5cdDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiA0NzVweDtcIiBjbGFzcz1cIm14LTVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXgtZmlsbFwiPlxyXG5cdFx0XHRcdDxzbGljay1kcm9wLWRvd24gW2l0ZW1zXT1cImZhdm9yaXRlc1wiXHJcblx0XHRcdFx0XHRcdFx0XHQgW25nTW9kZWxdPVwic2VsZWN0ZWRGYXZvcml0ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQgKG9uU2VsZWN0KT1cImxvYWRGYXZvcml0ZSgkZXZlbnQpXCI+PC9zbGljay1kcm9wLWRvd24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2PjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtbC0xXCIgKGNsaWNrKT1cImFkZE5ld0Zhdm9yaXRlKClcIj48aSBjbGFzcz1cImZhciBmYS1wbHVzXCI+PC9pPjwvYnV0dG9uPjwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG10LTFcIiBzbGljay1kcm9wLWxpc3QgKG9uU2xpY2tEcm9wTGlzdFJlb3JkZXIpPVwib25Db2x1bW5SZW9yZGVyKCRldmVudClcIj5cclxuXHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtblNlbGVjdERpYWxvZ0NvbHVtbnNcIiBjbGFzcz1cImQtZmxleFwiIHNsaWNrLWRyb3AtbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDxkaXYgc3R5bGU9XCJ3aWR0aDogMjBweFwiPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAycHg7XCIgWyhuZ01vZGVsKV09XCJjb2x1bW4udmlzaWJsZVwiIC8+PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInB5LTAgZmxleC1maWxsXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0OyBjdXJzb3I6IG5zLXJlc2l6ZVwiIHNsaWNrLWRyb3AtbGlzdC1ncmFiPnt7Y29sdW1uLnRpdGxlfX08L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8c2xpY2stZGlhbG9nLWZvb3Rlcj5cclxuXHRcdDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiIGNsYXNzPVwiY29sLTEyIHRleHQtY2VudGVyIG1iLTIgbXQtMVwiPlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25TYXZlQ29sdW1ucygpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xXCI+PGkgY2xhc3M9XCJmYXIgZmEtc2F2ZVwiPjwvaT4mbmJzcDtTYXZlPC9idXR0b24+Jm5ic3A7XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJvbkNhbmNlbENvbHVtbnMoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9zbGljay1kaWFsb2ctZm9vdGVyPlxyXG48L3NsaWNrLWRpYWxvZz5cclxuXHJcblxyXG48c2xpY2stY29uZmlybS1kaWFsb2cgI2FkZE5ld0Zhdm9yaXRlRGlhbG9nUmVmIHdpZHRoPVwiMzAwXCI+XHJcblx0PGxhYmVsPkVudGVyIG5ldyBmYXZvcml0ZSBuYW1lPC9sYWJlbD5cclxuXHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBteC0zXCIgc3R5bGU9XCJ3aWR0aDogMjUwcHhcIiBbKG5nTW9kZWwpXT1cIm5ld0Zhdm9yaXRlVGV4dFwiIC8+XHJcbjwvc2xpY2stY29uZmlybS1kaWFsb2c+Il19
@@ -40,10 +40,10 @@ export class SlickInitService {
40
40
  SlickInitService.getParams().errorLog = errorLog;
41
41
  }
42
42
  }
43
- SlickInitService.version = "4.4.19";
43
+ SlickInitService.version = "4.4.22";
44
44
  /** @nocollapse */ SlickInitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
45
45
  /** @nocollapse */ SlickInitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickInitService });
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickInitService, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: function () { return []; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLGdCQUFnQixDQUFDO0lBR2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBMkI7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyRSxVQUFVLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFPLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDO1FBRWpELE9BQWEsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUztRQUNmLElBQUksQ0FBTyxNQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1NBQ3BEO1FBRUQsT0FBOEIsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUF1QjtRQUN6QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7O0FBN0NNLHdCQUFPLEdBQUcsUUFBUSxDQUFDO2dJQURkLGdCQUFnQjtvSUFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiNC40LjE5XCI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cclxuXHRzdGF0aWMgaW5pdChpbml0UGFyYW1zOiBTbGlja0luaXRQYXJhbXMpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0Y29uc29sZS5pbmZvKGBTbGljayBDb21wb25lbnRzIFZlcnNpb24gJHtTbGlja0luaXRTZXJ2aWNlLnZlcnNpb259YCk7XHJcblx0XHRpbml0UGFyYW1zLnZlcnNpb24gPSBTbGlja0luaXRTZXJ2aWNlLnZlcnNpb247XHJcblx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGluaXRQYXJhbXM7XHJcblxyXG5cdFx0cmV0dXJuICg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBhcmFtcygpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0aWYgKCEoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcykge1xyXG5cdFx0XHRjb25zdCBkZWZhdWx0UGFyYW1zID0gbmV3IFNsaWNrSW5pdFBhcmFtcygpO1xyXG5cdFx0XHRkZWZhdWx0UGFyYW1zLmF0dGFjaFRvID0gXCJib2R5XCI7XHJcblx0XHRcdCg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zID0gZGVmYXVsdFBhcmFtcztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gPFNsaWNrSW5pdFBhcmFtcz4oPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRBdHRhY2hUbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG87XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0QXR0YWNoVG8oYXR0YWNoVG9FbGVtZW50OiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG8gPSBhdHRhY2hUb0VsZW1lbnQ7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0UGxhdGZvcm0oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldFBsYXRmb3JtKHBsYXRmb3JtOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkucGxhdGZvcm0gPSBwbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRFcnJvckxvZygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2c7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IHN0cmluZykge1xyXG5cdFx0U2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5lcnJvckxvZyA9IGVycm9yTG9nO1xyXG5cdH1cclxufVxyXG5cclxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLGdCQUFnQixDQUFDO0lBR2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBMkI7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyRSxVQUFVLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFPLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDO1FBRWpELE9BQWEsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUztRQUNmLElBQUksQ0FBTyxNQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1NBQ3BEO1FBRUQsT0FBOEIsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUF1QjtRQUN6QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7O0FBN0NNLHdCQUFPLEdBQUcsUUFBUSxDQUFDO2dJQURkLGdCQUFnQjtvSUFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiNC40LjIyXCI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cclxuXHRzdGF0aWMgaW5pdChpbml0UGFyYW1zOiBTbGlja0luaXRQYXJhbXMpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0Y29uc29sZS5pbmZvKGBTbGljayBDb21wb25lbnRzIFZlcnNpb24gJHtTbGlja0luaXRTZXJ2aWNlLnZlcnNpb259YCk7XHJcblx0XHRpbml0UGFyYW1zLnZlcnNpb24gPSBTbGlja0luaXRTZXJ2aWNlLnZlcnNpb247XHJcblx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGluaXRQYXJhbXM7XHJcblxyXG5cdFx0cmV0dXJuICg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBhcmFtcygpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0aWYgKCEoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcykge1xyXG5cdFx0XHRjb25zdCBkZWZhdWx0UGFyYW1zID0gbmV3IFNsaWNrSW5pdFBhcmFtcygpO1xyXG5cdFx0XHRkZWZhdWx0UGFyYW1zLmF0dGFjaFRvID0gXCJib2R5XCI7XHJcblx0XHRcdCg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zID0gZGVmYXVsdFBhcmFtcztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gPFNsaWNrSW5pdFBhcmFtcz4oPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRBdHRhY2hUbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG87XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0QXR0YWNoVG8oYXR0YWNoVG9FbGVtZW50OiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG8gPSBhdHRhY2hUb0VsZW1lbnQ7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0UGxhdGZvcm0oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldFBsYXRmb3JtKHBsYXRmb3JtOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkucGxhdGZvcm0gPSBwbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRFcnJvckxvZygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2c7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IHN0cmluZykge1xyXG5cdFx0U2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5lcnJvckxvZyA9IGVycm9yTG9nO1xyXG5cdH1cclxufVxyXG5cclxuIl19