slick-components 17.0.11 → 17.0.13

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.
@@ -172,6 +172,9 @@ export class SlickEmailerComponent {
172
172
  this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
173
173
  resolve();
174
174
  });
175
+ ed.on('change', (args) => {
176
+ this.emailerModel.body = this.getBody();
177
+ });
175
178
  }
176
179
  });
177
180
  });
@@ -229,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
229
232
  type: ViewChild,
230
233
  args: ["tinyMCEContainerRef"]
231
234
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZW1haWxlci9zbGljay1lbWFpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUErQyxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEYsT0FBTyxFQUE2Qix3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8scUJBQXFCO0lBb0JqQyxZQUFvQix3QkFBa0QsRUFBVSxjQUFpQztRQUE3Riw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEIzRixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBQ3ZCLDJCQUFzQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25FLDBCQUFxQixHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNFLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBS25HLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSTdCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUdwQyxrQkFBYSxHQUFXLElB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RVEsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJU2xpY2tGaWxlTW9kZWwgfSBmcm9tIFwiLi4vc2xpY2stZmlsZS1tb2RlbC9zbGljay1maWxlLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJNb2RlbCwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwsIFNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXItYWRkcmVzcy5tb2RlbFwiO1xyXG5cclxuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWVtYWlsZXInLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stZW1haWxlci5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0VtYWlsZXJDb21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRTbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2VcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0VtYWlsZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInRvRW1haWxBZGRyZXNzTGlzdFwiKSB0b0VtYWlsQWRkcmVzc0xpc3Q6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXTtcclxuXHRASW5wdXQoXCJzaG93QnV0dG9uc1wiKSBzaG93QnV0dG9uczogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KFwiYm9keUhlaWdodFwiKSBib2R5SGVpZ2h0OiBzdHJpbmcgPSBcIjE4MHB4XCI7XHJcblx0QE91dHB1dChcInRvQWRkcmVzc1NlYXJjaFwiKSB0b0FkZHJlc3NTZWFyY2hFbWl0dGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KFwic2VuZEVtYWlsQ2xpY2tcIikgc2VuZEVtYWlsQ2xpY2tFbWl0dGVyOiBFdmVudEVtaXR0ZXI8SVNsaWNrRW1haWxlck1vZGVsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KFwiY2FuY2VsRW1haWxDbGlja1wiKSBjYW5jZWxFbWFpbENsaWNrRW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwidGlueU1DRUNvbnRhaW5lclJlZlwiKSB0aW55TUNFQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuXHRlbWFpbGVyTW9kZWw6IElTbGlja0VtYWlsZXJNb2RlbDtcclxuXHRpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0dGlueU1DRVV1aWQ6IHN0cmluZztcclxuXHR0aW55TUNFSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHR0b0VtYWlsQWRkcmVzczogc3RyaW5nO1xyXG5cdGVkaXRvcjogYW55O1xyXG5cdHNwaW5uZXJTdGF0dXM6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlOiBTbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHR0aGlzLnV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblx0XHR0aGlzLnRpbnlNQ0VVdWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnJlbW92ZVRpbnlNQ0UoKTtcclxuXHR9XHJcblxyXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcblx0Ly8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxyXG5cdHB1YmxpYyBhc3luYyB3cml0ZVZhbHVlKG9iajogSVNsaWNrRW1haWxlck1vZGVsKSB7XHJcblx0XHRpZiAob2JqKSB7XHJcblx0XHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwicmVzZXRcIjtcclxuXHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwgPSBvYmo7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzKVxyXG5cdFx0XHRcdHRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzID0gW107XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMpXHJcblx0XHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcyA9IFtdO1xyXG5cclxuXHRcdFx0YXdhaXQgdGhpcy5pbml0VGlueU1DRSgpO1xyXG5cdFx0XHRjb25zdCBib2R5ID0gKHRoaXMuZW1haWxlck1vZGVsKSA/ICh0aGlzLmVtYWlsZXJNb2RlbC5ib2R5IHx8ICcnKSA6ICcnO1xyXG5cdFx0XHR0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5zZXRDb250ZW50KGJvZHkpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuZW1haWxlck1vZGVsID0gbnVsbDtcclxuXHRcdFx0aWYgKHRoaXMudGlueU1DRUluaXRpYWxpemVkKVxyXG5cdFx0XHRcdHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApLnNldENvbnRlbnQobnVsbCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblxyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHQvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0dG9BZGRyZXNzU2VhcmNoKHNlYXJjaFRleHQpIHtcclxuXHRcdHRoaXMudG9BZGRyZXNzU2VhcmNoRW1pdHRlci5lbWl0KHNlYXJjaFRleHQpO1xyXG5cdH1cclxuXHJcblx0b25TZWxlY3RFbWFpbEFkZHJlc3MoZW1haWxlckFkZHJlc3NNb2RlbDogSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCkge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5wdXNoKGVtYWlsZXJBZGRyZXNzTW9kZWwpO1xyXG5cclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cdH1cclxuXHJcblx0b25GcmVlZm9ybVRleHRTZWxlY3QodGV4dDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmcmVlZm9ybUVtYWlsQWRkcmVzcyA9IG5ldyBTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwoKTtcclxuXHRcdGZyZWVmb3JtRW1haWxBZGRyZXNzLmRpc3BsYXlOYW1lID0gdGV4dDtcclxuXHRcdGZyZWVmb3JtRW1haWxBZGRyZXNzLmVtYWlsQWRkcmVzcyA9IHRleHQ7XHJcblxyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5wdXNoKGZyZWVmb3JtRW1haWxBZGRyZXNzKTtcclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cdH1cclxuXHJcblx0ZGVsZXRlRW1haWxBZGRyZXNzKGlkeDogbnVtYmVyKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLnNwbGljZShpZHgsIDEpO1xyXG5cdH1cclxuXHJcblx0b25BdHRhY2htZW50c0NoYW5nZWQoYXR0YWNobWVudHM6IElTbGlja0ZpbGVNb2RlbFtdKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC5hdHRhY2htZW50cyA9IHRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzLmNvbmNhdChhdHRhY2htZW50cyk7XHJcblx0fVxyXG5cclxuXHR2YWxpZGF0ZSgpIHtcclxuXHRcdHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG5cdFx0aWYgKHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMubGVuZ3RoID09PSAwKVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXRFbWFpbEFkZHJlc3NlcyhlbWFpbGVyTW9kZWw6IElTbGlja0VtYWlsZXJNb2RlbCk6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXSB7XHJcblx0XHRsZXQgc2xpY2tFbWFpbGVyQWRkcmVzc2VzID0gZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMgfHwgW107XHJcblxyXG5cdFx0aWYgKHRoaXMudG9FbWFpbEFkZHJlc3MpIHtcclxuXHRcdFx0Y29uc3Qgc2NydWJiZWRUb0VtYWlsQWRkcmVzcyA9IHRoaXMudG9FbWFpbEFkZHJlc3MucmVwbGFjZShcIixcIiwgXCI7XCIpLnJlcGxhY2UoL1xccy9nLCBcIjtcIik7XHJcblx0XHRcdGNvbnN0IGVtYWlsQWRkcmVzc2VzVG9BZGRTdHJpbmdzID0gc2NydWJiZWRUb0VtYWlsQWRkcmVzcy5zcGxpdChcIjtcIikuZmlsdGVyKHggPT4geCAhPT0gJycpO1xyXG5cdFx0XHRjb25zdCBlbWFpbEFkZHJlc3Nlc1RvQWRkID0gZW1haWxBZGRyZXNzZXNUb0FkZFN0cmluZ3MubWFwKHggPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCA9IG5ldyBTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwoKTtcclxuXHRcdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwuY29udGFjdElkID0gMDtcclxuXHRcdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwuZGlzcGxheU5hbWUgPSB4O1xyXG5cdFx0XHRcdHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbC5lbWFpbEFkZHJlc3MgPSB4O1xyXG5cdFx0XHRcdHJldHVybiBzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWw7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzZXMgPSBzbGlja0VtYWlsZXJBZGRyZXNzZXMuY29uY2F0KGVtYWlsQWRkcmVzc2VzVG9BZGQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cclxuXHRcdHJldHVybiBzbGlja0VtYWlsZXJBZGRyZXNzZXM7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzZXRCb2R5KGJvZHk6IHN0cmluZykge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIlNMSUNLX0VNQUlMRVJfU0VUX0JPRFlcIik7XHJcblxyXG5cdFx0XHRhd2FpdCB0aGlzLmluaXRUaW55TUNFKCk7XHJcblx0XHRcdGNvbnN0IHRpbnlNQ0UgPSB0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKTtcclxuXHJcblx0XHRcdGlmICghdGlueU1DRSlcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwidGlueU1DRSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcblxyXG5cdFx0XHR0aW55TUNFLnNldENvbnRlbnQoYm9keSk7XHJcblxyXG5cdFx0fVxyXG5cdFx0ZmluYWxseSB7XHJcblx0XHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJTTElDS19FTUFJTEVSX1NFVF9CT0RZXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0Qm9keSgpIHtcclxuXHRcdHJldHVybiB0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5nZXRDb250ZW50KCk7XHJcblx0fVxyXG5cclxuXHRvblNlbmRFbWFpbCgpIHtcclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMgPSB0aGlzLmdldEVtYWlsQWRkcmVzc2VzKHRoaXMuZW1haWxlck1vZGVsKTtcclxuXHJcblx0XHRpZiAodGhpcy52YWxpZGF0ZSgpID09PSBmYWxzZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLmJvZHkgPSB0aGlzLmdldEJvZHkoKTtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwic3BpblwiO1xyXG5cdFx0aWYgKHRoaXMuc2VuZEVtYWlsQ2xpY2tFbWl0dGVyKVxyXG5cdFx0XHR0aGlzLnNlbmRFbWFpbENsaWNrRW1pdHRlci5lbWl0KHRoaXMuZW1haWxlck1vZGVsKTtcclxuXHR9XHJcblxyXG5cdGVtYWlsU2VudCgpIHtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwib2tcIjtcclxuXHR9XHJcblxyXG5cdGVtYWlsRXJyb3IoKSB7XHJcblx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcImVycm9yXCI7XHJcblx0fVxyXG5cclxuXHRvbkNhbmNlbEVtYWlsKCkge1xyXG5cdFx0aWYgKHRoaXMuY2FuY2VsRW1haWxDbGlja0VtaXR0ZXIpXHJcblx0XHRcdHRoaXMuY2FuY2VsRW1haWxDbGlja0VtaXR0ZXIuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZGlhbG9nSW5pdCgpIHtcclxuXHRcdHRoaXMucmVtb3ZlVGlueU1DRSgpO1xyXG5cclxuXHRcdGF3YWl0IHRoaXMuaW5pdFRpbnlNQ0UoKTtcclxuXHRcdGNvbnN0IGJvZHkgPSAodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJyc7XHJcblx0XHR0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5zZXRDb250ZW50KGJvZHkpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgaW5pdFRpbnlNQ0UoKTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIlNMSUNLX0VNQUlMRVJfSU5JVF9USU5ZX01DRVwiKTtcclxuXHJcblx0XHRcdHRpbnltY2UucmVtb3ZlKCk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMudGlueU1DRUluaXRpYWxpemVkKSB7XHJcblx0XHRcdFx0Y29uc3QgdGlueU1DRUNvbnRhaW5lciA9IDxIVE1MRGl2RWxlbWVudD50aGlzLnRpbnlNQ0VDb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0XHRjb25zdCB0aW55TUNFVGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XHJcblx0XHRcdFx0dGlueU1DRVRleHRhcmVhLmlkID0gYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YDtcclxuXHRcdFx0XHR0aW55TUNFVGV4dGFyZWEuc3R5bGUubWluSGVpZ2h0ID0gXCIzMDBweFwiO1xyXG5cdFx0XHRcdHRpbnlNQ0VUZXh0YXJlYS5zdHlsZS5tYXhIZWlnaHQgPSBcIjMwMHB4XCI7XHJcblx0XHRcdFx0dGlueU1DRUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aW55TUNFVGV4dGFyZWEpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aW55bWNlLmluaXQoe1xyXG5cdFx0XHRcdHNlbGVjdG9yOiBgI2VtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCxcclxuXHRcdFx0XHRicmFuZGluZzogZmFsc2UsXHJcblx0XHRcdFx0bWVudWJhcjogJ2VkaXQgaW5zZXJ0IGZvcm1hdCB0b29scycsXHJcblx0XHRcdFx0cGx1Z2luczogJ2xpbmsgaW1hZ2UgaW1hZ2V0b29scyBjb2RlJyxcclxuXHRcdFx0XHR0b29sYmFyOiAnZm9udHNlbGVjdCB8IGZvbnRzaXplc2VsZWN0IHwgc3R5bGVzZWxlY3QgfCBib2xkIGl0YWxpYyB1bmRlcmxpbmUgfCBpbmRlbnQgb3V0ZGVudCB8IGJ1bGxpc3QgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCB8IGNvZGUgfCBpbWFnZScsXHJcblx0XHRcdFx0Zm9udHNpemVfZm9ybWF0czogXCI4cHggMTBweCAxMnB4IDE0cHggMThweCAyNHB4IDM2cHhcIixcclxuXHRcdFx0XHRoZWlnaHQ6IHRoaXMuYm9keUhlaWdodCxcclxuXHRcdFx0XHRjb252ZXJ0X3VybHM6IGZhbHNlLFxyXG5cdFx0XHRcdHNldHVwOiAoZWQpID0+IHtcclxuXHRcdFx0XHRcdGVkLm9uKCdpbml0JywgKGFyZ3MpID0+IHtcclxuXHJcblx0XHRcdFx0XHRcdGVkLnNldENvbnRlbnQoKHRoaXMuZW1haWxlck1vZGVsKSA/ICh0aGlzLmVtYWlsZXJNb2RlbC5ib2R5IHx8ICcnKSA6ICcnKTtcclxuXHRcdFx0XHRcdFx0dGhpcy50aW55TUNFSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiU0xJQ0tfRU1BSUxFUl9JTklUX1RJTllfTUNFXCIpO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHJlbW92ZVRpbnlNQ0UoKSB7XHJcblx0XHRpZiAodGhpcy50aW55TUNFVXVpZCkge1xyXG5cdFx0XHRjb25zdCB0aW55TUNFID0gdGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCk7XHJcblxyXG5cdFx0XHRpZiAodGlueU1DRSlcclxuXHRcdFx0XHR0aW55TUNFLnJlbW92ZSgpO1xyXG5cclxuXHRcdFx0Y29uc3QgdGlueU1DRUNvbnRhaW5lciA9IDxIVE1MRGl2RWxlbWVudD50aGlzLnRpbnlNQ0VDb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0dGlueU1DRUNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xyXG5cclxuXHRcdFx0dGhpcy50aW55TUNFSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdHRoaXMudGlueU1DRVV1aWQgPSBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZW1haWxlck1vZGVsXCIgaWQ9XCJzbGljay1lbWFpbGVyX3t7dXVpZH19XCIgY2xhc3M9XCJzbGljay1lbWFpbGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1N1Ym1pdHRlZCA9PT0gdHJ1ZSAmJiBlbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVycm9yV3JhcHBlciBzaG93SWNvbnNcIj48ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIj5FbWFpbCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGVtYWlsIGFkZHJlc3M8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj48c3BhbiBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgI2VtYWlsQWRkcmVzc0F1dG9jb21wbGV0ZSBbKG5nTW9kZWwpXT1cInRvRW1haWxBZGRyZXNzXCIgcGxhY2Vob2xkZXI9XCJFbWFpbCBTZWFyY2guLi5cIiBhdXRvZm9jdXMgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzbGljay1hdXRvLWNvbXBsZXRlIFtpbnB1dFJlZl09XCJlbWFpbEFkZHJlc3NBdXRvY29tcGxldGVcIiB0ZXh0RmllbGQ9XCJlbWFpbERpc3BsYXlcIiBbaXRlbXNdPVwidG9FbWFpbEFkZHJlc3NMaXN0XCIgKG9uUmVmcmVzaCk9XCJ0b0FkZHJlc3NTZWFyY2goJGV2ZW50KVwiIChvblNlbGVjdCk9XCJvblNlbGVjdEVtYWlsQWRkcmVzcygkZXZlbnQpXCIgKG9uRnJlZWZvcm1UZXh0U2VsZWN0KT1cIm9uRnJlZWZvcm1UZXh0U2VsZWN0KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZW1haWxEaXNwbGF5IFtzbGlja0F1dG9Db21wbGV0ZUxpc3RJdGVtVGVtcGxhdGVdPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2xpbmUtaGVpZ2h0OiAxLjFlbTsgZm9udC1zaXplOiAxMnB4Oyc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1haWxEaXNwbGF5LmRpc3BsYXlOYW1lfX0gW3t7ZW1haWxEaXNwbGF5LmVtYWlsQWRkcmVzc319XVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zbGljay1hdXRvLWNvbXBsZXRlPlxyXG5cclxuICAgICAgICAgICAgPGxhYmVsPlRvOiZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVtYWlsQWRkcmVzcyBvZiBlbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlczsgbGV0IGlkeCA9IGluZGV4O1wiIGNsYXNzPVwic2xpY2stZW1haWxlcl9lbWFpbC1hZGRyZXNzIGFsZXJ0IGFsZXJ0LXNlY29uZGFyeVwiPnt7ZW1haWxBZGRyZXNzLmRpc3BsYXlOYW1lfX0gW3t7ZW1haWxBZGRyZXNzLmVtYWlsQWRkcmVzc319XTxpIChjbGljayk9XCJkZWxldGVFbWFpbEFkZHJlc3MoaWR4KVwiIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBiZy13aGl0ZSB0ZXh0LWRhbmdlciBtcy0xXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5TdWJqZWN0OjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJlbWFpbGVyTW9kZWwuc3ViamVjdFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Cb2R5OjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgI3RpbnlNQ0VDb250YWluZXJSZWY+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5BdHRhY2htZW50czo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c2xpY2stZmlsZS1kcm9wIChmaWxlc0NoYW5nZWQpPVwib25BdHRhY2htZW50c0NoYW5nZWQoJGV2ZW50KVwiPjwvc2xpY2stZmlsZS1kcm9wPlxyXG4gICAgICAgICAgICA8c2xpY2stZmlsZS1saXN0IFsoZmlsZXMpXT1cImVtYWlsZXJNb2RlbC5hdHRhY2htZW50c1wiPjwvc2xpY2stZmlsZS1saXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dCdXR0b25zXCIgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7IG1hcmdpbi1yaWdodDogMTBweDtcIiBbc2xpY2stYnV0dG9uLXNwaW5uZXJdPVwic3Bpbm5lclN0YXR1c1wiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwib25TZW5kRW1haWwoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLWVudmVsb3BlXCI+PC9pPiZuYnNwO1NlbmQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7XCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyXCIgKGNsaWNrKT1cIm9uQ2FuY2VsRW1haWwoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzXCI+PC9pPiZuYnNwO0NhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZW1haWxlci9zbGljay1lbWFpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUErQyxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEYsT0FBTyxFQUE2Qix3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8scUJBQXFCO0lBb0JqQyxZQUFvQix3QkFBa0QsRUFBVSxjQUFpQztRQUE3Riw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEIzRixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBQ3ZCLDJCQUFzQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25FLDBCQUFxQixHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNFLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBS25HLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSTdCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUdwQyxrQkFBYSxHQUFXLElB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c0JBQTlCLEtBQUs7dUJBQUMsWUFBWTtnQkFDUSxzQkFBc0I7c0JBQWhELE1BQU07dUJBQUMsaUJBQWlCO2dCQUNDLHFCQUFxQjtzQkFBOUMsTUFBTTt1QkFBQyxnQkFBZ0I7Z0JBQ0ksdUJBQXVCO3NCQUFsRCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFUSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrU2xlZXBTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXNsZWVwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stZnVuY3Rpb24tbG9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElTbGlja0ZpbGVNb2RlbCB9IGZyb20gXCIuLi9zbGljay1maWxlLW1vZGVsL3NsaWNrLWZpbGUubW9kZWxcIjtcclxuaW1wb3J0IHsgSVNsaWNrRW1haWxlck1vZGVsLCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCwgU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsIH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci1hZGRyZXNzLm1vZGVsXCI7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHRpbnltY2U6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZW1haWxlcicsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1lbWFpbGVyLmNvbXBvbmVudC5odG1sJyxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWNrRW1haWxlckNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlLFxyXG5cdFx0fSxcclxuXHRcdFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRW1haWxlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KFwidG9FbWFpbEFkZHJlc3NMaXN0XCIpIHRvRW1haWxBZGRyZXNzTGlzdDogSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbFtdO1xyXG5cdEBJbnB1dChcInNob3dCdXR0b25zXCIpIHNob3dCdXR0b25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoXCJib2R5SGVpZ2h0XCIpIGJvZHlIZWlnaHQ6IHN0cmluZyA9IFwiMTgwcHhcIjtcclxuXHRAT3V0cHV0KFwidG9BZGRyZXNzU2VhcmNoXCIpIHRvQWRkcmVzc1NlYXJjaEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoXCJzZW5kRW1haWxDbGlja1wiKSBzZW5kRW1haWxDbGlja0VtaXR0ZXI6IEV2ZW50RW1pdHRlcjxJU2xpY2tFbWFpbGVyTW9kZWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoXCJjYW5jZWxFbWFpbENsaWNrXCIpIGNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJ0aW55TUNFQ29udGFpbmVyUmVmXCIpIHRpbnlNQ0VDb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG5cdGVtYWlsZXJNb2RlbDogSVNsaWNrRW1haWxlck1vZGVsO1xyXG5cdGlzU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdHV1aWQ6IHN0cmluZztcclxuXHR0aW55TUNFVXVpZDogc3RyaW5nO1xyXG5cdHRpbnlNQ0VJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHRvRW1haWxBZGRyZXNzOiBzdHJpbmc7XHJcblx0ZWRpdG9yOiBhbnk7XHJcblx0c3Bpbm5lclN0YXR1czogc3RyaW5nID0gbnVsbDtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2U6IFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHRcdHRoaXMudGlueU1DRVV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMucmVtb3ZlVGlueU1DRSgpO1xyXG5cdH1cclxuXHJcblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuXHQvLyB0aGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlIHNldCB0byB0aGUgY29tcG9uZW50XHJcblx0cHVibGljIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBJU2xpY2tFbWFpbGVyTW9kZWwpIHtcclxuXHRcdGlmIChvYmopIHtcclxuXHRcdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJyZXNldFwiO1xyXG5cdFx0XHR0aGlzLmVtYWlsZXJNb2RlbCA9IG9iajtcclxuXHJcblx0XHRcdGlmICghdGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMpXHJcblx0XHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMgPSBbXTtcclxuXHJcblx0XHRcdGlmICghdGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcylcclxuXHRcdFx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzID0gW107XHJcblxyXG5cdFx0XHRhd2FpdCB0aGlzLmluaXRUaW55TUNFKCk7XHJcblx0XHRcdGNvbnN0IGJvZHkgPSAodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJyc7XHJcblx0XHRcdHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApLnNldENvbnRlbnQoYm9keSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwgPSBudWxsO1xyXG5cdFx0XHRpZiAodGhpcy50aW55TUNFSW5pdGlhbGl6ZWQpXHJcblx0XHRcdFx0dGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCkuc2V0Q29udGVudChudWxsKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHR0b0FkZHJlc3NTZWFyY2goc2VhcmNoVGV4dCkge1xyXG5cdFx0dGhpcy50b0FkZHJlc3NTZWFyY2hFbWl0dGVyLmVtaXQoc2VhcmNoVGV4dCk7XHJcblx0fVxyXG5cclxuXHRvblNlbGVjdEVtYWlsQWRkcmVzcyhlbWFpbGVyQWRkcmVzc01vZGVsOiBJU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLnB1c2goZW1haWxlckFkZHJlc3NNb2RlbCk7XHJcblxyXG5cdFx0dGhpcy50b0VtYWlsQWRkcmVzcyA9IG51bGw7XHJcblx0fVxyXG5cclxuXHRvbkZyZWVmb3JtVGV4dFNlbGVjdCh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZyZWVmb3JtRW1haWxBZGRyZXNzID0gbmV3IFNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCgpO1xyXG5cdFx0ZnJlZWZvcm1FbWFpbEFkZHJlc3MuZGlzcGxheU5hbWUgPSB0ZXh0O1xyXG5cdFx0ZnJlZWZvcm1FbWFpbEFkZHJlc3MuZW1haWxBZGRyZXNzID0gdGV4dDtcclxuXHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLnB1c2goZnJlZWZvcm1FbWFpbEFkZHJlc3MpO1xyXG5cdFx0dGhpcy50b0VtYWlsQWRkcmVzcyA9IG51bGw7XHJcblx0fVxyXG5cclxuXHRkZWxldGVFbWFpbEFkZHJlc3MoaWR4OiBudW1iZXIpIHtcclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMuc3BsaWNlKGlkeCwgMSk7XHJcblx0fVxyXG5cclxuXHRvbkF0dGFjaG1lbnRzQ2hhbmdlZChhdHRhY2htZW50czogSVNsaWNrRmlsZU1vZGVsW10pIHtcclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzID0gdGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMuY29uY2F0KGF0dGFjaG1lbnRzKTtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlKCkge1xyXG5cdFx0dGhpcy5pc1N1Ym1pdHRlZCA9IHRydWU7XHJcblx0XHRpZiAodGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldEVtYWlsQWRkcmVzc2VzKGVtYWlsZXJNb2RlbDogSVNsaWNrRW1haWxlck1vZGVsKTogSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbFtdIHtcclxuXHRcdGxldCBzbGlja0VtYWlsZXJBZGRyZXNzZXMgPSBlbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcyB8fCBbXTtcclxuXHJcblx0XHRpZiAodGhpcy50b0VtYWlsQWRkcmVzcykge1xyXG5cdFx0XHRjb25zdCBzY3J1YmJlZFRvRW1haWxBZGRyZXNzID0gdGhpcy50b0VtYWlsQWRkcmVzcy5yZXBsYWNlKFwiLFwiLCBcIjtcIikucmVwbGFjZSgvXFxzL2csIFwiO1wiKTtcclxuXHRcdFx0Y29uc3QgZW1haWxBZGRyZXNzZXNUb0FkZFN0cmluZ3MgPSBzY3J1YmJlZFRvRW1haWxBZGRyZXNzLnNwbGl0KFwiO1wiKS5maWx0ZXIoeCA9PiB4ICE9PSAnJyk7XHJcblx0XHRcdGNvbnN0IGVtYWlsQWRkcmVzc2VzVG9BZGQgPSBlbWFpbEFkZHJlc3Nlc1RvQWRkU3RyaW5ncy5tYXAoeCA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsID0gbmV3IFNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCgpO1xyXG5cdFx0XHRcdHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbC5jb250YWN0SWQgPSAwO1xyXG5cdFx0XHRcdHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbC5kaXNwbGF5TmFtZSA9IHg7XHJcblx0XHRcdFx0c2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsLmVtYWlsQWRkcmVzcyA9IHg7XHJcblx0XHRcdFx0cmV0dXJuIHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbDtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHNsaWNrRW1haWxlckFkZHJlc3NlcyA9IHNsaWNrRW1haWxlckFkZHJlc3Nlcy5jb25jYXQoZW1haWxBZGRyZXNzZXNUb0FkZCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy50b0VtYWlsQWRkcmVzcyA9IG51bGw7XHJcblxyXG5cdFx0cmV0dXJuIHNsaWNrRW1haWxlckFkZHJlc3NlcztcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldEJvZHkoYm9keTogc3RyaW5nKSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiU0xJQ0tfRU1BSUxFUl9TRVRfQk9EWVwiKTtcclxuXHJcblx0XHRcdGF3YWl0IHRoaXMuaW5pdFRpbnlNQ0UoKTtcclxuXHRcdFx0Y29uc3QgdGlueU1DRSA9IHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApO1xyXG5cclxuXHRcdFx0aWYgKCF0aW55TUNFKVxyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJ0aW55TUNFIG5vdCBpbml0aWFsaXplZFwiKTtcclxuXHJcblx0XHRcdHRpbnlNQ0Uuc2V0Q29udGVudChib2R5KTtcclxuXHJcblx0XHR9XHJcblx0XHRmaW5hbGx5IHtcclxuXHRcdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIlNMSUNLX0VNQUlMRVJfU0VUX0JPRFlcIik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXRCb2R5KCkge1xyXG5cdFx0cmV0dXJuIHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApLmdldENvbnRlbnQoKTtcclxuXHR9XHJcblxyXG5cdG9uU2VuZEVtYWlsKCkge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcyA9IHRoaXMuZ2V0RW1haWxBZGRyZXNzZXModGhpcy5lbWFpbGVyTW9kZWwpO1xyXG5cclxuXHRcdGlmICh0aGlzLnZhbGlkYXRlKCkgPT09IGZhbHNlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwuYm9keSA9IHRoaXMuZ2V0Qm9keSgpO1xyXG5cdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJzcGluXCI7XHJcblx0XHRpZiAodGhpcy5zZW5kRW1haWxDbGlja0VtaXR0ZXIpXHJcblx0XHRcdHRoaXMuc2VuZEVtYWlsQ2xpY2tFbWl0dGVyLmVtaXQodGhpcy5lbWFpbGVyTW9kZWwpO1xyXG5cdH1cclxuXHJcblx0ZW1haWxTZW50KCkge1xyXG5cdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJva1wiO1xyXG5cdH1cclxuXHJcblx0ZW1haWxFcnJvcigpIHtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwiZXJyb3JcIjtcclxuXHR9XHJcblxyXG5cdG9uQ2FuY2VsRW1haWwoKSB7XHJcblx0XHRpZiAodGhpcy5jYW5jZWxFbWFpbENsaWNrRW1pdHRlcilcclxuXHRcdFx0dGhpcy5jYW5jZWxFbWFpbENsaWNrRW1pdHRlci5lbWl0KCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBkaWFsb2dJbml0KCkge1xyXG5cdFx0dGhpcy5yZW1vdmVUaW55TUNFKCk7XHJcblxyXG5cdFx0YXdhaXQgdGhpcy5pbml0VGlueU1DRSgpO1xyXG5cdFx0Y29uc3QgYm9keSA9ICh0aGlzLmVtYWlsZXJNb2RlbCkgPyAodGhpcy5lbWFpbGVyTW9kZWwuYm9keSB8fCAnJykgOiAnJztcclxuXHRcdHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApLnNldENvbnRlbnQoYm9keSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBpbml0VGlueU1DRSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiU0xJQ0tfRU1BSUxFUl9JTklUX1RJTllfTUNFXCIpO1xyXG5cclxuXHRcdFx0dGlueW1jZS5yZW1vdmUoKTtcclxuXHJcblx0XHRcdGlmICghdGhpcy50aW55TUNFSW5pdGlhbGl6ZWQpIHtcclxuXHRcdFx0XHRjb25zdCB0aW55TUNFQ29udGFpbmVyID0gPEhUTUxEaXZFbGVtZW50PnRoaXMudGlueU1DRUNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xyXG5cdFx0XHRcdGNvbnN0IHRpbnlNQ0VUZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuXHRcdFx0XHR0aW55TUNFVGV4dGFyZWEuaWQgPSBgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gO1xyXG5cdFx0XHRcdHRpbnlNQ0VUZXh0YXJlYS5zdHlsZS5taW5IZWlnaHQgPSBcIjMwMHB4XCI7XHJcblx0XHRcdFx0dGlueU1DRVRleHRhcmVhLnN0eWxlLm1heEhlaWdodCA9IFwiMzAwcHhcIjtcclxuXHRcdFx0XHR0aW55TUNFQ29udGFpbmVyLmFwcGVuZENoaWxkKHRpbnlNQ0VUZXh0YXJlYSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRpbnltY2UuaW5pdCh7XHJcblx0XHRcdFx0c2VsZWN0b3I6IGAjZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gLFxyXG5cdFx0XHRcdGJyYW5kaW5nOiBmYWxzZSxcclxuXHRcdFx0XHRtZW51YmFyOiAnZWRpdCBpbnNlcnQgZm9ybWF0IHRvb2xzJyxcclxuXHRcdFx0XHRwbHVnaW5zOiAnbGluayBpbWFnZSBpbWFnZXRvb2xzIGNvZGUnLFxyXG5cdFx0XHRcdHRvb2xiYXI6ICdmb250c2VsZWN0IHwgZm9udHNpemVzZWxlY3QgfCBzdHlsZXNlbGVjdCB8IGJvbGQgaXRhbGljIHVuZGVybGluZSB8IGluZGVudCBvdXRkZW50IHwgYnVsbGlzdCB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IHwgY29kZSB8IGltYWdlJyxcclxuXHRcdFx0XHRmb250c2l6ZV9mb3JtYXRzOiBcIjhweCAxMHB4IDEycHggMTRweCAxOHB4IDI0cHggMzZweFwiLFxyXG5cdFx0XHRcdGhlaWdodDogdGhpcy5ib2R5SGVpZ2h0LFxyXG5cdFx0XHRcdGNvbnZlcnRfdXJsczogZmFsc2UsXHJcblx0XHRcdFx0c2V0dXA6IChlZCkgPT4ge1xyXG5cdFx0XHRcdFx0ZWQub24oJ2luaXQnLCAoYXJncykgPT4ge1xyXG5cclxuXHRcdFx0XHRcdFx0ZWQuc2V0Q29udGVudCgodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJycpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRpbnlNQ0VJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJTTElDS19FTUFJTEVSX0lOSVRfVElOWV9NQ0VcIik7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRcdGVkLm9uKCdjaGFuZ2UnLCAoYXJncykgPT4ge1x0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR0aGlzLmVtYWlsZXJNb2RlbC5ib2R5ID0gdGhpcy5nZXRCb2R5KCk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHJlbW92ZVRpbnlNQ0UoKSB7XHJcblx0XHRpZiAodGhpcy50aW55TUNFVXVpZCkge1xyXG5cdFx0XHRjb25zdCB0aW55TUNFID0gdGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCk7XHJcblxyXG5cdFx0XHRpZiAodGlueU1DRSlcclxuXHRcdFx0XHR0aW55TUNFLnJlbW92ZSgpO1xyXG5cclxuXHRcdFx0Y29uc3QgdGlueU1DRUNvbnRhaW5lciA9IDxIVE1MRGl2RWxlbWVudD50aGlzLnRpbnlNQ0VDb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0dGlueU1DRUNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xyXG5cclxuXHRcdFx0dGhpcy50aW55TUNFSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdHRoaXMudGlueU1DRVV1aWQgPSBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZW1haWxlck1vZGVsXCIgaWQ9XCJzbGljay1lbWFpbGVyX3t7dXVpZH19XCIgY2xhc3M9XCJzbGljay1lbWFpbGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1N1Ym1pdHRlZCA9PT0gdHJ1ZSAmJiBlbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVycm9yV3JhcHBlciBzaG93SWNvbnNcIj48ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIj5FbWFpbCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGVtYWlsIGFkZHJlc3M8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj48c3BhbiBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgI2VtYWlsQWRkcmVzc0F1dG9jb21wbGV0ZSBbKG5nTW9kZWwpXT1cInRvRW1haWxBZGRyZXNzXCIgcGxhY2Vob2xkZXI9XCJFbWFpbCBTZWFyY2guLi5cIiBhdXRvZm9jdXMgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzbGljay1hdXRvLWNvbXBsZXRlIFtpbnB1dFJlZl09XCJlbWFpbEFkZHJlc3NBdXRvY29tcGxldGVcIiB0ZXh0RmllbGQ9XCJlbWFpbERpc3BsYXlcIiBbaXRlbXNdPVwidG9FbWFpbEFkZHJlc3NMaXN0XCIgKG9uUmVmcmVzaCk9XCJ0b0FkZHJlc3NTZWFyY2goJGV2ZW50KVwiIChvblNlbGVjdCk9XCJvblNlbGVjdEVtYWlsQWRkcmVzcygkZXZlbnQpXCIgKG9uRnJlZWZvcm1UZXh0U2VsZWN0KT1cIm9uRnJlZWZvcm1UZXh0U2VsZWN0KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZW1haWxEaXNwbGF5IFtzbGlja0F1dG9Db21wbGV0ZUxpc3RJdGVtVGVtcGxhdGVdPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2xpbmUtaGVpZ2h0OiAxLjFlbTsgZm9udC1zaXplOiAxMnB4Oyc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1haWxEaXNwbGF5LmRpc3BsYXlOYW1lfX0gW3t7ZW1haWxEaXNwbGF5LmVtYWlsQWRkcmVzc319XVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zbGljay1hdXRvLWNvbXBsZXRlPlxyXG5cclxuICAgICAgICAgICAgPGxhYmVsPlRvOiZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVtYWlsQWRkcmVzcyBvZiBlbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlczsgbGV0IGlkeCA9IGluZGV4O1wiIGNsYXNzPVwic2xpY2stZW1haWxlcl9lbWFpbC1hZGRyZXNzIGFsZXJ0IGFsZXJ0LXNlY29uZGFyeVwiPnt7ZW1haWxBZGRyZXNzLmRpc3BsYXlOYW1lfX0gW3t7ZW1haWxBZGRyZXNzLmVtYWlsQWRkcmVzc319XTxpIChjbGljayk9XCJkZWxldGVFbWFpbEFkZHJlc3MoaWR4KVwiIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBiZy13aGl0ZSB0ZXh0LWRhbmdlciBtcy0xXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5TdWJqZWN0OjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJlbWFpbGVyTW9kZWwuc3ViamVjdFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Cb2R5OjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgI3RpbnlNQ0VDb250YWluZXJSZWY+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5BdHRhY2htZW50czo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c2xpY2stZmlsZS1kcm9wIChmaWxlc0NoYW5nZWQpPVwib25BdHRhY2htZW50c0NoYW5nZWQoJGV2ZW50KVwiPjwvc2xpY2stZmlsZS1kcm9wPlxyXG4gICAgICAgICAgICA8c2xpY2stZmlsZS1saXN0IFsoZmlsZXMpXT1cImVtYWlsZXJNb2RlbC5hdHRhY2htZW50c1wiPjwvc2xpY2stZmlsZS1saXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dCdXR0b25zXCIgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7IG1hcmdpbi1yaWdodDogMTBweDtcIiBbc2xpY2stYnV0dG9uLXNwaW5uZXJdPVwic3Bpbm5lclN0YXR1c1wiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwib25TZW5kRW1haWwoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLWVudmVsb3BlXCI+PC9pPiZuYnNwO1NlbmQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7XCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyXCIgKGNsaWNrKT1cIm9uQ2FuY2VsRW1haWwoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzXCI+PC9pPiZuYnNwO0NhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -39,6 +39,9 @@ export class SlickMultiSelectComponent {
39
39
  this.propagateChange = (_) => { };
40
40
  this.uuid = SlickUtilsService.newGuid();
41
41
  }
42
+ async ngOnInit() {
43
+ this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
44
+ }
42
45
  async ngAfterViewInit() {
43
46
  // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
44
47
  // of a div when it expands beyond the bottom.
@@ -94,6 +97,7 @@ export class SlickMultiSelectComponent {
94
97
  return;
95
98
  this.reposition();
96
99
  await SlickSleepService.sleep();
100
+ SlickUtilsService.attachElement(this.multiSelectList.nativeElement, this.attachTo);
97
101
  this.multiSelectList.nativeElement.style.display = "inline-block";
98
102
  let selectedItems = this.multiSelectList.nativeElement.getElementsByClassName("selected");
99
103
  if (selectedItems && selectedItems.length > 0)
@@ -118,11 +122,12 @@ export class SlickMultiSelectComponent {
118
122
  }
119
123
  async reposition() {
120
124
  await SlickSleepService.sleep();
121
- let rect = this.containerDiv.nativeElement.getBoundingClientRect();
122
- let containerLeft = rect.left;
123
- let containerTop = rect.top;
125
+ const multiSelectRect = this.containerDiv.nativeElement.getBoundingClientRect();
126
+ const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
127
+ const containerLeft = (this.attachTo === 'body') ? multiSelectRect.left : (multiSelectRect.left - parentRect.left);
128
+ const containerTop = (this.attachTo === 'body') ? multiSelectRect.top : (multiSelectRect.top - parentRect.top);
124
129
  let containerHeight = this.containerDiv.nativeElement.offsetHeight;
125
- let containerWidth = rect.width;
130
+ let containerWidth = multiSelectRect.width;
126
131
  this.width = containerWidth;
127
132
  if (this.listWidth === '100%')
128
133
  this.listGroupWidth = this.width;
@@ -350,7 +355,7 @@ export class SlickMultiSelectComponent {
350
355
  this.propagateChange(this.selectedIds);
351
356
  }
352
357
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickMultiSelectComponent, deps: [{ token: i1.SlickMultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
353
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
358
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", attachTo: "attachTo", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
354
359
  {
355
360
  provide: NG_VALUE_ACCESSOR,
356
361
  useExisting: forwardRef((() => SlickMultiSelectComponent)),
@@ -391,6 +396,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
391
396
  type: Input
392
397
  }], tabindex: [{
393
398
  type: Input
399
+ }], attachTo: [{
400
+ type: Input
394
401
  }], searchType: [{
395
402
  type: Input
396
403
  }], onExpand: [{
@@ -412,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
412
419
  type: ViewChild,
413
420
  args: ["filterTextInputRef"]
414
421
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW11bHRpLXNlbGVjdC9zbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stbXVsdGktc2VsZWN0L3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFrRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUvRCxNQUFNLENBQU4sSUFBWSwyQkFBeUQ7QUFBckUsV0FBWSwyQkFBMkI7SUFBRyx5RkFBVSxDQUFBO0lBQUUscUZBQVEsQ0FBQTtJQUFFLDJFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXpELDJCQUEyQixLQUEzQiwyQkFBMkIsUUFBOEI7QUFZckUsTUFBTSxPQUFPLHlCQUF5QjtJQTBDckMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUF6QzNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FB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QVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNLLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNNLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0Msa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UgfSBmcm9tIFwiLi9zbGljay1tdWx0aS1zZWxlY3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrSW5pdFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgZW51bSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMgeyBzdGFydHNXaXRoLCBlYWNoV29yZCwgYW55IH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stbXVsdGktc2VsZWN0JyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UsXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja011bHRpU2VsZWN0Q29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tNdWx0aVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcclxuXHRASW5wdXQoKSBpZEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiO1xyXG5cdEBJbnB1dCgpIHRleHRGaWVsZE5hbWU6IHN0cmluZyA9IFwidGV4dFwiO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYWxsb3dFbXB0eTogc3RyaW5nID0gJ3RydWUnO1xyXG5cdEBJbnB1dCgpIHNpbmdsZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgbGlzdFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnO1xyXG5cdEBJbnB1dCgpIHNob3dMb2FkaW5nTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNob3dEZWJ1ZzogYm9vbGVhbjtcclxuXHRASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIHNlYXJjaFR5cGU6IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcyA9IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcy5lYWNoV29yZDtcclxuXHJcblx0QE91dHB1dCgpIG9uRXhwYW5kOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblx0QE91dHB1dCgpIG9uQ29sbGFwc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHRAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJjb250YWluZXJEaXZcIikgY29udGFpbmVyRGl2OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJtdWx0aVNlbGVjdExpc3RcIikgbXVsdGlTZWxlY3RMaXN0OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJwbGFjZWhvbGRlcklucHV0UmVmXCIpIHBsYWNlaG9sZGVySW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImZpbHRlclRleHRJbnB1dFJlZlwiKSBmaWx0ZXJUZXh0SW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlIHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cyBjYW4gYWRkIGFuZCByZW1vdmUgdGhlIGV2ZW50IHByb3Blcmx5LFxyXG5cdC8vIGFzIHdlbGwgYXMgZ2V0dGluZyB0aGUgY29ycmVjdCBFUzYgZnVuY3Rpb25cclxuXHRwcml2YXRlIGZuRG9jdW1lbnRDbGljayA9IChlKSA9PiB0aGlzLmRvY3VtZW50Q2xpY2soZSk7XHJcblxyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRzZWxlY3RlZElkczogc3RyaW5nW107XHJcblx0c2VsZWN0ZWRUZXh0OiBzdHJpbmc7XHJcblx0ZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRmaWx0ZXJUZXh0OiBzdHJpbmcgPSAnJztcclxuXHRzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblx0c2VsZWN0ZWRJdGVtczogYW55W107XHJcblx0dmlzaWJsZUl0ZW1zOiBhbnlbXTtcclxuXHRsZWZ0OiBzdHJpbmc7XHJcblx0dG9wOiBzdHJpbmc7XHJcblx0bGlzdEdyb3VwV2lkdGg6IHN0cmluZztcclxuXHRpc0FuZHJvaWQ6IGJvb2xlYW4gPSAoKFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGxhdGZvcm0oKSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FuZHJvaWQnKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja011bHRpU2VsZWN0U2VydmljZTogU2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdC8vIFJlbW92ZSB0aGlzIGZyb20gdGhlIGlubGluZSB2ZXJzaW9uIGFuZCBwdXQgaXQgb24gdGhlIGJvZHkgc28gdGhhdCBpdCBkb2Vzbid0IGhpZGUgYmVoaW5kIHRoZSBib3R0b21cclxuXHRcdC8vIG9mIGEgZGl2IHdoZW4gaXQgZXhwYW5kcyBiZXlvbmQgdGhlIGJvdHRvbS5cclxuXHRcdHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKHRoaXMubXVsdGlTZWxlY3RMaXN0KTtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHRwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xyXG5cdFx0aWYgKG9iailcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG9iajtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5zaW5nbGVTZWxlY3QpIHtcclxuXHRcdFx0dGhpcy5zaW5nbGVTZWxlY3QgPSAodGhpcy5zaW5nbGVTZWxlY3QudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnc3RhcnRzd2l0aCcpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGg7XHJcblx0XHRcdGVsc2UgaWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnYW55JylcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuYW55O1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHRJbnB1dFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHR0aGlzLm11bHRpU2VsZWN0TGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2VsZWN0ZWRcIik7XHJcblx0XHRpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApXHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+c2VsZWN0ZWRJdGVtc1swXSkuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblxyXG5cdFx0Ly8gVGhpcyBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBgdGhpc2AgaW4gdGhlIHJlcG9zaXRpb24gZnVuY3Rpb24gd2lsbCBiZSB3aW5kb3dcclxuXHRcdC8vIGFuZCBub3QgdGhlIGNvbXBvbmVudC5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRXhwYW5kKVxyXG5cdFx0XHR0aGlzLm9uRXhwYW5kLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlKCkge1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkNvbGxhcHNlKVxyXG5cdFx0XHR0aGlzLm9uQ29sbGFwc2UuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVwb3NpdGlvbigpIHtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRsZXQgcmVjdCA9IHRoaXMuY29udGFpbmVyRGl2Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRsZXQgY29udGFpbmVyTGVmdCA9IHJlY3QubGVmdDtcclxuXHRcdGxldCBjb250YWluZXJUb3AgPSByZWN0LnRvcDtcclxuXHRcdGxldCBjb250YWluZXJIZWlnaHQgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHRcdGxldCBjb250YWluZXJXaWR0aCA9IHJlY3Qud2lkdGg7XHJcblxyXG5cdFx0dGhpcy53aWR0aCA9IGNvbnRhaW5lcldpZHRoO1xyXG5cdFx0aWYgKHRoaXMubGlzdFdpZHRoID09PSAnMTAwJScpXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLndpZHRoO1xyXG5cdFx0ZWxzZSBpZiAodGhpcy5saXN0V2lkdGggPT09ICdhdXRvJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IFwiYXV0b1wiO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gdGhpcy5saXN0V2lkdGg7XHJcblx0XHR0aGlzLnRvcCA9IChjb250YWluZXJUb3AgKyBjb250YWluZXJIZWlnaHQpO1xyXG5cdFx0dGhpcy5sZWZ0ID0gY29udGFpbmVyTGVmdDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZG9jdW1lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XHJcblx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIWUudGFyZ2V0KVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gSWYgdGhleSBjbGlja2VkIG9uIHRoZSBrZXlib2FyZCBpY29uLCBkb24ndCBkbyBhbnl0aGluZ1xyXG5cdFx0aWYgKFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50Q2xhc3NFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLW11bHRpLXNlbGVjdF9tb2JpbGUtY29udGFpbmVyXCIpICYmXHJcblx0XHRcdFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50SWRFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLW11bHRpLXNlbGVjdF9cIiArIHRoaXMudXVpZCkpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHRjb25zdCBjbGlja2VkSW5zaWRlID0gU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X2xpc3QtaXRlbVwiKTtcclxuXHRcdGlmICghY2xpY2tlZEluc2lkZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZWxlY3RJdGVtKGlkOiBzdHJpbmcpIHtcclxuXHRcdGxldCBpdGVtID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW0odGhpcy52aXNpYmxlSXRlbXMsIGlkKTtcclxuXHJcblx0XHRpZiAoaXRlbSkge1xyXG5cclxuXHRcdFx0aWYgKHRoaXMub25TZWxlY3QpXHJcblx0XHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLnNlbGVjdGVkSWRzKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZHMucHVzaChpZCk7XHJcblx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWRJZHMpO1xyXG5cclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2luZ2xlU2VsZWN0ID09PSB0cnVlKVxyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblx0fVxyXG5cclxuXHRzZXRGb2N1cygpIHtcclxuXHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbkZvY3VzKCkge1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZXhwYW5kT25LZXlVcChlOiBLZXlib2FyZEV2ZW50KSB7XHJcblxyXG5cdFx0aWYgKGUua2V5Lmxlbmd0aCA9PSAxIHx8IChlLmtleS5sZW5ndGggPiAxICYmIC9bXmEtekEtWjAtOV0vLnRlc3QoZS5rZXkpKSkge1xyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1x0XHRcdFxyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5wbGFjZWhvbGRlcklucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblxyXG5cdFx0XHR0aGlzLm9uS2V5RG93bihlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZS5rZXkgIT09ICdUYWInICYmXHJcblx0XHRcdGUua2V5ICE9PSAnRW50ZXInICYmXHJcblx0XHRcdGUua2V5ICE9PSAnRXNjYXBlJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0JhY2tzcGFjZScgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdBcnJvd1VwJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0Fycm93RG93bidcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBJZiBGMSBpcyBwcmVzc2VkLCBrZXkgbGVuZ3RoIHdpbGwgYmUgMlxyXG5cdFx0XHRpZiAoZS5rZXkubGVuZ3RoID4gMSB8fCBlLmN0cmxLZXkgfHwgZS5hbHRLZXkpIHtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL2Uuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHQvL2UucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuZHJvaWQsIGl0IHdvbid0IHBhc3MgdXMgYW55IGtleSBkYXRhIHNvIGp1c3QgcmVhZCB0aGUgZW50aXJlIGlucHV0IGVsZW1lbnRcclxuXHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlO1xyXG5cdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gVGFiL2VudGVyXHJcblx0XHRpZiAoZS5rZXkgPT09ICdUYWInKSB7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQgJiYgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnZpc2libGVJdGVtc1swXS5pZCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHJcblx0XHRcdGNvbnN0IGN1cnJlbnROb2RlID0gPEhUTUxFbGVtZW50Pih0aGlzLnBsYWNlaG9sZGVySW5wdXRSZWYubmF0aXZlRWxlbWVudCk7XHJcblx0XHRcdC8vZmluZCBhbGwgdGFiLWFibGUgZWxlbWVudHNcclxuXHRcdFx0Y29uc3QgYWxsRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgYnV0dG9uLCBhLCBhcmVhLCBvYmplY3QsIHNlbGVjdCwgdGV4dGFyZWEsIFtjb250ZW50ZWRpdGFibGVdJyk7XHJcblxyXG5cdFx0XHQvL0ZpbmQgdGhlIGN1cnJlbnQgdGFiIGluZGV4LlxyXG5cdFx0XHRjb25zdCBjdXJyZW50SW5kZXggPSBBcnJheS5mcm9tKGFsbEVsZW1lbnRzKS5maW5kSW5kZXgoZWwgPT4gY3VycmVudE5vZGUuaXNFcXVhbE5vZGUoZWwpKVxyXG5cclxuXHRcdFx0Ly9mb2N1cyB0aGUgZm9sbG93aW5nIGVsZW1lbnRcclxuXHRcdFx0Y29uc3QgdGFyZ2V0SW5kZXggPSAoY3VycmVudEluZGV4ICsgMSkgJSBhbGxFbGVtZW50cy5sZW5ndGg7XHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+YWxsRWxlbWVudHNbdGFyZ2V0SW5kZXhdKS5mb2N1cygpO1xyXG5cclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xyXG5cdFx0XHRpZiAodGhpcy5maWx0ZXJUZXh0ICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnZpc2libGVJdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdLmlkKTtcclxuXHRcdFx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRXNjXHJcblx0XHRpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEJhY2tzcGFjZVxyXG5cdFx0aWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyAmJiB0aGlzLmZpbHRlclRleHQpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gdGhpcy5maWx0ZXJUZXh0LnN1YnN0cmluZygwLCB0aGlzLmZpbHRlclRleHQubGVuZ3RoIC0gMSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSAnJztcclxuXHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93dXBcclxuXHRcdGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93ZG93blxyXG5cdFx0aWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICF0aGlzLnZpc2libGVJdGVtcylcclxuXHRcdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDEpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4Kys7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSWYgRjEgaXMgcHJlc3NlZCwga2V5IGxlbmd0aCB3aWxsIGJlIDJcclxuXHRcdGlmIChlLmtleS5sZW5ndGggPiAxIHx8IGUuY3RybEtleSB8fCBlLmFsdEtleSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGlmIChlLmtleSA+PSAnICcgJiYgZS5rZXkgPD0gJ34nKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCArPSBlLmtleTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGZpbHRlclNlYXJjaCgpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZClcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGgpIHtcclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAoeC50ZXh0ID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPT09IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSB0aGlzLnNlbGVjdGVkVGV4dDtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmZpbHRlclRleHQubGVuZ3RoLCB0aGlzLnNlbGVjdGVkVGV4dC5sZW5ndGgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gdGhpcy5zZWxlY3RlZFRleHQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuZWFjaFdvcmQpIHtcclxuXHJcblx0XHRcdC8vIEdldCB0aGUgd29yZHMgd2hlcmUgdGhlIGJlZ2lubmluZyBtYXRjaGVzIHRoZSBzZWFyY2ggZmlyc3RcclxuXHRcdFx0Y29uc3Qgc3RhcnRzV2l0aEl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4gKHgudGV4dCA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID09PSAwKTtcclxuXHRcdFx0Y29uc3QgZWFjaFdvcmRJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IChcIiBcIiArICh4LnRleHQgPz8gXCJcIikudG9Mb3dlckNhc2UoKSkuaW5kZXhPZihcIiBcIiArIHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpKSA+IDApO1xyXG5cclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSBbLi4uc3RhcnRzV2l0aEl0ZW1zLCAuLi5lYWNoV29yZEl0ZW1zXTtcclxuXHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQ7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgsIHRoaXMuc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblx0fVxyXG5cclxuXHRvbk11bHRpU2VsZWN0Q2xpY2tlZCgpIHtcclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pZCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHRvblJlbW92ZUl0ZW0oaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoaWQgPT4gaWQgIT09IGl0ZW0uaWQpO1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkcyk7XHJcblx0fVxyXG59IiwiPGRpdiAjY29udGFpbmVyRGl2IGlkPVwic2xpY2stbXVsdGktc2VsZWN0X3t7dXVpZH19XCIgYXR0ci5kYXRhLXV1aWQ9XCJ7e3V1aWR9fVwiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0IGZvcm0tY29udHJvbFwiIFtjbGFzcy5vcGVuXT1cImV4cGFuZGVkXCIgIFtjbGFzcy5leHBhbmRlZC1ib3JkZXJdPVwiZXhwYW5kZWRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X2lucHV0LWNvbnRhaW5lclwiID5cclxuXHRcdDxkaXYgKm5nSWY9XCJkaXNhYmxlZCA9PT0gZmFsc2VcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50OyBmbGV4LWdyb3c6IDE7XCIgKGNsaWNrKT1cIm9uTXVsdGlTZWxlY3RDbGlja2VkKClcIj5cclxuXHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cInNsaWNrLW11bHRpLXNlbGVjdF9zZWxlY3RlZC1pdGVtIGJhZGdlIGJnLXByaW1hcnlcIj48ZGl2IGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3JlbW92ZVwiIChjbGljayk9XCJvblJlbW92ZUl0ZW0oc2VsZWN0ZWRJdGVtKVwiPjxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBiZy13aGl0ZSB0ZXh0LWRhbmdlclwiPjwvaT48L2Rpdj57e3NlbGVjdGVkSXRlbS50ZXh0fX08L2Rpdj5cclxuXHRcdFx0PGlucHV0ICNwbGFjZWhvbGRlcklucHV0UmVmIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIChrZXl1cCk9XCJleHBhbmRPbktleVVwKCRldmVudClcIiAvPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgKm5nSWY9XCJkaXNhYmxlZCA9PT0gdHJ1ZVwiIGNsYXNzPSdpbnB1dC1ncm91cCc+XHJcblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3NlbGVjdGVkLWl0ZW0gYmFkZ2UgYmctcHJpbWFyeVwiPnt7c2VsZWN0ZWRJdGVtLnRleHR9fTwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8dWwgI211bHRpU2VsZWN0TGlzdCBpZD1cInNsaWNrLW11bHRpLXNlbGVjdC1saXN0X3t7dXVpZH19XCIgY2xhc3M9J3NsaWNrLW11bHRpLXNlbGVjdC1saXN0LWdyb3VwIGRyb3Bkb3duLW1lbnUnIFtzdHlsZS53aWR0aF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS52aXNpYmlsaXR5XT1cIihleHBhbmRlZCA9PT0gdHJ1ZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiIFtzdHlsZS5vcGFjaXR5XT1cIihleHBhbmRlZCA9PT0gdHJ1ZSkgPyAnMScgOiAnMCdcIiBbc3R5bGUubWF4LWhlaWdodF09XCJoZWlnaHRcIiBbc3R5bGUud2lkdGgucHhdPVwibGlzdEdyb3VwV2lkdGhcIiBbc3R5bGUubGVmdC5weF09XCJsZWZ0XCIgW3N0eWxlLnRvcC5weF09XCJ0b3BcIj5cclxuXHRcdDxsaSBjbGFzcz1cInB4LTNcIj5cclxuXHRcdFx0PGlucHV0ICNmaWx0ZXJUZXh0SW5wdXRSZWYgdHlwZT1cInRleHRcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtIGZvcm0tY29udHJvbCBiZy10cmFuc3BhcmVudCB0ZXh0LWJvZHkgYm9yZGVyLWJvdHRvbVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgLz5cclxuXHRcdDwvbGk+XHJcblx0XHQ8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zOyBsZXQgaW5kZXggPSBpbmRleDtcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gc2xpY2stbXVsdGktc2VsZWN0X2xpc3QtaXRlbSBweC0zXCI+e3tpdGVtPy50ZXh0fX08L2xpPlxyXG5cdDwvdWw+XHJcbjwvZGl2PiJdfQ==
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW11bHRpLXNlbGVjdC9zbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stbXVsdGktc2VsZWN0L3NsaWNrLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFrRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3RLLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUvRCxNQUFNLENBQU4sSUFBWSwyQkFBeUQ7QUFBckUsV0FBWSwyQkFBMkI7SUFBRyx5RkFBVSxDQUFBO0lBQUUscUZBQVEsQ0FBQTtJQUFFLDJFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXpELDJCQUEyQixLQUEzQiwyQkFBMkIsUUFBOEI7QUFZckUsTUFBTSxPQUFPLHlCQUF5QjtJQTJDckMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUExQzNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FB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ZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ00sbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQyxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSBcIi4vc2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrU2xlZXBTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXNsZWVwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja0luaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWluaXQuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzIHsgc3RhcnRzV2l0aCwgZWFjaFdvcmQsIGFueSB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLW11bHRpLXNlbGVjdCcsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1NsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLFxyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpY2tNdWx0aVNlbGVjdENvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlLFxyXG5cdFx0fV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrTXVsdGlTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcclxuXHRASW5wdXQoKSBpZEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiO1xyXG5cdEBJbnB1dCgpIHRleHRGaWVsZE5hbWU6IHN0cmluZyA9IFwidGV4dFwiO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYWxsb3dFbXB0eTogc3RyaW5nID0gJ3RydWUnO1xyXG5cdEBJbnB1dCgpIHNpbmdsZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgbGlzdFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcblx0QElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnO1xyXG5cdEBJbnB1dCgpIHNob3dMb2FkaW5nTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNob3dEZWJ1ZzogYm9vbGVhbjtcclxuXHRASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0QElucHV0KCkgc2VhcmNoVHlwZTogU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cclxuXHRAT3V0cHV0KCkgb25FeHBhbmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHRAT3V0cHV0KCkgb25Db2xsYXBzZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cdEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImNvbnRhaW5lckRpdlwiKSBjb250YWluZXJEaXY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcIm11bHRpU2VsZWN0TGlzdFwiKSBtdWx0aVNlbGVjdExpc3Q6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInBsYWNlaG9sZGVySW5wdXRSZWZcIikgcGxhY2Vob2xkZXJJbnB1dFJlZjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiZmlsdGVyVGV4dElucHV0UmVmXCIpIGZpbHRlclRleHRJbnB1dFJlZjogRWxlbWVudFJlZjtcclxuXHJcblx0Ly8gVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhhdCB0aGUgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzIGNhbiBhZGQgYW5kIHJlbW92ZSB0aGUgZXZlbnQgcHJvcGVybHksXHJcblx0Ly8gYXMgd2VsbCBhcyBnZXR0aW5nIHRoZSBjb3JyZWN0IEVTNiBmdW5jdGlvblxyXG5cdHByaXZhdGUgZm5Eb2N1bWVudENsaWNrID0gKGUpID0+IHRoaXMuZG9jdW1lbnRDbGljayhlKTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcclxuXHRzZWxlY3RlZFRleHQ6IHN0cmluZztcclxuXHRleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGZpbHRlclRleHQ6IHN0cmluZyA9ICcnO1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHRzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcclxuXHR2aXNpYmxlSXRlbXM6IGFueVtdO1xyXG5cdGxlZnQ6IHN0cmluZztcclxuXHR0b3A6IHN0cmluZztcclxuXHRsaXN0R3JvdXBXaWR0aDogc3RyaW5nO1xyXG5cdGlzQW5kcm9pZDogYm9vbGVhbiA9ICgoU2xpY2tJbml0U2VydmljZS5nZXRQbGF0Zm9ybSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnYW5kcm9pZCcpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlOiBTbGlja011bHRpU2VsZWN0U2VydmljZSkge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF0dGFjaFRvID0gdGhpcy5hdHRhY2hUbyB8fCBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvIHx8ICdib2R5JztcclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdC8vIFJlbW92ZSB0aGlzIGZyb20gdGhlIGlubGluZSB2ZXJzaW9uIGFuZCBwdXQgaXQgb24gdGhlIGJvZHkgc28gdGhhdCBpdCBkb2Vzbid0IGhpZGUgYmVoaW5kIHRoZSBib3R0b21cclxuXHRcdC8vIG9mIGEgZGl2IHdoZW4gaXQgZXhwYW5kcyBiZXlvbmQgdGhlIGJvdHRvbS5cclxuXHRcdHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKHRoaXMubXVsdGlTZWxlY3RMaXN0KTtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHRwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xyXG5cdFx0aWYgKG9iailcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG9iajtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5zaW5nbGVTZWxlY3QpIHtcclxuXHRcdFx0dGhpcy5zaW5nbGVTZWxlY3QgPSAodGhpcy5zaW5nbGVTZWxlY3QudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnc3RhcnRzd2l0aCcpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLnN0YXJ0c1dpdGg7XHJcblx0XHRcdGVsc2UgaWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnYW55JylcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuYW55O1xyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tNdWx0aVNlbGVjdFNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHRJbnB1dFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRTbGlja1V0aWxzU2VydmljZS5hdHRhY2hFbGVtZW50KHRoaXMubXVsdGlTZWxlY3RMaXN0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXR0YWNoVG8pXHJcblx0XHR0aGlzLm11bHRpU2VsZWN0TGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2VsZWN0ZWRcIik7XHJcblx0XHRpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApXHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+c2VsZWN0ZWRJdGVtc1swXSkuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblxyXG5cdFx0Ly8gVGhpcyBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBgdGhpc2AgaW4gdGhlIHJlcG9zaXRpb24gZnVuY3Rpb24gd2lsbCBiZSB3aW5kb3dcclxuXHRcdC8vIGFuZCBub3QgdGhlIGNvbXBvbmVudC5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRXhwYW5kKVxyXG5cdFx0XHR0aGlzLm9uRXhwYW5kLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlKCkge1xyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tdWx0aVNlbGVjdExpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkNvbGxhcHNlKVxyXG5cdFx0XHR0aGlzLm9uQ29sbGFwc2UuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVwb3NpdGlvbigpIHtcclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRjb25zdCBtdWx0aVNlbGVjdFJlY3QgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0Y29uc3QgcGFyZW50UmVjdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gbnVsbCA6IGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3Rvcih0aGlzLmF0dGFjaFRvKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcblx0XHRjb25zdCBjb250YWluZXJMZWZ0ID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBtdWx0aVNlbGVjdFJlY3QubGVmdCA6IChtdWx0aVNlbGVjdFJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdCk7XHJcblx0XHRjb25zdCBjb250YWluZXJUb3AgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IG11bHRpU2VsZWN0UmVjdC50b3AgOiAobXVsdGlTZWxlY3RSZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wKTtcclxuXHRcdGxldCBjb250YWluZXJIZWlnaHQgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHRcdGxldCBjb250YWluZXJXaWR0aCA9IG11bHRpU2VsZWN0UmVjdC53aWR0aDtcclxuXHJcblx0XHR0aGlzLndpZHRoID0gY29udGFpbmVyV2lkdGg7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMud2lkdGg7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHRcdHRoaXMudG9wID0gKGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodCk7XHJcblx0XHR0aGlzLmxlZnQgPSBjb250YWluZXJMZWZ0O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZCB8fCAhZS50YXJnZXQpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHQvLyBJZiB0aGV5IGNsaWNrZWQgb24gdGhlIGtleWJvYXJkIGljb24sIGRvbid0IGRvIGFueXRoaW5nXHJcblx0XHRpZiAoU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X21vYmlsZS1jb250YWluZXJcIikgJiZcclxuXHRcdFx0U2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRJZEV4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stbXVsdGktc2VsZWN0X1wiICsgdGhpcy51dWlkKSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IGNsaWNrZWRJbnNpZGUgPSBTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudENsYXNzRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtXCIpO1xyXG5cdFx0aWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNlbGVjdEl0ZW0oaWQ6IHN0cmluZykge1xyXG5cdFx0bGV0IGl0ZW0gPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbSh0aGlzLnZpc2libGVJdGVtcywgaWQpO1xyXG5cclxuXHRcdGlmIChpdGVtKSB7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5vblNlbGVjdClcclxuXHRcdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQoaXRlbSk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRJZHMpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG5cclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkcy5wdXNoKGlkKTtcclxuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkcyk7XHJcblxyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cclxuXHRcdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zaW5nbGVTZWxlY3QgPT09IHRydWUpXHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHR9XHJcblxyXG5cdHNldEZvY3VzKCkge1xyXG5cdFx0dGhpcy5leHBhbmQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uRm9jdXMoKSB7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBhbmRPbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHJcblx0XHRpZiAoZS5rZXkubGVuZ3RoID09IDEgfHwgKGUua2V5Lmxlbmd0aCA+IDEgJiYgL1teYS16QS1aMC05XS8udGVzdChlLmtleSkpKSB7XHJcblx0XHRcdHRoaXMuZXhwYW5kKCk7XHRcdFx0XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnBsYWNlaG9sZGVySW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcclxuXHJcblx0XHRcdHRoaXMub25LZXlEb3duKGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdGlmIChlLmtleSAhPT0gJ1RhYicgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdFbnRlcicgJiZcclxuXHRcdFx0ZS5rZXkgIT09ICdFc2NhcGUnICYmXHJcblx0XHRcdGUua2V5ICE9PSAnQmFja3NwYWNlJyAmJlxyXG5cdFx0XHRlLmtleSAhPT0gJ0Fycm93VXAnICYmXHJcblx0XHRcdGUua2V5ICE9PSAnQXJyb3dEb3duJ1xyXG5cdFx0KSB7XHJcblx0XHRcdC8vIElmIEYxIGlzIHByZXNzZWQsIGtleSBsZW5ndGggd2lsbCBiZSAyXHJcblx0XHRcdGlmIChlLmtleS5sZW5ndGggPiAxIHx8IGUuY3RybEtleSB8fCBlLmFsdEtleSkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdC8vZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdC8vIElmIHRoaXMgaXMgYW5kcm9pZCwgaXQgd29uJ3QgcGFzcyB1cyBhbnkga2V5IGRhdGEgc28ganVzdCByZWFkIHRoZSBlbnRpcmUgaW5wdXQgZWxlbWVudFxyXG5cdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSB0cnVlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWU7XHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBUYWIvZW50ZXJcclxuXHRcdGlmIChlLmtleSA9PT0gJ1RhYicpIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dCAmJiB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMudmlzaWJsZUl0ZW1zWzBdLmlkKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudE5vZGUgPSA8SFRNTEVsZW1lbnQ+KHRoaXMucGxhY2Vob2xkZXJJbnB1dFJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHRcdFx0Ly9maW5kIGFsbCB0YWItYWJsZSBlbGVtZW50c1xyXG5cdFx0XHRjb25zdCBhbGxFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBidXR0b24sIGEsIGFyZWEsIG9iamVjdCwgc2VsZWN0LCB0ZXh0YXJlYSwgW2NvbnRlbnRlZGl0YWJsZV0nKTtcclxuXHJcblx0XHRcdC8vRmluZCB0aGUgY3VycmVudCB0YWIgaW5kZXguXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRJbmRleCA9IEFycmF5LmZyb20oYWxsRWxlbWVudHMpLmZpbmRJbmRleChlbCA9PiBjdXJyZW50Tm9kZS5pc0VxdWFsTm9kZShlbCkpXHJcblxyXG5cdFx0XHQvL2ZvY3VzIHRoZSBmb2xsb3dpbmcgZWxlbWVudFxyXG5cdFx0XHRjb25zdCB0YXJnZXRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIGFsbEVsZW1lbnRzLmxlbmd0aDtcclxuXHRcdFx0KDxIVE1MRWxlbWVudD5hbGxFbGVtZW50c1t0YXJnZXRJbmRleF0pLmZvY3VzKCk7XHJcblxyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQgJiYgdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQpO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSAnJztcclxuXHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblxyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFc2NcclxuXHRcdGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQmFja3NwYWNlXHJcblx0XHRpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmIHRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3d1cFxyXG5cdFx0aWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4LS07XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3dkb3duXHJcblx0XHRpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIXRoaXMudmlzaWJsZUl0ZW1zKVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXgrKztcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBJZiBGMSBpcyBwcmVzc2VkLCBrZXkgbGVuZ3RoIHdpbGwgYmUgMlxyXG5cdFx0aWYgKGUua2V5Lmxlbmd0aCA+IDEgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0aWYgKGUua2V5ID49ICcgJyAmJiBlLmtleSA8PSAnficpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ICs9IGUua2V5O1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZmlsdGVyU2VhcmNoKCkge1xyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkKVxyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja011bHRpU2VsZWN0U2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja011bHRpU2VsZWN0U2VhcmNoVHlwZXMuc3RhcnRzV2l0aCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+ICh4LnRleHQgPz8gXCJcIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpKSA9PT0gMCk7XHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQ7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbHRlclRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRUZXh0O1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgsIHRoaXMuc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWUgPSB0aGlzLnNlbGVjdGVkVGV4dDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrTXVsdGlTZWxlY3RTZWFyY2hUeXBlcy5lYWNoV29yZCkge1xyXG5cclxuXHRcdFx0Ly8gR2V0IHRoZSB3b3JkcyB3aGVyZSB0aGUgYmVnaW5uaW5nIG1hdGNoZXMgdGhlIHNlYXJjaCBmaXJzdFxyXG5cdFx0XHRjb25zdCBzdGFydHNXaXRoSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAoeC50ZXh0ID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPT09IDApO1xyXG5cdFx0XHRjb25zdCBlYWNoV29yZEl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4gKFwiIFwiICsgKHgudGV4dCA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKFwiIFwiICsgdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID4gMCk7XHJcblxyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IFsuLi5zdGFydHNXaXRoSXRlbXMsIC4uLmVhY2hXb3JkSXRlbXNdO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy52aXNpYmxlSXRlbXNbMF0udGV4dDtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0FuZHJvaWQgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsdGVyVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gdGhpcy5zZWxlY3RlZFRleHQ7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCwgdGhpcy5zZWxlY3RlZFRleHQubGVuZ3RoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnJlcG9zaXRpb24oKTtcclxuXHR9XHJcblxyXG5cdG9uTXVsdGlTZWxlY3RDbGlja2VkKCkge1xyXG5cdFx0aWYgKHRoaXMuZXhwYW5kZWQgPT09IGZhbHNlKVxyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHRvbkl0ZW1DbGljayhpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtLmlkKTtcclxuXHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5maWx0ZXJUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdG9uUmVtb3ZlSXRlbShpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gaXRlbS5pZCk7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tNdWx0aVNlbGVjdFNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJZHMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZElkcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkSWRzKTtcclxuXHR9XHJcbn0iLCI8ZGl2ICNjb250YWluZXJEaXYgaWQ9XCJzbGljay1tdWx0aS1zZWxlY3Rfe3t1dWlkfX1cIiBhdHRyLmRhdGEtdXVpZD1cInt7dXVpZH19XCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3QgZm9ybS1jb250cm9sXCIgW2NsYXNzLm9wZW5dPVwiZXhwYW5kZWRcIiAgW2NsYXNzLmV4cGFuZGVkLWJvcmRlcl09XCJleHBhbmRlZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfaW5wdXQtY29udGFpbmVyXCIgPlxyXG5cdFx0PGRpdiAqbmdJZj1cImRpc2FibGVkID09PSBmYWxzZVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7IGZsZXgtZ3JvdzogMTtcIiAoY2xpY2spPVwib25NdWx0aVNlbGVjdENsaWNrZWQoKVwiPlxyXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2xpY2stbXVsdGktc2VsZWN0X3NlbGVjdGVkLWl0ZW0gYmFkZ2UgYmctcHJpbWFyeVwiPjxkaXYgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3RfcmVtb3ZlXCIgKGNsaWNrKT1cIm9uUmVtb3ZlSXRlbShzZWxlY3RlZEl0ZW0pXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIGJnLXdoaXRlIHRleHQtZGFuZ2VyXCI+PC9pPjwvZGl2Pnt7c2VsZWN0ZWRJdGVtLnRleHR9fTwvZGl2PlxyXG5cdFx0XHQ8aW5wdXQgI3BsYWNlaG9sZGVySW5wdXRSZWYgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPSdwbGFjZWhvbGRlcicgKGtleXVwKT1cImV4cGFuZE9uS2V5VXAoJGV2ZW50KVwiIC8+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiAqbmdJZj1cImRpc2FibGVkID09PSB0cnVlXCIgY2xhc3M9J2lucHV0LWdyb3VwJz5cclxuXHRcdDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCIgY2xhc3M9XCJzbGljay1tdWx0aS1zZWxlY3Rfc2VsZWN0ZWQtaXRlbSBiYWRnZSBiZy1wcmltYXJ5XCI+e3tzZWxlY3RlZEl0ZW0udGV4dH19PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDx1bCAjbXVsdGlTZWxlY3RMaXN0IGlkPVwic2xpY2stbXVsdGktc2VsZWN0LWxpc3Rfe3t1dWlkfX1cIiBjbGFzcz0nc2xpY2stbXVsdGktc2VsZWN0LWxpc3QtZ3JvdXAgZHJvcGRvd24tbWVudScgW3N0eWxlLndpZHRoXT1cImxpc3RHcm91cFdpZHRoXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm9wYWNpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICcxJyA6ICcwJ1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZS53aWR0aC5weF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnRcIiBbc3R5bGUudG9wLnB4XT1cInRvcFwiPlxyXG5cdFx0PGxpIGNsYXNzPVwicHgtM1wiPlxyXG5cdFx0XHQ8aW5wdXQgI2ZpbHRlclRleHRJbnB1dFJlZiB0eXBlPVwidGV4dFwiIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cInNsaWNrLW11bHRpLXNlbGVjdF9saXN0LWl0ZW0gZm9ybS1jb250cm9sIGJnLXRyYW5zcGFyZW50IHRleHQtYm9keSBib3JkZXItYm90dG9tXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiAvPlxyXG5cdFx0PC9saT5cclxuXHRcdDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXM7IGxldCBpbmRleCA9IGluZGV4O1wiIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbSBzbGljay1tdWx0aS1zZWxlY3RfbGlzdC1pdGVtIHB4LTNcIj57e2l0ZW0/LnRleHR9fTwvbGk+XHJcblx0PC91bD5cclxuPC9kaXY+Il19
@@ -6,7 +6,7 @@ export class SlickInitParams {
6
6
  }
7
7
  }
8
8
  export class SlickInitService {
9
- static { this.version = "17.0.11"; }
9
+ static { this.version = "17.0.13"; }
10
10
  constructor() { }
11
11
  static init(initParams) {
12
12
  console.info(`Slick Components Version ${SlickInitService.version}`);
@@ -46,4 +46,4 @@ export class SlickInitService {
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickInitService, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: () => [] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO2FBQ3JCLFlBQU8sR0FBRyxTQUFTLEFBQVosQ0FBYTtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQTJCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDeEMsTUFBTyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQztRQUVqRCxPQUFhLE1BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZixJQUFJLENBQU8sTUFBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUE4QixNQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQXVCO1FBQ3pDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztpSUE5Q1csZ0JBQWdCO3FJQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiMTcuMC4xMVwiO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcblx0c3RhdGljIGluaXQoaW5pdFBhcmFtczogU2xpY2tJbml0UGFyYW1zKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGNvbnNvbGUuaW5mbyhgU2xpY2sgQ29tcG9uZW50cyBWZXJzaW9uICR7U2xpY2tJbml0U2VydmljZS52ZXJzaW9ufWApO1xyXG5cdFx0aW5pdFBhcmFtcy52ZXJzaW9uID0gU2xpY2tJbml0U2VydmljZS52ZXJzaW9uO1xyXG5cdFx0KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMgPSBpbml0UGFyYW1zO1xyXG5cclxuXHRcdHJldHVybiAoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRQYXJhbXMoKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGlmICghKDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMpIHtcclxuXHRcdFx0Y29uc3QgZGVmYXVsdFBhcmFtcyA9IG5ldyBTbGlja0luaXRQYXJhbXMoKTtcclxuXHRcdFx0ZGVmYXVsdFBhcmFtcy5hdHRhY2hUbyA9IFwiYm9keVwiO1xyXG5cdFx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGRlZmF1bHRQYXJhbXM7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIDxTbGlja0luaXRQYXJhbXM+KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0QXR0YWNoVG8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEF0dGFjaFRvKGF0dGFjaFRvRWxlbWVudDogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvID0gYXR0YWNoVG9FbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBsYXRmb3JtKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gU2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5wbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXRQbGF0Zm9ybShwbGF0Zm9ybTogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtID0gcGxhdGZvcm07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0RXJyb3JMb2coKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmVycm9yTG9nO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2cgPSBlcnJvckxvZztcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO2FBQ3JCLFlBQU8sR0FBRyxTQUFTLEFBQVosQ0FBYTtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQTJCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDeEMsTUFBTyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQztRQUVqRCxPQUFhLE1BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZixJQUFJLENBQU8sTUFBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUE4QixNQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQXVCO1FBQ3pDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2pCLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEQsQ0FBQztpSUE5Q1csZ0JBQWdCO3FJQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiMTcuMC4xM1wiO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcblx0c3RhdGljIGluaXQoaW5pdFBhcmFtczogU2xpY2tJbml0UGFyYW1zKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGNvbnNvbGUuaW5mbyhgU2xpY2sgQ29tcG9uZW50cyBWZXJzaW9uICR7U2xpY2tJbml0U2VydmljZS52ZXJzaW9ufWApO1xyXG5cdFx0aW5pdFBhcmFtcy52ZXJzaW9uID0gU2xpY2tJbml0U2VydmljZS52ZXJzaW9uO1xyXG5cdFx0KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMgPSBpbml0UGFyYW1zO1xyXG5cclxuXHRcdHJldHVybiAoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRQYXJhbXMoKTogU2xpY2tJbml0UGFyYW1zIHtcclxuXHRcdGlmICghKDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXMpIHtcclxuXHRcdFx0Y29uc3QgZGVmYXVsdFBhcmFtcyA9IG5ldyBTbGlja0luaXRQYXJhbXMoKTtcclxuXHRcdFx0ZGVmYXVsdFBhcmFtcy5hdHRhY2hUbyA9IFwiYm9keVwiO1xyXG5cdFx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGRlZmF1bHRQYXJhbXM7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIDxTbGlja0luaXRQYXJhbXM+KDxhbnk+d2luZG93KS5zbGlja0NvbXBvbmVudHNQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0QXR0YWNoVG8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEF0dGFjaFRvKGF0dGFjaFRvRWxlbWVudDogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvID0gYXR0YWNoVG9FbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBsYXRmb3JtKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gU2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5wbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXRQbGF0Zm9ybShwbGF0Zm9ybTogc3RyaW5nKSB7XHJcblx0XHRTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtID0gcGxhdGZvcm07XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0RXJyb3JMb2coKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmVycm9yTG9nO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2cgPSBlcnJvckxvZztcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
@@ -22,7 +22,7 @@ class SlickInitParams {
22
22
  }
23
23
  }
24
24
  class SlickInitService {
25
- static { this.version = "17.0.11"; }
25
+ static { this.version = "17.0.13"; }
26
26
  constructor() { }
27
27
  static init(initParams) {
28
28
  console.info(`Slick Components Version ${SlickInitService.version}`);
@@ -4450,6 +4450,9 @@ class SlickEmailerComponent {
4450
4450
  this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
4451
4451
  resolve();
4452
4452
  });
4453
+ ed.on('change', (args) => {
4454
+ this.emailerModel.body = this.getBody();
4455
+ });
4453
4456
  }
4454
4457
  });
4455
4458
  });
@@ -6770,6 +6773,9 @@ class SlickMultiSelectComponent {
6770
6773
  this.propagateChange = (_) => { };
6771
6774
  this.uuid = SlickUtilsService.newGuid();
6772
6775
  }
6776
+ async ngOnInit() {
6777
+ this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
6778
+ }
6773
6779
  async ngAfterViewInit() {
6774
6780
  // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
6775
6781
  // of a div when it expands beyond the bottom.
@@ -6825,6 +6831,7 @@ class SlickMultiSelectComponent {
6825
6831
  return;
6826
6832
  this.reposition();
6827
6833
  await SlickSleepService.sleep();
6834
+ SlickUtilsService.attachElement(this.multiSelectList.nativeElement, this.attachTo);
6828
6835
  this.multiSelectList.nativeElement.style.display = "inline-block";
6829
6836
  let selectedItems = this.multiSelectList.nativeElement.getElementsByClassName("selected");
6830
6837
  if (selectedItems && selectedItems.length > 0)
@@ -6849,11 +6856,12 @@ class SlickMultiSelectComponent {
6849
6856
  }
6850
6857
  async reposition() {
6851
6858
  await SlickSleepService.sleep();
6852
- let rect = this.containerDiv.nativeElement.getBoundingClientRect();
6853
- let containerLeft = rect.left;
6854
- let containerTop = rect.top;
6859
+ const multiSelectRect = this.containerDiv.nativeElement.getBoundingClientRect();
6860
+ const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
6861
+ const containerLeft = (this.attachTo === 'body') ? multiSelectRect.left : (multiSelectRect.left - parentRect.left);
6862
+ const containerTop = (this.attachTo === 'body') ? multiSelectRect.top : (multiSelectRect.top - parentRect.top);
6855
6863
  let containerHeight = this.containerDiv.nativeElement.offsetHeight;
6856
- let containerWidth = rect.width;
6864
+ let containerWidth = multiSelectRect.width;
6857
6865
  this.width = containerWidth;
6858
6866
  if (this.listWidth === '100%')
6859
6867
  this.listGroupWidth = this.width;
@@ -7081,7 +7089,7 @@ class SlickMultiSelectComponent {
7081
7089
  this.propagateChange(this.selectedIds);
7082
7090
  }
7083
7091
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickMultiSelectComponent, deps: [{ token: SlickMultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
7084
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
7092
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickMultiSelectComponent, selector: "slick-multi-select", inputs: { placeholder: "placeholder", items: "items", idFieldName: "idFieldName", textFieldName: "textFieldName", disabled: "disabled", allowEmpty: "allowEmpty", singleSelect: "singleSelect", width: "width", listWidth: "listWidth", height: "height", showLoadingMessage: "showLoadingMessage", showDebug: "showDebug", tabindex: "tabindex", attachTo: "attachTo", searchType: "searchType" }, outputs: { onExpand: "onExpand", onCollapse: "onCollapse", onSelect: "onSelect" }, providers: [SlickMultiSelectService,
7085
7093
  {
7086
7094
  provide: NG_VALUE_ACCESSOR,
7087
7095
  useExisting: forwardRef((() => SlickMultiSelectComponent)),
@@ -7122,6 +7130,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
7122
7130
  type: Input
7123
7131
  }], tabindex: [{
7124
7132
  type: Input
7133
+ }], attachTo: [{
7134
+ type: Input
7125
7135
  }], searchType: [{
7126
7136
  type: Input
7127
7137
  }], onExpand: [{