chrv-components 1.8.33 → 1.8.35

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.
Binary file
@@ -167,6 +167,9 @@ export class ChrFormComponent {
167
167
  this.form.markAllAsTouched();
168
168
  this.form.updateValueAndValidity({ emitEvent: true });
169
169
  };
170
+ this.reset = () => {
171
+ this.form.reset();
172
+ };
170
173
  this.setValue$ = (key, value) => {
171
174
  const val = this.typeToInputValue(this.controlTypes[key], value);
172
175
  this.form.get(key)?.patchValue(val);
@@ -211,7 +214,7 @@ export class ChrFormComponent {
211
214
  this.submit?.(this.form.value);
212
215
  };
213
216
  this.log = (el) => {
214
- console.log(el);
217
+ //console.log(el);
215
218
  };
216
219
  this.detectChanges = () => {
217
220
  this.form.markAsDirty();
@@ -339,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
339
342
  }], tabDisplay: [{
340
343
  type: Input
341
344
  }] } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FJdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLG1CQUFtQixFQUNuQixXQUFXLEdBR1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDTixJQUFJLEVBQ0osc0JBQXNCLEdBQ3RCLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLE9B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QkFBb0IsK0JBQ3BCLFFBQVEsa0ZBQ1Isd0JBQXdCLG1PQUN4QixxQkFBcUIsOEJBRXJCLFlBQVksdVlBRVosYUFBYTs7MkZBV0YsZ0JBQWdCO2tCQWhDNUIsU0FBUzsrQkFDQyxjQUFjLGNBT1osSUFBSSxXQUNQO3dCQUNSLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixRQUFRO3dCQUNSLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixhQUFhO3FCQUNiLGFBQ1U7d0JBQ1YsUUFBUTt3QkFDUjs0QkFDQyxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO3lCQUNyQztxQkFDRCxtQkFDZ0IsdUJBQXVCLENBQUMsT0FBTztnS0FHdkMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdE9uSW5pdCxcblx0RWxlbWVudFJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG5cdFZhbGlkYXRvckZuLFxuXHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXHRGb3Jtc01vZHVsZSxcblx0VmFsaWRhdGlvbkVycm9ycyxcblx0QWJzdHJhY3RDb250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLXNlYXJjaC1zZWxlY3QvY2hyLXNlYXJjaC1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcbmltcG9ydCB7XG5cdERhdGVQaXBlLFxuXHRDb21tb25Nb2R1bGUsXG5cdERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xuaW1wb3J0IHtcblx0dHlwZSxcblx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcbn0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgZGVjaW1hbCB9IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3JcIjtcbmltcG9ydCB7IG1heERhdGUgfSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sQ29sbGVjdGlvbiB7XG5cdFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuXHRkaXNwbGF5OiBzdHJpbmc7XG5cdGNhbGxiYWNrPzogRnVuY3Rpb247XG5cdHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcblx0cnVsZTogc3RyaW5nO1xuXHR2YWxpZGF0b3I/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcblx0a2V5Pzogc3RyaW5nO1xuXHR2YWx1ZT86IGFueTtcblx0ZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdHNwYW4/OiBzdHJpbmc7XG5cdHdpZHRoPzogXCJjb2xcIiB8IFwicm93XCI7XG5cdGNvbD86IG51bWJlcjtcblx0cm93PzogbnVtYmVyO1xuXHR0eXBlOlxuXHRcdHwgXCJ0ZXh0XCJcblx0XHR8IFwicGFzc3dvcmRcIlxuXHRcdHwgXCJ0ZXh0QXJlYVwiXG5cdFx0fCBcIm51bWJlclwiXG5cdFx0fCBcImRhdGVcIlxuXHRcdHwgXCJkYXRldGltZVwiXG5cdFx0fCBcInNlYXJjaFNlbGVjdFwiXG5cdFx0fCBcImNvbG9yXCJcblx0XHR8IFwidG9nZ2xlXCI7XG5cdHZhbHVlPzogYW55O1xuXHRkYXRhPzogYW55W10gfCBudWxsO1xuXHRpY29uPzogc3RyaW5nO1xuXHRpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0aWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuXHRpY29uVG9vbHRpcD86IHN0cmluZztcblx0Zm4/OiAob2JqZWN0OiBhbnkpID0+IHN0cmluZztcblx0ZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcblx0dmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuXHR0aXRsZT86IHN0cmluZztcblx0Y29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImFwcC1jaHItZm9ybVwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlVXJsczogW1xuXHRcdFwiLi9jaHItZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxuXHRcdFwiLi4vLi4vLi4vLi4vLi4vdGFpbHdpbmRidWlsZC5jc3NcIixcblx0XHRcIi4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3NcIixcblx0XSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0Rm9ybXNNb2R1bGUsXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcblx0XHRNYXRJY29uTW9kdWxlLFxuXHRcdE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuXHRcdE1hdEVycm9yLFxuXHRcdENoclNlYXJjaFNlbGVjdENvbXBvbmVudCxcblx0XHRNYXRBdXRvY29tcGxldGVNb2R1bGUsXG5cdFx0RGF0ZVBpcGUsXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG5cdFx0TWF0VGFic01vZHVsZSxcblx0XSxcblx0cHJvdmlkZXJzOiBbXG5cdFx0RGF0ZVBpcGUsXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcblx0XHRcdHVzZVZhbHVlOiB7IGRhdGVGb3JtYXQ6IFwic2hvcnREYXRlXCIgfSxcblx0XHR9LFxuXHRdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIENockZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoKSBzZWN0aW9ucz86IElGb3JtU2VjdGlvbltdO1xuXHRASW5wdXQoKSBjb250cm9scz86IElDb250cm9sW107XG5cblx0QElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuXHRASW5wdXQoKSBtb2RlbDogYW55ID0gbnVsbDtcblx0QE91dHB1dCgpIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG5cdEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgc3VibWl0PzogRnVuY3Rpb247XG5cblx0QElucHV0KCkgY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdEBPdXRwdXQoKSBmb3JtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPiA9XG5cdFx0bmV3IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+KCk7XG5cblx0QElucHV0KCkgdGFiRGlzcGxheTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuYnVpbGRlci5ncm91cCh7fSk7XG5cblx0cHJpdmF0ZSB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblx0cHJpdmF0ZSBjb250cm9sVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblx0cHJpdmF0ZSBmbGF0dGVuZWRDb250cm9sczogSUNvbnRyb2xbXSA9IFtdO1xuXG5cdHB1YmxpYyBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgYnVpbGRlcjogRm9ybUJ1aWxkZXIsXG5cdFx0cHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cdFx0cHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmXG5cdCkge1xuXHRcdGlmICh0aGlzLmNvbnRyb2xzICE9IG51bGwgJiYgdGhpcy5zZWN0aW9ucyAhPSBudWxsKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcIllvdSBjYW4ndCB1c2UgYm90aCBjb250cm9scyBhbmQgc2VjdGlvbnMgaW4gdGhlIHNhbWUgZm9ybVwiXG5cdFx0XHQpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5mbGF0dGVuZWRDb250cm9scyA9XG5cdFx0XHR0aGlzLnNlY3Rpb25zXG5cdFx0XHRcdD8ubWFwKChzKSA9PiBzLmNvbnRyb2xzKVxuXHRcdFx0XHQuZmxhdCgpXG5cdFx0XHRcdC5jb25jYXQodGhpcy5jb250cm9scyA/PyBbXSkgfHwgW107XG5cdFx0dGhpcy5pbml0TW9kZWwoKTtcblx0XHR0aGlzLmluaXRWYWx1ZXMoKTtcblx0XHR0aGlzLmluaXRDb250cm9scygpO1xuXHRcdHRoaXMuaW5pdExpc3RlbmVycygpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0dmFsaWRhdGVTZWFyY2hTZWxlY3RWYWxpZHR5ID0gKHZhbGlkOiBib29sZWFuKSA9PiB7XG5cdFx0Ly90aGlzLnZhbGlkID0gdmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkO1xuXHRcdC8vdGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMudmFsaWQpO1xuXHR9O1xuXG5cdHByaXZhdGUgaW5pdE1vZGVsID0gKCkgPT4ge1xuXHRcdGlmICh0aGlzLm1vZGVsID09IG51bGwpIHRoaXMubW9kZWwgPSB7fTtcblxuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG5cdFx0XHRpZiAoIXRoaXMubW9kZWxbY29udHJvbC5uYW1lXSkgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID0gY29udHJvbC52YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0VmFsdWVzID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG5cdFx0XHRpZiAoIXRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0pXG5cdFx0XHRcdHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPSB0aGlzLnRvSW5wdXRWYWx1ZShcblx0XHRcdFx0XHRjb250cm9sLFxuXHRcdFx0XHRcdHRoaXMubW9kZWxbY29udHJvbC5uYW1lXVxuXHRcdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGluaXRDb250cm9scyA9ICgpID0+IHtcblx0XHRjb25zdCBmb3JtQ29udHJvbHMgPSB7fSBhcyBJRm9ybUNvbnRyb2xDb2xsZWN0aW9uO1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG5cdFx0XHRjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5fZ2V0VmFsaWRhdG9ycyhjb250cm9sLnZhbGlkYXRpb25zKTtcblx0XHRcdGZvcm1Db250cm9sc1tjb250cm9sLm5hbWVdID0gbmV3IEZvcm1Db250cm9sKFxuXHRcdFx0XHR0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdLFxuXHRcdFx0XHR2YWxpZGF0b3JzXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5jb250cm9sVHlwZXNbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudHlwZTtcblx0XHR9XG5cblx0XHR0aGlzLmZvcm0gPSB0aGlzLmJ1aWxkZXIuZ3JvdXAoZm9ybUNvbnRyb2xzKTtcblx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHR9O1xuXG5cdHByaXZhdGUgaW5pdExpc3RlbmVycyA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcblx0XHRcdFx0aWYgKHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdFx0XHRcdFx0dGhpcy5tb2RlbFtrZXldID0gdmFsdWVzW2tleV07XG5cdFx0XHRcdFx0dGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlc1trZXldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHRcdFx0dGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMudmFsaWQpO1xuXHRcdFx0dGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0fSk7XG5cdH07XG5cblx0Y29udHJvbCA9IChuYW1lOiBzdHJpbmcpID0+IHtcblx0XHRpZiAobmFtZSkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tuYW1lXTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcblxuXHRmb2N1cyA9IChuYW1lOiBzdHJpbmcpID0+IHtcblx0XHQvL2NvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2wobmFtZSk7XG5cdFx0Y29uc3QgZWwgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuXHRcdFx0YGlucHV0W25hbWU9XCIke25hbWV9XCJdYFxuXHRcdCkgYXMgSFRNTElucHV0RWxlbWVudDtcblx0XHR0aGlzLmNvbnRyb2wobmFtZSk/Lm1hcmtBc1RvdWNoZWQoKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGVsLmZvY3VzKCk7XG5cdFx0fSwgMTApO1xuXHR9O1xuXG5cdHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB0aGlzLmdldFZhbHVlKGlucHV0KTtcblxuXHRnZXRWYWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuXHRcdGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuXHRcdHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG5cdH07XG5cblx0aXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuXHRcdGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcblx0XHRyZXR1cm4gdGhpcy52YWxpZDtcblx0fTtcblxuXHRpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuXHRcdHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKFxuXHRcdFx0KHYpID0+IHYucnVsZT8udG9Mb3dlckNhc2UoKSA9PSBcInJlcXVpcmVkXCJcblx0XHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIGEgY29udHJvbCBXSVRIT1VUIHRyaWdnZXJpbmcgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG5cdCAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0c2V0VmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHZhbCwge1xuXHRcdFx0ZW1pdEV2ZW50OiBmYWxzZSxcblx0XHRcdGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2UsXG5cdFx0fSk7XG5cdFx0dGhpcy5tb2RlbFtrZXldID0gdmFsO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0gbW9kZWwgdGhlIG1vZGVsIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRzZXQgPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcblx0XHRcdHRoaXMuc2V0VmFsdWUoa2V5LCBtb2RlbFtrZXldLCBkYXRlRm9ybWF0KTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIGEgY29udHJvbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG5cdCAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2hWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRjb25zdCB2YWwgPSB0aGlzLnR5cGVUb0lucHV0VmFsdWUodGhpcy5jb250cm9sVHlwZXNba2V5XSwgdmFsdWUpO1xuXHRcdHRoaXMuc2V0VmFsdWUkKGtleSwgdmFsKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0dGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudCBvbmNlIGZvciBlYWNoIGlucHV0XG5cdCAqIEBwYXJhbSBtb2RlbCBtb2RlbCB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2ggPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcblx0XHRcdHRoaXMucGF0Y2hWYWx1ZShrZXksIG1vZGVsW2tleV0sIGRhdGVGb3JtYXQpO1xuXHRcdH1cblx0fTtcblxuXHRjaGVja1ZhbGlkaXR5ID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG5cdFx0XHR0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcblx0XHR0aGlzLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHR1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gKHRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdGlmICh0b3VjaGVkKSB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHR9O1xuXG5cdHByaXZhdGUgc2V0VmFsdWUkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsKTtcblx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsO1xuXHR9O1xuXG5cdHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRyZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuXHR9O1xuXG5cdHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcblx0XHR0eXBlOiBzdHJpbmcsXG5cdFx0dmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuXHRcdGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcblx0KSA9PiB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcblx0XHRcdGNhc2UgXCJkYXRldGltZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkVEhIOm1tXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFRISDptbVwiKTtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0cmV0dXJuIE51bWJlcih2YWx1ZSk7XG5cdFx0XHRjYXNlIFwic2VhcmNoU2VsZWN0XCI6XG5cdFx0XHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlITtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBudWxsO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IGRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSB0cmFuc2Zvcm1EYXRlID0gKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuXHR9O1xuXG5cdHB1YmxpYyByZXNpemUgPSAodGV4dEFyZWE6IEhUTUxUZXh0QXJlYUVsZW1lbnQpID0+IHtcblx0XHRjb25zdCBpbml0aWFsSGVpZ2h0ID0gdGV4dEFyZWEuc3R5bGUuaGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IGluaXRpYWxIZWlnaHQ7XG5cdFx0dGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gXCJcIiArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArIFwicHhcIjtcblx0fTtcblxuXHRwdWJsaWMgZG9TdWJtaXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHRpZiAodGhpcy52YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQpIHRoaXMuc3VibWl0Py4odGhpcy5mb3JtLnZhbHVlKTtcblx0fTtcblxuXHRsb2cgPSAoZWw6IGFueSkgPT4ge1xuXHRcdGNvbnNvbGUubG9nKGVsKTtcblx0fTtcblxuXHRwcml2YXRlIGRldGVjdENoYW5nZXMgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG5cdFx0dGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0cHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyA9ICh2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdKSA9PiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXHRcdGlmICghdmFsaWRhdGlvbnMpIHJldHVybiB2YWxpZGF0b3JzO1xuXHRcdC8vU3dpdGNoIGNhc2UgYnJlYWtzIHRoZSBtb2JpbGUgYXBwIHNvIHdlJ2xsIGRvIGlmIHN0YXRlbWVudHNcblx0XHRmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcblx0XHRcdGlmICh2YWxpZGF0aW9uLnZhbGlkYXRvciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaCh2YWxpZGF0aW9uLnZhbGlkYXRvcik7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcnVsZSA9IHZhbGlkYXRpb24ucnVsZT8udG9Mb2NhbGVMb3dlckNhc2UoKTtcblx0XHRcdGlmIChydWxlID09IFwibWluXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4XCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwicmVxdWlyZWRcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNlIGNoYW1wcyBlc3QgcmVxdWlzICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJlbWFpbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgYWRyZXNzZSBlbWFpbCBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5sZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhsZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJ0eXBlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaCh0eXBlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZGVjaW1hbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBMZSBub21icmUgZGUgZMOpY2ltYWwgbidlc3QgcGFzIHZhbGlkZSAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKGRlY2ltYWwodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhkYXRlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRvcnM7XG5cdH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzYgbXQtMlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImluaXRpYWxpemVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5IHx8ICFzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpbmdsZVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbHM6IGNvbnRyb2xzfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3Rpb25zOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYnNUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3RzOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFic1RlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdHMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWN0aW9uLnRpdGxlIHx8ICfDiXRhcGUgJyArIChpbmRleCArIDEpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiIGNsYXNzPVwibXQtNFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICAgIEBmb3IgKGN0cmwgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgICAgbGFzdCA9XG4gICAgICAgICAgJGxhc3QpXG4gICAgICAgICAge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY3RybCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgfVxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVGVtcGxhdGUgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2xzOyB0cmFjayBjb250cm9sOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6IGxhc3R9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWN0aW9uVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0aW9ucyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICA8aDIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICB9XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgIEBmb3IgKGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgIGxhc3QgPVxuICAgICAgICAkbGFzdClcbiAgICAgICAge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGluZGV4ICE9IChzZWN0aW9uc3x8W10pLmxlbmd0aCAtIDEgJiYgIWNvbXBhY3QpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS00XCI+XG4gICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZSBsZXQtY29udHJvbD0nY29udHJvbCcgbGV0LWxhc3Q9J2xhc3QnIGxldC1pbmRleD0naW5kZXgnPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1taW4gbXQtMlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtuZ0NsYXNzXT1cIntcbiAgICAnc206Y29sLXNwYW4tMic6IChjb250cm9sLndpZHRoID09ICdyb3cnICYmICFjb21wYWN0KSB8fCBjb250cm9sLnR5cGU9PSd0ZXh0QXJlYScgJiYgY29tcGFjdCAmJiBjb250cm9sLndpZHRoICE9ICdyb3cnLFxuICAgICdzbTpjb2wtc3Bhbi00JzogY29udHJvbC53aWR0aCA9PSdyb3cnICYmIGNvbXBhY3QsXG4gICAgfVwiPlxuICAgIEBpZiAoY29udHJvbC50eXBlPT0nc2VhcmNoU2VsZWN0Jykge1xuICAgIDxkaXYgYXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmUgaW5wdXQgei0wIHctZnVsbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIgW2Zvcl09XCJjb250cm9sLm5hbWVcIj57e1xuICAgICAgICBjb250cm9sLmxhYmVsXG4gICAgICAgIH19XG4gICAgICAgIEBpZiAoaXNDb250cm9sUmVxdWlyZWQoY29udHJvbCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIDpcbiAgICAgICAgQGZvciAodmFsaWRhdGlvbiBvZiBjb250cm9sLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uKSB7XG4gICAgICAgIEBpZiAoXG4gICAgICAgIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJlxuICAgICAgICBmb3JtLmhhc0Vycm9yKHZhbGlkYXRpb24ucnVsZSwgY29udHJvbC5uYW1lKSAmJiAkaW5kZXggPT0gMFxuICAgICAgICApIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTAgdy1mdWxsIGdyb3VwL2lucHV0cyBjb250ZW50XCI+XG4gICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgIDwhLS1URVhULS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICB9XG4gICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLURBVEUtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tQ09MT1ItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0b2dnbGUnKXtcbiAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUsIGNvbnRyb2wubmFtZSkgJiYgJGluZGV4ID09IDAgKSB7IDxtYXQtZXJyb3JcbiAgICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wuaWNvbiAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpbnB1dCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChjb250cm9sLnNwYW4pIHtcbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwiIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzIHx8ICFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgPyAndGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDAnIDogJyF0ZXh0LXJlZC01MDAgZGFyazohdGV4dC1yZWQtODAwJ1wiXG4gICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FJdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLG1CQUFtQixFQUNuQixXQUFXLEdBR1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDTixJQUFJLEVBQ0osc0JBQXNCLEdBQ3RCLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLE9B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LG1CQUFtQiwreENBQ25CLFdBQVcsOEJBQ1gsZ0JBQWdCLDRUQUNoQixhQUFhLG1MQUNiLG9CQUFvQiwrQkFDcEIsUUFBUSxrRkFDUix3QkFBd0IsbU9BQ3hCLHFCQUFxQiw4QkFFckIsWUFBWSx1WUFFWixhQUFhOzsyRkFXRixnQkFBZ0I7a0JBaEM1QixTQUFTOytCQUNDLGNBQWMsY0FPWixJQUFJLFdBQ1A7d0JBQ1IsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFFBQVE7d0JBQ1Isd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGFBQWE7cUJBQ2IsYUFDVTt3QkFDVixRQUFRO3dCQUNSOzRCQUNDLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7eUJBQ3JDO3FCQUNELG1CQUNnQix1QkFBdUIsQ0FBQyxPQUFPO2dLQUd2QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0T25Jbml0LFxuXHRFbGVtZW50UmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcblx0VmFsaWRhdG9yRm4sXG5cdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdEZvcm1zTW9kdWxlLFxuXHRWYWxpZGF0aW9uRXJyb3JzLFxuXHRBYnN0cmFjdENvbnRyb2wsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcblx0Rm9ybUJ1aWxkZXIsXG5cdEZvcm1Hcm91cCxcblx0VmFsaWRhdG9ycyxcblx0Rm9ybUNvbnRyb2wsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xuaW1wb3J0IHtcblx0RGF0ZVBpcGUsXG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XG5pbXBvcnQge1xuXHR0eXBlLFxuXHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxufSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBkZWNpbWFsIH0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2xDb2xsZWN0aW9uIHtcblx0W2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZpbHRlciB7XG5cdGRpc3BsYXk6IHN0cmluZztcblx0Y2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0dG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbFZhbGlkYXRpb24ge1xuXHRydWxlOiBzdHJpbmc7XG5cdHZhbGlkYXRvcj86IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xuXHRrZXk/OiBzdHJpbmc7XG5cdHZhbHVlPzogYW55O1xuXHRkaXNwbGF5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sIHtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0c3Bhbj86IHN0cmluZztcblx0d2lkdGg/OiBcImNvbFwiIHwgXCJyb3dcIjtcblx0Y29sPzogbnVtYmVyO1xuXHRyb3c/OiBudW1iZXI7XG5cdHR5cGU6XG5cdFx0fCBcInRleHRcIlxuXHRcdHwgXCJwYXNzd29yZFwiXG5cdFx0fCBcInRleHRBcmVhXCJcblx0XHR8IFwibnVtYmVyXCJcblx0XHR8IFwiZGF0ZVwiXG5cdFx0fCBcImRhdGV0aW1lXCJcblx0XHR8IFwic2VhcmNoU2VsZWN0XCJcblx0XHR8IFwiY29sb3JcIlxuXHRcdHwgXCJ0b2dnbGVcIjtcblx0dmFsdWU/OiBhbnk7XG5cdGRhdGE/OiBhbnlbXSB8IG51bGw7XG5cdGljb24/OiBzdHJpbmc7XG5cdGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG5cdGljb25Ub29sdGlwPzogc3RyaW5nO1xuXHRmbj86IChvYmplY3Q6IGFueSkgPT4gc3RyaW5nO1xuXHRmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuXHR2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRjb250cm9sczogSUNvbnRyb2xbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci1mb3JtXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdFx0XCIuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzc1wiLFxuXHRcdFwiLi9jaHItZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxuXHRdLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcblx0XHRGb3Jtc01vZHVsZSxcblx0XHRNYXRUb29sdGlwTW9kdWxlLFxuXHRcdE1hdEljb25Nb2R1bGUsXG5cdFx0TWF0U2xpZGVUb2dnbGVNb2R1bGUsXG5cdFx0TWF0RXJyb3IsXG5cdFx0Q2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuXHRcdE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcblx0XHREYXRlUGlwZSxcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcblx0XHRNYXRUYWJzTW9kdWxlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIHNlY3Rpb25zPzogSUZvcm1TZWN0aW9uW107XG5cdEBJbnB1dCgpIGNvbnRyb2xzPzogSUNvbnRyb2xbXTtcblxuXHRASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG5cdEBJbnB1dCgpIG1vZGVsOiBhbnkgPSBudWxsO1xuXHRAT3V0cHV0KCkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0QElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRASW5wdXQoKSBzdWJtaXQ/OiBGdW5jdGlvbjtcblxuXHRASW5wdXQoKSBjb21wYWN0OiBib29sZWFuID0gZmFsc2U7XG5cblx0QE91dHB1dCgpIGZvcm1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+ID1cblx0XHRuZXcgRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4oKTtcblxuXHRASW5wdXQoKSB0YWJEaXNwbGF5OiBib29sZWFuID0gZmFsc2U7XG5cblx0Zm9ybTogRm9ybUdyb3VwID0gdGhpcy5idWlsZGVyLmdyb3VwKHt9KTtcblxuXHRwcml2YXRlIHZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRwcml2YXRlIGNvbnRyb2xUeXBlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXHRwcml2YXRlIGZsYXR0ZW5lZENvbnRyb2xzOiBJQ29udHJvbFtdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcblx0XHRwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcblx0XHRwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcblx0KSB7XG5cdFx0aWYgKHRoaXMuY29udHJvbHMgIT0gbnVsbCAmJiB0aGlzLnNlY3Rpb25zICE9IG51bGwpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFwiWW91IGNhbid0IHVzZSBib3RoIGNvbnRyb2xzIGFuZCBzZWN0aW9ucyBpbiB0aGUgc2FtZSBmb3JtXCJcblx0XHRcdCk7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmZsYXR0ZW5lZENvbnRyb2xzID1cblx0XHRcdHRoaXMuc2VjdGlvbnNcblx0XHRcdFx0Py5tYXAoKHMpID0+IHMuY29udHJvbHMpXG5cdFx0XHRcdC5mbGF0KClcblx0XHRcdFx0LmNvbmNhdCh0aGlzLmNvbnRyb2xzID8/IFtdKSB8fCBbXTtcblx0XHR0aGlzLmluaXRNb2RlbCgpO1xuXHRcdHRoaXMuaW5pdFZhbHVlcygpO1xuXHRcdHRoaXMuaW5pdENvbnRyb2xzKCk7XG5cdFx0dGhpcy5pbml0TGlzdGVuZXJzKCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cdH1cblxuXHR2YWxpZGF0ZVNlYXJjaFNlbGVjdFZhbGlkdHkgPSAodmFsaWQ6IGJvb2xlYW4pID0+IHtcblx0XHQvL3RoaXMudmFsaWQgPSB2YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0Ly90aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdKSB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGluaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSlcblx0XHRcdFx0dGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9IHRoaXMudG9JbnB1dFZhbHVlKFxuXHRcdFx0XHRcdGNvbnRyb2wsXG5cdFx0XHRcdFx0dGhpcy5tb2RlbFtjb250cm9sLm5hbWVdXG5cdFx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgaW5pdENvbnRyb2xzID0gKCkgPT4ge1xuXHRcdGNvbnN0IGZvcm1Db250cm9scyA9IHt9IGFzIElGb3JtQ29udHJvbENvbGxlY3Rpb247XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLl9nZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdGlvbnMpO1xuXHRcdFx0Zm9ybUNvbnRyb2xzW2NvbnRyb2wubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woXG5cdFx0XHRcdHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0sXG5cdFx0XHRcdHZhbGlkYXRvcnNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbnRyb2xUeXBlc1tjb250cm9sLm5hbWVdID0gY29udHJvbC50eXBlO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtQ29udHJvbHMpO1xuXHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuXHRcdFx0XHRpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcblx0XHRcdFx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWVzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdFx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fTtcblxuXHRjb250cm9sID0gKG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdGlmIChuYW1lKSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW25hbWVdO1xuXHRcdHJldHVybiBudWxsO1xuXHR9O1xuXG5cdGZvY3VzID0gKG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdC8vY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbChuYW1lKTtcblx0XHRjb25zdCBlbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHRgaW5wdXRbbmFtZT1cIiR7bmFtZX1cIl1gXG5cdFx0KSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdHRoaXMuY29udHJvbChuYW1lKT8ubWFya0FzVG91Y2hlZCgpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0ZWwuZm9jdXMoKTtcblx0XHR9LCAxMCk7XG5cdH07XG5cblx0dmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHRoaXMuZ2V0VmFsdWUoaW5wdXQpO1xuXG5cdGdldFZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8udmFsdWU7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcblx0fTtcblxuXHRpc1ZhbGlkID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmdldChpbnB1dCk/LnZhbGlkO1xuXHRcdHJldHVybiB0aGlzLnZhbGlkO1xuXHR9O1xuXG5cdGlzQ29udHJvbFJlcXVpcmVkID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG5cdFx0cmV0dXJuIGNvbnRyb2wudmFsaWRhdGlvbnM/LmZpbmQoXG5cdFx0XHQodikgPT4gdi5ydWxlPy50b0xvd2VyQ2FzZSgpID09IFwicmVxdWlyZWRcIlxuXHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIGtleSBpbnB1dCBrZXkgKGNvbnRyb2wgbmFtZSlcblx0ICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRzZXRWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRjb25zdCB2YWwgPSB0aGlzLnR5cGVUb0lucHV0VmFsdWUodGhpcy5jb250cm9sVHlwZXNba2V5XSwgdmFsdWUpO1xuXHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodmFsLCB7XG5cdFx0XHRlbWl0RXZlbnQ6IGZhbHNlLFxuXHRcdFx0ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSxcblx0XHR9KTtcblx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWw7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbCBXSVRIT1VUIHRyaWdnZXJpbmcgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBtb2RlbCB0aGUgbW9kZWwgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHNldCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuXHRcdFx0dGhpcy5zZXRWYWx1ZShrZXksIG1vZGVsW2tleV0sIGRhdGVGb3JtYXQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgYSBjb250cm9sLiBUaGlzIFdJTEwgdHJpZ2dlciB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIGtleSBpbnB1dCBrZXkgKGNvbnRyb2wgbmFtZSlcblx0ICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRwYXRjaFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG5cdFx0dGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWwpO1xuXHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcblx0XHR0aGlzLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcblx0ICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuXHRcdFx0dGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHRcdHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG5cdFx0aWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0dGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cdH07XG5cblx0cmVzZXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLnJlc2V0KClcblx0fVxuXG5cdHByaXZhdGUgc2V0VmFsdWUkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsKTtcblx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsO1xuXHR9O1xuXG5cdHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRyZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuXHR9O1xuXG5cdHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcblx0XHR0eXBlOiBzdHJpbmcsXG5cdFx0dmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuXHRcdGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcblx0KSA9PiB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcblx0XHRcdGNhc2UgXCJkYXRldGltZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkVEhIOm1tXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFRISDptbVwiKTtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0cmV0dXJuIE51bWJlcih2YWx1ZSk7XG5cdFx0XHRjYXNlIFwic2VhcmNoU2VsZWN0XCI6XG5cdFx0XHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlITtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBudWxsO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IGRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSB0cmFuc2Zvcm1EYXRlID0gKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuXHR9O1xuXG5cdHB1YmxpYyByZXNpemUgPSAodGV4dEFyZWE6IEhUTUxUZXh0QXJlYUVsZW1lbnQpID0+IHtcblx0XHRjb25zdCBpbml0aWFsSGVpZ2h0ID0gdGV4dEFyZWEuc3R5bGUuaGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IGluaXRpYWxIZWlnaHQ7XG5cdFx0dGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gXCJcIiArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArIFwicHhcIjtcblx0fTtcblxuXHRwdWJsaWMgZG9TdWJtaXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHRpZiAodGhpcy52YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQpIHRoaXMuc3VibWl0Py4odGhpcy5mb3JtLnZhbHVlKTtcblx0fTtcblxuXHRwcml2YXRlIGxvZyA9IChlbDogYW55KSA9PiB7XG5cdFx0Ly9jb25zb2xlLmxvZyhlbCk7XG5cdH07XG5cblx0cHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuXHRcdGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcblx0XHRpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcblx0XHQvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG5cdFx0Zm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG5cdFx0XHRpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2godmFsaWRhdGlvbi52YWxpZGF0b3IpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGU/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pblwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInJlcXVpcmVkXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZSBjaGFtcHMgZXN0IHJlcXVpcyAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZW1haWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWlubGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4bGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwidHlwZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImRlY2ltYWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4ZGF0ZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBDZXR0ZSBkYXRlIGVzdCB0cm9wIGdyYW5kZSAhIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gobWF4RGF0ZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB2YWxpZGF0b3JzO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgbWluLWgtNS82IG10LTJcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCJpbml0aWFsaXplZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSB8fCAhc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzaW5nbGVUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2xzOiBjb250cm9sc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWN0aW9uVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0aW9uczogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJzVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0czogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RhYnNUZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3RzJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwic2VjdGlvbi50aXRsZSB8fCAnw4l0YXBlICcgKyAoaW5kZXggKyAxKVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIiBjbGFzcz1cIm10LTRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgICBAZm9yIChjdHJsIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICAgIGxhc3QgPVxuICAgICAgICAgICRsYXN0KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGN0cmwsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIH1cbiAgICA8L21hdC10YWItZ3JvdXA+XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZVRlbXBsYXRlIGxldC1jb250cm9scz1cImNvbnRyb2xzXCI+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgQGZvciAoY29udHJvbCBvZiBjb250cm9sczsgdHJhY2sgY29udHJvbDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiBsYXN0fVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VjdGlvblRlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdGlvbnMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgPGRpdj5cbiAgICAgIEBpZiAoc2VjdGlvbi50aXRsZSkge1xuICAgICAgPGgyIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC14bCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgICAgfVxuICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICBAZm9yIChjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICBsYXN0ID1cbiAgICAgICAgJGxhc3QpXG4gICAgICAgIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChpbmRleCAhPSAoc2VjdGlvbnN8fFtdKS5sZW5ndGggLSAxICYmICFjb21wYWN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHktNFwiPlxuICAgICAgICA8aHIgY2xhc3M9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGUgbGV0LWNvbnRyb2w9J2NvbnRyb2wnIGxldC1sYXN0PSdsYXN0JyBsZXQtaW5kZXg9J2luZGV4Jz5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtbWluIG10LTJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbbmdDbGFzc109XCJ7XG4gICAgJ3NtOmNvbC1zcGFuLTInOiAoY29udHJvbC53aWR0aCA9PSAncm93JyAmJiAhY29tcGFjdCkgfHwgY29udHJvbC50eXBlPT0ndGV4dEFyZWEnICYmIGNvbXBhY3QgJiYgY29udHJvbC53aWR0aCAhPSAncm93JyxcbiAgICAnc206Y29sLXNwYW4tNCc6IGNvbnRyb2wud2lkdGggPT0ncm93JyAmJiBjb21wYWN0LFxuICAgIH1cIj5cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3NlYXJjaFNlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItc2VhcmNoLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUsIGNvbnRyb2wubmFtZSkgJiYgJGluZGV4ID09IDBcbiAgICAgICAgKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgei0wIHctZnVsbCBncm91cC9pbnB1dHMgY29udGVudFwiPlxuICAgICAgPCEtLSBIZXJlIHdlIHdpbGwgKm5nSWYgZWFjaCB0eXBlIG9mIGlucHV0IGNhdXNlIGl0J3MgdGhlIGNsZWFuZXN0IHdheSBJIGNhbiBpbWFnaW5lLS0+XG4gICAgICA8IS0tVEVYVC0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHQnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVBBU1NXT1JELS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAncGFzc3dvcmQnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1URVhUIEFSRUEtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0QXJlYScpIHtcbiAgICAgIDx0ZXh0YXJlYSAjdGV4dEFyZWEgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgKGlucHV0KT1cInJlc2l6ZSh0ZXh0QXJlYSlcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwibm8tc2Nyb2xsYmFyIGlucHV0ICFyZXNpemUtbm9uZSBoZWlnaHQtbm9ybWFsaXplZCBibG9jayBweS0yIHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj48L3RleHRhcmVhPlxuICAgICAgfVxuICAgICAgPCEtLU5VTUJFUi0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ251bWJlcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1EQVRFLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImRhdGVcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLUNPTE9SLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnY29sb3InKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJjb2xvclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIiBzdHlsZT1cImhlaWdodDogNDJweDtcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTEuNSBtLTAgcHgtMCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndG9nZ2xlJyl7XG4gICAgICA8aW5wdXQgI3RvZ2dsZSB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImhpZGRlbiBjaGVja2JveFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB0b2dnbGUtd3JhcHBlciBibG9jayBpbnB1dCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGU/LmNsaWNrKClcIiBjbGFzcz1cInJlbGF0aXZlIGJsb2NrIGlucHV0IHRvZ2dsZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgIT0gJ3NlYXJjaFNlbGVjdCcpIHtcbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiBbZm9yXT1cImNvbnRyb2wubmFtZVwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmKGNvbnRyb2wubGFiZWwgJiYgY29udHJvbC5sYWJlbCAhPSAnJyAmJiBjb250cm9sLmxhYmVsICE9ICcgJyl7XG4gICAgICAgIEBpZiAoaXNDb250cm9sUmVxdWlyZWQoY29udHJvbCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIDpcbiAgICAgICAgfVxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgQGlmIChcbiAgICAgICAgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmXG4gICAgICAgIGZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLCBjb250cm9sLm5hbWUpICYmICRpbmRleCA9PSAwICkgeyA8bWF0LWVycm9yXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLmljb24gJiYgIWRpc2FibGVkKSB7XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICBjbGFzcz1cImZsZXggaW5wdXQganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciB0ZXh0LWxnXCI+e3tjb250cm9sLmljb259fTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29udHJvbC5zcGFuKSB7XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIiFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycyB8fCAhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkID8gJ3RleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwJyA6ICchdGV4dC1yZWQtNTAwIGRhcms6IXRleHQtcmVkLTgwMCdcIlxuICAgICAgY2xhc3M9XCJoLTAgdGV4dC14c1wiPnt7IGNvbnRyb2wuc3BhblxuICAgICAgfX08L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
@@ -1,10 +1,10 @@
1
1
  import { Component, Input, EventEmitter, Output, } from "@angular/core";
2
- import { ChrPaginatorComponent } from "../chr-paginator/chr-paginator.component";
2
+ import { ChrPaginatorComponent } from '../chr-paginator/chr-paginator.component';
3
3
  import { ChrButtonComponent } from "../chr-button/chr-button.component";
4
4
  import { ChrTableHeaderCellComponent } from "../chr-table-header-cell/chr-table-header-cell.component";
5
- import { SortPipe } from "chrv-pipes";
6
5
  import { NgxPaginationModule } from "ngx-pagination";
7
6
  import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS, DatePipe, } from "@angular/common";
7
+ import { SortPipe } from "chrv-pipes";
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
10
  import * as i2 from "../services/data.service";
@@ -179,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
179
179
  }], textColor: [{
180
180
  type: Input
181
181
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NocnYtY29tcG9uZW50cy9zcmMvbGliL2Noci10YWJsZS9jaHItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXRhYmxlL2Noci10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFFTCxZQUFZLEVBQ1osTUFBTSxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUNOLFlBQVksRUFDWix5QkFBeUIsRUFDekIsUUFBUSxHQUNSLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBNER6QixNQUFNLE9BQU8saUJBQWlCO0lBeUM3QixZQUNTLEtBQWUsRUFDZixXQUF3QixFQUN4QixjQUFpQztRQUZqQyxVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBekNqQyxTQUFJLEdBQWlCLEVBQUUsQ0FBQztRQUd4QixVQUFLLEdBQVksSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEQsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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WTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUUsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUUsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUUsRUFBRTtzQkFBVixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdEFmdGVyVmlld0luaXQsXG5cdEV2ZW50RW1pdHRlcixcblx0T3V0cHV0LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0T25Jbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ2hyUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Noci1wYWdpbmF0b3IvY2hyLXBhZ2luYXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IENockJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItYnV0dG9uL2Noci1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDaHJUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLXRhYmxlLWhlYWRlci1jZWxsL2Noci10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNvcnRQaXBlIH0gZnJvbSBcImNocnYtcGlwZXNcIjtcbmltcG9ydCB7IE5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tIFwibmd4LXBhZ2luYXRpb25cIjtcbmltcG9ydCB7XG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcblx0RGF0ZVBpcGUsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IGNhbGxiYWNrIH0gZnJvbSBcImNoYXJ0LmpzL2Rpc3QvaGVscGVycy9oZWxwZXJzLmNvcmVcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW4ge1xuXHRkaXNwbGF5OiBzdHJpbmc7XG5cdGFsaWdubWVudD86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIjtcblx0Y2hpcHNUYXJnZXQ/OiBzdHJpbmdbXTtcblx0Y2hpcHNEaXNwbGF5Pzogc3RyaW5nW107XG5cdGNoaXBzQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0cHJvcGVydGllcz86IHN0cmluZ1tdO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRkYXRlPzogc3RyaW5nO1xuXHRpc0xpbms/OiBib29sZWFuO1xuXHRsaW5rU3RhdGljVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wdXRlZFJvdyB7XG5cdGNvbHVtbnM6IElDb21wdXRlZENvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wdXRlZENvbHVtbiB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2YWx1ZT86IGFueTtcblx0Y2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0YWxpZ25tZW50PzogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiO1xuXHRhZnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9uIHtcblx0ZGlzcGxheT86IHN0cmluZztcblx0aWNvbj86IHN0cmluZztcblx0Y2FsbGJhY2s6IEZ1bmN0aW9uO1xuXHRkaXNhYmxlZD86IGJvb2xlYW47XG5cdGRpc2FibGVkQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0Y29sb3I6IFwicHJpbWFyeVwiIHwgXCJhY2NlbnRcIiB8IFwid2FyblwiIHwgXCJhbGVydFwiIHwgXCJkYXJrZXJhY2NlbnRcIiB8IFwibm9uZVwiO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci10YWJsZSwgW2FwcC1jaHItdGFibGVdXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlVXJsczogW1wiLi9jaHItdGFibGUuY29tcG9uZW50LnNjc3NcIiwgXCIuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzc1wiXSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdENoclRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcblx0XHRDaHJCdXR0b25Db21wb25lbnQsXG5cdFx0Q2hyUGFnaW5hdG9yQ29tcG9uZW50LFxuXHRcdFNvcnRQaXBlLFxuXHRcdE5neFBhZ2luYXRpb25Nb2R1bGUsXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG59KVxuZXhwb3J0IGNsYXNzIENoclRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgY29tcHV0ZWRSb3dzPzogSUNvbXB1dGVkUm93W107XG5cdEBJbnB1dCgpIGNvbHVtbnM/OiBJQ29sdW1uW107XG5cdEBJbnB1dCgpIGRhdGE6IGFueVtdIHwgbnVsbCA9IFtdO1xuXHRASW5wdXQoKSBhY3Rpb25zPzogSUFjdGlvbltdO1xuXG5cdEBJbnB1dCgpIGlzQXNjOiBib29sZWFuID0gdHJ1ZTtcblx0QE91dHB1dCgpIGlzQXNjQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdEBJbnB1dCgpIHNvcnRCeT86IHN0cmluZztcblx0QE91dHB1dCgpIHNvcnRCeUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDUwO1xuXHRAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuXHRAT3V0cHV0KCkgY3VycmVudFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRASW5wdXQoKSBzZWxlY3Rpb246IGFueVtdID0gW107XG5cdEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgaWQ/OiBzdHJpbmcgPSBcImNocl9iYXNlLWRhdGEtdGFibGVcIjtcblxuXHRASW5wdXQoKSBjb2xvcjogXCJwcmltYXJ5XCIgfCBcImFjY2VudFwiIHwgXCJ3YXJuXCIgfCBcImFsZXJ0XCIgfCBcImRhcmtlcmFjY2VudFwiID1cblx0XHRcImFjY2VudFwiO1xuXG5cdEBJbnB1dCgpIHRleHRDb2xvcjpcblx0XHR8IFwicHJpbWFyeVwiXG5cdFx0fCBcImFjY2VudFwiXG5cdFx0fCBcIndhcm5cIlxuXHRcdHwgXCJhbGVydFwiXG5cdFx0fCBcImRhcmtlcmFjY2VudFwiXG5cdFx0fCBcIndoaXRlXCJcblx0XHR8IFwiYmxhY2tcIiA9IFwiYmxhY2tcIjtcblxuXHRwcml2YXRlIF9wYWdlOiBudW1iZXIgPSAxO1xuXG5cdGN1cnJlbnRQcm9wZXJ0eTogYW55IHwgbnVsbCA9IG51bGw7XG5cdGN1cnJlbnRUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIF9kYXRlOiBEYXRlUGlwZSxcblx0XHRwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuXHQpIHt9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5kYXRhU2VydmljZS5nZXQoYCR7dGhpcy5pZH1fc29ydEJ5YCkuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdGlmIChyZXMpIHRoaXMuc29ydEJ5ID0gcmVzO1xuXHRcdH0pO1xuXHRcdHRoaXMuZGF0YVNlcnZpY2UuZ2V0KGAke3RoaXMuaWR9X2lzQXNjYCkuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdGlmIChyZXMpIHRoaXMuaXNBc2MgPSByZXM7XG5cdFx0fSk7XG5cdH1cblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge31cblxuXHRwcm90ZWN0ZWQgZW1pdElzQXNjKGlzQXNjOiBhbnkpIHtcblx0XHR0aGlzLmRhdGFTZXJ2aWNlLnNldChgJHt0aGlzLmlkfV9pc0FzY2AsIGlzQXNjKTtcblx0XHR0aGlzLmlzQXNjQ2hhbmdlLmVtaXQoaXNBc2MpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGVtaXRTb3J0Qnkoc29ydEJ5OiBhbnkpIHtcblx0XHR0aGlzLmRhdGFTZXJ2aWNlLnNldChgJHt0aGlzLmlkfV9zb3J0QnlgLCBzb3J0QnkpO1xuXHRcdHRoaXMuc29ydEJ5Q2hhbmdlLmVtaXQoc29ydEJ5KTtcblx0fVxuXG5cdHByb3RlY3RlZCBlbWl0UGFnZVNpemUocGFnZVNpemU6IGFueSkge1xuXHRcdHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcblx0XHR0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQocGFnZVNpemUpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGVtaXRDdXJyZW50UGFnZShjdXJyZW50UGFnZTogYW55KSB7XG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlO1xuXHRcdHRoaXMuY3VycmVudFBhZ2VDaGFuZ2UuZW1pdChjdXJyZW50UGFnZSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0UHJvcGVydHkgPSAoZW50cnk6IGFueSwgcHJvcGVydGllcz86IGFueVtdKSA9PiB7XG5cdFx0dGhpcy5jdXJyZW50UHJvcGVydHkgPSBudWxsO1xuXHRcdHRoaXMuY3VycmVudFRleHQgPSBudWxsO1xuXG5cdFx0aWYgKCFwcm9wZXJ0aWVzKSB7XG5cdFx0XHR0aGlzLmN1cnJlbnRQcm9wZXJ0eSA9IGVudHJ5O1xuXHRcdFx0cmV0dXJuIGVudHJ5O1xuXHRcdH1cblx0XHRsZXQgdmFsdWUgPSBlbnRyeTtcblx0XHRmb3IgKGNvbnN0IGkgb2YgcHJvcGVydGllcykge1xuXHRcdFx0dmFsdWUgPSAodmFsdWUgYXMgYW55KT8uW2ldO1xuXHRcdH1cblx0XHR0aGlzLmN1cnJlbnRQcm9wZXJ0eSA9IHZhbHVlO1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fTtcblxuXHRwcm90ZWN0ZWQgZ2V0VGV4dCA9IChwcm9wZXJ0eTogYW55LCBjb2x1bW46IElDb2x1bW4pID0+IHtcblx0XHRsZXQgdGV4dCA9IG51bGw7XG5cblx0XHRpZiAoY29sdW1uLmNhbGxiYWNrKSB0ZXh0ID0gY29sdW1uLmNhbGxiYWNrKHByb3BlcnR5KTtcblxuXHRcdGlmICh0ZXh0ID09IG51bGwgJiYgY29sdW1uLmRhdGUpXG5cdFx0XHR0ZXh0ID0gdGhpcy5fZGF0ZS50cmFuc2Zvcm0ocHJvcGVydHksIGNvbHVtbi5kYXRlKTtcblxuXHRcdHRoaXMuY3VycmVudFRleHQgPSB0ZXh0IHx8IHByb3BlcnR5O1xuXG5cdFx0cmV0dXJuIHRleHQgfHwgcHJvcGVydHk7XG5cdFx0Ly8gY29sdW1uLmRhdGVcblx0XHQvLyAgID8gY29sdW1uLmNhbGxiYWNrXG5cdFx0Ly8gXHQ/IGNvbHVtbi5jYWxsYmFjayhwcm9wZXJ0eSlcblx0XHQvLyBcdDogKHByb3BlcnR5IHwgZGF0ZSA6IGNvbHVtbi5kYXRlKVxuXHRcdC8vICAgOiBjb2x1bW4uY2FsbGJhY2tcblx0XHQvLyBcdD8gY29sdW1uLmNhbGxiYWNrKHByb3BlcnR5KVxuXHRcdC8vIFx0OiBwcm9wZXJ0eVxuXHR9O1xuXG5cdHByb3RlY3RlZCBzZWxlY3QgPSAoZW50cnk6IGFueSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblx0XHRjb25zdCBwb2ludGVyID0gPFBvaW50ZXJFdmVudD5ldmVudDtcblx0XHRjb25zdCB0YXJnZXQgPSA8SFRNTElucHV0RWxlbWVudD5wb2ludGVyLnRhcmdldDtcblx0XHRpZiAodGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdHRoaXMuc2VsZWN0aW9uLnB1c2goZW50cnkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcigoeCkgPT4geCAhPT0gZW50cnkpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuXHR9O1xuXG5cdHB1YmxpYyBnZXRTZWxlY3Rpb24gPSAoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uO1xuXHR9O1xuXG5cdHB1YmxpYyBzZXRTZWxlY3Rpb24gPSAoZGF0YTogYW55W10pID0+IHtcblx0XHR0aGlzLnNlbGVjdGlvbiA9IGRhdGE7XG5cdFx0dGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG5cdH07XG5cblx0cHJvdGVjdGVkIGNvbnRhaW5zID0gKGVudHJ5OiBhbnkpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaW5jbHVkZXMoZW50cnkpO1xuXHR9O1xuXG5cdHByb3RlY3RlZCBnZXRJc0FzYyA9ICgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5pc0FzYztcblx0fTtcblxuXHRwcm90ZWN0ZWQgZ2V0U29ydEJ5ID0gKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLnNvcnRCeTtcblx0fTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgbm8tc2Nyb2xsYmFyXCI+XG4gIDxuZy1jb250ZW50IGNsYXNzPVwibXQtNVwiPjwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xIG92ZXJmbG93LWF1dG8gbm8tc2Nyb2xsYmFyXCI+XG4gICAgQGlmIChkYXRhKSB7XG4gICAgPHRhYmxlXG4gICAgICBjbGFzcz1cInRhYmxlLWF1dG8gYm9yZGVyIGRhcms6Ym9yZGVyLW5vbmUgcmVsYXRpdmUgZmxleCBmbGV4LXJvdyBmbGV4LW5vLXdyYXAgdy1mdWxsIHJvdW5kZWQtbGcgc206c2hhZG93LWxnIGJnLXRyYW5zcGFyZW50IG5vLXNjcm9sbGJhclwiPlxuICAgICAgPHRoZWFkIGNsYXNzPVwidGV4dC1ibGFja1wiPlxuICAgICAgICBAaWYgKGRhdGEubGVuZ3RoIDw9IDApIHsgPHRyIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LW5vIHdyYXAgc206dGFibGUtcm93IHJvdW5kZWQtbGcgbWItMiBzbTptYi0wXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JnLWNocmRibHVlJzogY29sb3IgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICdiZy1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdiZy1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdiZy1jaHJ3YXJuaW5nJzogY29sb3IgPT09ICd3YXJuJyxcbiAgICAgICAgICAgICd0ZXh0LWNocmxibHVlJzogdGV4dENvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICd0ZXh0LWNocmRibHVlJzogdGV4dENvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAndGV4dC1jaHJtYmx1ZSc6IHRleHRDb2xvciA9PT0gJ2RhcmtlcmFjY2VudCcsXG4gICAgICAgICAgICAndGV4dC1jaHJvcmFuZ2UnOiB0ZXh0Q29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAndGV4dC1jaHJ3YXJuaW5nJzogdGV4dENvbG9yID09PSAnd2FybidcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgPHRoIGFwcC1jaHItdGFibGUtaGVhZGVyLWNlbGwgY2xhc3M9XCJwLTMgaC0xNFwiIGRpc3BsYXk9XCJ7eyBjb2x1bW4uZGlzcGxheSB9fVwiIGNvbHVtbj1cInt7IGNvbHVtbi5wcm9wZXJ0aWVzIH19XCJcbiAgICAgICAgICAgIFsoaXNBc2MpXT1cImlzQXNjXCIgKGlzQXNjQ2hhbmdlKT1cImVtaXRJc0FzYygkZXZlbnQpXCIgWyhzb3J0QnkpXT1cInNvcnRCeVwiIChzb3J0QnlDaGFuZ2UpPVwiZW1pdFNvcnRCeSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICBjbGFzcz1cImgtMTQgcC0zIHRleHQtbGVmdCBzbTp0ZXh0LWNlbnRlciBwbGFjZS1jb250ZW50LWNlbnRlciBwbGFjZS1pdGVtcy1jZW50ZXIgaXRlbXMtY2VudGVyIGFsaWduLW1pZGRsZSBzbTp3LTBcIj5cbiAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChlbnRyeSBvZiBkYXRhIHxcbiAgICAgICAgICBzb3J0OmlzQXNjOnNvcnRCeSB8IHBhZ2luYXRlOiB7aXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLCBpZDogdGhpcy5pZH07IHRyYWNrIGVudHJ5KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8dHIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtbm8gd3JhcCBzbTp0YWJsZS1yb3cgcm91bmRlZC1sZyBtYi0yIHNtOm1iLTAgXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JnLWNocmRibHVlJzogY29sb3IgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICdiZy1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdiZy1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdiZy1jaHJ3YXJuaW5nJzogY29sb3IgPT09ICd3YXJuJyxcbiAgICAgICAgICAgICd0ZXh0LWNocmxibHVlJzogdGV4dENvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICd0ZXh0LWNocmRibHVlJzogdGV4dENvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAndGV4dC1jaHJtYmx1ZSc6IHRleHRDb2xvciA9PT0gJ2RhcmtlcmFjY2VudCcsXG4gICAgICAgICAgICAndGV4dC1jaHJvcmFuZ2UnOiB0ZXh0Q29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAndGV4dC1jaHJ3YXJuaW5nJzogdGV4dENvbG9yID09PSAnd2FybidcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cInAtMyBoLTE0XCI+PC90aD5cbiAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW4pIHtcbiAgICAgICAgICAgIDx0aCBhcHAtY2hyLXRhYmxlLWhlYWRlci1jZWxsIGNsYXNzPVwicC0zIGgtMTRcIiBkaXNwbGF5PVwie3sgY29sdW1uLmRpc3BsYXkgfX1cIlxuICAgICAgICAgICAgICBjb2x1bW49XCJ7eyBjb2x1bW4ucHJvcGVydGllcyB9fVwiIFsoaXNBc2MpXT1cImlzQXNjXCIgYWxpZ25tZW50PVwie3tjb2x1bW4uYWxpZ25tZW50fX1cIlxuICAgICAgICAgICAgICAoaXNBc2NDaGFuZ2UpPVwiZW1pdElzQXNjKCRldmVudClcIiBbKHNvcnRCeSldPVwic29ydEJ5XCIgKHNvcnRCeUNoYW5nZSk9XCJlbWl0U29ydEJ5KCRldmVudClcIj48L3RoPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTE0IHAtMyB0ZXh0LWxlZnQgc206dGV4dC1jZW50ZXIgcGxhY2UtY29udGVudC1jZW50ZXIgcGxhY2UtaXRlbXMtY2VudGVyIGl0ZW1zLWNlbnRlciBhbGlnbi1taWRkbGUgc2VsZi1jZW50ZXIgc206dy0wXCI+XG4gICAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgIEBpZiAoZGF0YS5sZW5ndGggPD0gMCkgeyA8dHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1uby13cmFwIHNtOnRhYmxlLXJvdyByb3VuZGVkLWxnIG1iLTAgc206bWItMiBkYXJrOmJnLXNsYXRlLTYwMFwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0XCI+UGFzIGRlIGRvbm7DqWUocyk8L3RkPlxuICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zIHwgc2xpY2U6IDE7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0XCI+PC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgPHRkIGNsYXNzPVwicC0zIGgtMTQgZ3JpZCBnYXAtMyBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbnMubGVuZ3RoID4gMSA/ICdncmlkLWNvbHMtMicgOiAnZ3JpZC1jb2xzLTEnXCI+PC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoZW50cnkgb2YgZGF0YSB8XG4gICAgICAgICAgc29ydDppc0FzYzpzb3J0QnkgfCBwYWdpbmF0ZToge2l0ZW1zUGVyUGFnZTogcGFnZVNpemUsIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSwgaWQ6IHRoaXMuaWR9OyB0cmFja1xuICAgICAgICAgIGVudHJ5OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDx0ciBbYXR0ci5kYXRhLWluZGV4XT1cImlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtbm8td3JhcCBzbTp0YWJsZS1yb3cgbWItMiBzbTptYi0wIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmJnLXNsYXRlLTYwMCBzbTpvZGQ6YmctZ3JheS0yMDAgc206ZGFyazpvZGQ6Ymctc2xhdGUtNzAwIHNtOmJvcmRlci10LTIgc206Zmlyc3Q6Ym9yZGVyLTBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JvcmRlci1jaHJsYmx1ZSc6IGNvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyZGJsdWUnOiBjb2xvciA9PT0gJ3ByaW1hcnknLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyb3JhbmdlJzogY29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAnYm9yZGVyLWNocndhcm5pbmcnOiBjb2xvciA9PT0gJ3dhcm4nLFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicC0zIGgtMTQgdGV4dC1lbGxpcHNpcyBib3JkZXItdC0yIGZpcnN0OmJvcmRlci0wIHNtOmZpcnN0OmJvcmRlci10LTJcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYm9yZGVyLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJkYmx1ZSc6IGNvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAnYm9yZGVyLWNocm1ibHVlJzogY29sb3IgPT09ICdkYXJrZXJhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyd2FybmluZyc6IGNvbG9yID09PSAnd2FybicsXG4gICAgICAgICAgICB9XCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJzZWxlY3QoZW50cnksICRldmVudClcIiBbY2hlY2tlZF09XCJjb250YWlucyhlbnRyeSlcIiAvPjwvdGQ+XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uOykge1xuICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgIGNvbHVtbi5jaGlwc1RhcmdldCB8fCBjb2x1bW4uY2hpcHNEaXNwbGF5XG4gICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgIFwiIGNsYXNzPVwicC0zIGgtMTQgdGV4dC1lbGxpcHNpcyBib3JkZXItdC0yIGZpcnN0OmJvcmRlci0wIHNtOmZpcnN0OmJvcmRlci10LTJcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYm9yZGVyLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJkYmx1ZSc6IGNvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAnYm9yZGVyLWNocm1ibHVlJzogY29sb3IgPT09ICdkYXJrZXJhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyd2FybmluZyc6IGNvbG9yID09PSAnd2FybicsXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntwcm9wOiBnZXRQcm9wZXJ0eShlbnRyeSwgY29sdW1uLnByb3BlcnRpZXMpLCBjb2x1bW46IGNvbHVtbn1cIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQgbGV0LWNvbHVtbj0nY29sdW1uJyBsZXQtcHJvcGVydHk9XCJwcm9wXCI+XG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzTGluaykge1xuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInRleHQte3tjb2x1bW4uYWxpZ25tZW50fX1cIiBocmVmPVwie3tjb2x1bW4ubGlua1N0YXRpY1VybH19e3tcbiAgICAgICAgICAgICAgZ2V0VGV4dChwcm9wZXJ0eSwgY29sdW1uKVxuICAgICAgICAgICAgICB9fVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgY3VycmVudFRleHRcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmICghY29sdW1uLmlzTGluaykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnanVzdGlmeS1zdGFydCc6IGNvbHVtbi5hbGlnbm1lbnQgPT0gJ2xlZnQnLFxuICAgICAgICAgICAgICAgICdqdXN0aWZ5LWNlbnRlcic6IGNvbHVtbi5hbGlnbm1lbnQgPT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgJ2p1c3RpZnktZW5kJzogY29sdW1uLmFsaWdubWVudCA9PSAncmlnaHQnLFxuICAgICAgICAgICAgICAgICdnYXAtMic6IGNvbHVtbi5jaGlwc0Rpc3BsYXkgJiYgZ2V0VGV4dChwcm9wZXJ0eSwgY29sdW1uKVxuICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uY2hpcHNUYXJnZXQgfHwgY29sdW1uLmNoaXBzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jaGlwc0NhbGxiYWNrID8gKGNvbHVtbi5jaGlwc0NhbGxiYWNrKGVudHJ5KSA/IE9LIDogTk9LKSA6IChnZXRQcm9wZXJ0eShlbnRyeSwgY29sdW1uLmNoaXBzVGFyZ2V0KSA/IE9LIDogTk9LKVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI09LPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0yNCBmbGV4IHRleHQtY2VudGVyIGNvbnRlbnQtY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIHRleHQteHMgZm9udC1tZWRpdW0gcHktMC41IHJvdW5kZWQtZnVsbCBkYXJrOmJnLWdyZWVuLTkwMCBkYXJrOnRleHQtZ3JlZW4tMzAwXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2hpcHNEaXNwbGF5ICYmIGNvbHVtbi5jaGlwc0Rpc3BsYXlbMF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNOT0s+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTI0IGZsZXggdGV4dC1jZW50ZXIgY29udGVudC1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1yZWQtMTAwIHRleHQtcmVkLTgwMCB0ZXh0LXhzIGZvbnQtbWVkaXVtIHB5LTAuNSByb3VuZGVkLWZ1bGwgZGFyazpiZy1yZWQtOTAwIGRhcms6dGV4dC1yZWQtMzAwXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2hpcHNEaXNwbGF5ICYmIGNvbHVtbi5jaGlwc0Rpc3BsYXlbMV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJpbmxpbmUtYmxvY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbm93cmFwIHRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGV4dCB8fCBnZXRUZXh0KHByb3BlcnR5LCBjb2x1bW4pXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICBAaWYgKGFjdGlvbnMpIHtcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0IGZsZXggZ2FwLTIgdy1mdWxsIHNtOnctbWluIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgPGFwcC1jaHItYnV0dG9uIGNsYXNzPVwidy1mdWxsXCIgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgYWN0aW9uLmRpc2FibGVkQ2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgPyBhY3Rpb24uZGlzYWJsZWRDYWxsYmFjayhlbnRyeSlcbiAgICAgICAgICAgICAgICAgICAgOiBhY3Rpb24uZGlzYWJsZWQgfHwgZmFsc2VcbiAgICAgICAgICAgICAgICBcIiBbZGlzcGxheV09XCJhY3Rpb24uZGlzcGxheVwiIFtpY29uXT1cImFjdGlvbi5pY29uXCIgW2NsaWNrXT1cImFjdGlvbi5jYWxsYmFjay5iaW5kKG51bGwsIGVudHJ5LCBpKVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiIHR5cGU9XCJyZXNwb25zaXZlXCI+XG4gICAgICAgICAgICAgIDwvYXBwLWNoci1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAociBvZiBjb21wdXRlZFJvd3M7IHRyYWNrIHIpIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LW5vLXdyYXAgc206dGFibGUtcm93IG1iLTIgc206bWItMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpiZy1zbGF0ZS02MDAgc206b2RkOmJnLWdyYXktMjAwIHNtOmRhcms6b2RkOmJnLXNsYXRlLTcwMFwiPlxuICAgICAgICAgICAgQGZvciAoYyBvZiByLmNvbHVtbnM7IHRyYWNrIGMpIHtcbiAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJjLmFsaWdubWVudCAmJiAndGV4dC0nKyhjLmFsaWdubWVudHx8J2xlZnQnKVwiIGNsYXNzPVwicC0zIGgtMTRcIj5cbiAgICAgICAgICAgICAge3tjLmxhYmVsICYmIGMubGFiZWwgKyAnOid9fSB7e2MudmFsdWUgfHwgKGMuY2FsbGJhY2sgJiYgYy5jYWxsYmFjayhkYXRhKSl9fSB7e2MuYWZ0ZXJ9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgICA8YXBwLWNoci1wYWdpbmF0b3IgW2lkXT1cInRoaXMuaWRcIiBbKHBhZ2VTaXplKV09XCJwYWdlU2l6ZVwiIFsocGFnZSldPVwiY3VycmVudFBhZ2VcIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cImVtaXRQYWdlU2l6ZSgkZXZlbnQpXCIgKHBhZ2VDaGFuZ2UpPVwiZW1pdEN1cnJlbnRQYWdlKCRldmVudClcIj48L2FwcC1jaHItcGFnaW5hdG9yPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NocnYtY29tcG9uZW50cy9zcmMvbGliL2Noci10YWJsZS9jaHItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXRhYmxlL2Noci10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFFTCxZQUFZLEVBQ1osTUFBTSxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFDTixZQUFZLEVBQ1oseUJBQXlCLEVBQ3pCLFFBQVEsR0FDUixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7O0FBMER0QyxNQUFNLE9BQU8saUJBQWlCO0lBeUM3QixZQUNTLEtBQWUsRUFDZixXQUF3QixFQUN4QixjQUFpQztRQUZqQyxVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBekNqQyxTQUFJLEdBQWlCLEVBQUUsQ0FBQztRQUd4QixVQUFLLEdBQVksSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEQsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV6RCxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0QsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLG9CQUFlLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0QsT0FBRSxHQUFZLHFCQUFxQixDQUFDO1FBRXBDLFVBQUssR0FDYixRQUFRLENBQUM7UUFFRCxjQUFTLEdBT0wsT0FBTyxDQUFDO1FBRWIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUUxQixvQkFBZSxHQUFlLElBQUksQ0FBQztRQUNuQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFzQ3hCLGdCQUFXLEdBQUcsQ0FBQyxLQUFVLEVBQUUsVUFBa0IsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRXhCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUNELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixLQUFLLEdBQUksS0FBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRVEsWUFBTyxHQUFHLENBQUMsUUFBYSxFQUFFLE1BQWUsRUFBRSxFQUFFO1lBQ3RELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztZQUVoQixJQUFJLE1BQU0sQ0FBQyxRQUFRO2dCQUFFLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRELElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtnQkFDOUIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksUUFBUSxDQUFDO1lBRXBDLE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQztZQUN4QixjQUFjO1lBQ2Qsc0JBQXNCO1lBQ3RCLCtCQUErQjtZQUMvQixxQ0FBcUM7WUFDckMsc0JBQXNCO1lBQ3RCLCtCQUErQjtZQUMvQixjQUFjO1FBQ2YsQ0FBQyxDQUFDO1FBRVEsV0FBTSxHQUFHLENBQUMsS0FBVSxFQUFFLEtBQWlCLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBaUIsS0FBSyxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFxQixPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRUssaUJBQVksR0FBRyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVLLGlCQUFZLEdBQUcsQ0FBQyxJQUFXLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRVEsYUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7UUFFUSxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQixDQUFDLENBQUM7UUFFUSxjQUFTLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQixDQUFDLENBQUM7SUFuR0MsQ0FBQztJQUVKLFFBQVE7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNELElBQUksR0FBRztnQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxHQUFHO2dCQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELGVBQWUsS0FBVSxDQUFDO0lBRWhCLFNBQVMsQ0FBQyxLQUFVO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxVQUFVLENBQUMsTUFBVztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsWUFBWSxDQUFDLFFBQWE7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLGVBQWUsQ0FBQyxXQUFnQjtRQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBM0VXLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBoQkFSbEI7WUFDVixRQUFRO1lBQ1I7Z0JBQ0MsT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTthQUNyQztTQUNELDBCQzNFRixtelNBNExNLHM2L0dEL0hKLDJCQUEyQiw0TUFDM0Isa0JBQWtCLHdNQUNsQixxQkFBcUIsMkpBQ3JCLFFBQVEsNENBQ1IsbUJBQW1CLHlGQUNuQixZQUFZOzsyRkFXRCxpQkFBaUI7a0JBdEI3QixTQUFTOytCQUNDLGdDQUFnQyxjQUc5QixJQUFJLFdBQ1A7d0JBQ1IsMkJBQTJCO3dCQUMzQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osUUFBUTtxQkFDUixhQUNVO3dCQUNWLFFBQVE7d0JBQ1I7NEJBQ0MsT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTt5QkFDckM7cUJBQ0Q7dUlBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUUsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUUsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUUsRUFBRTtzQkFBVixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0QWZ0ZXJWaWV3SW5pdCxcblx0RXZlbnRFbWl0dGVyLFxuXHRPdXRwdXQsXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRPbkluaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDaHJQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENockJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItYnV0dG9uL2Noci1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDaHJUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLXRhYmxlLWhlYWRlci1jZWxsL2Noci10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tIFwibmd4LXBhZ2luYXRpb25cIjtcbmltcG9ydCB7XG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcblx0RGF0ZVBpcGUsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xuaW1wb3J0IHsgU29ydFBpcGUgfSBmcm9tIFwiY2hydi1waXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW4ge1xuXHRkaXNwbGF5OiBzdHJpbmc7XG5cdGFsaWdubWVudD86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIjtcblx0Y2hpcHNUYXJnZXQ/OiBzdHJpbmdbXTtcblx0Y2hpcHNEaXNwbGF5Pzogc3RyaW5nW107XG5cdGNoaXBzQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0cHJvcGVydGllcz86IHN0cmluZ1tdO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRkYXRlPzogc3RyaW5nO1xuXHRpc0xpbms/OiBib29sZWFuO1xuXHRsaW5rU3RhdGljVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wdXRlZFJvdyB7XG5cdGNvbHVtbnM6IElDb21wdXRlZENvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wdXRlZENvbHVtbiB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2YWx1ZT86IGFueTtcblx0Y2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0YWxpZ25tZW50PzogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiO1xuXHRhZnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9uIHtcblx0ZGlzcGxheT86IHN0cmluZztcblx0aWNvbj86IHN0cmluZztcblx0Y2FsbGJhY2s6IEZ1bmN0aW9uO1xuXHRkaXNhYmxlZD86IGJvb2xlYW47XG5cdGRpc2FibGVkQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0Y29sb3I6IFwicHJpbWFyeVwiIHwgXCJhY2NlbnRcIiB8IFwid2FyblwiIHwgXCJhbGVydFwiIHwgXCJkYXJrZXJhY2NlbnRcIiB8IFwibm9uZVwiO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci10YWJsZSwgW2FwcC1jaHItdGFibGVdXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlVXJsczogW1wiLi9jaHItdGFibGUuY29tcG9uZW50LnNjc3NcIiwgXCIuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzc1wiXSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdENoclRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcblx0XHRDaHJCdXR0b25Db21wb25lbnQsXG5cdFx0Q2hyUGFnaW5hdG9yQ29tcG9uZW50LFxuXHRcdFNvcnRQaXBlLFxuXHRcdE5neFBhZ2luYXRpb25Nb2R1bGUsXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG59KVxuZXhwb3J0IGNsYXNzIENoclRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgY29tcHV0ZWRSb3dzPzogSUNvbXB1dGVkUm93W107XG5cdEBJbnB1dCgpIGNvbHVtbnM/OiBJQ29sdW1uW107XG5cdEBJbnB1dCgpIGRhdGE6IGFueVtdIHwgbnVsbCA9IFtdO1xuXHRASW5wdXQoKSBhY3Rpb25zPzogSUFjdGlvbltdO1xuXG5cdEBJbnB1dCgpIGlzQXNjOiBib29sZWFuID0gdHJ1ZTtcblx0QE91dHB1dCgpIGlzQXNjQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdEBJbnB1dCgpIHNvcnRCeT86IHN0cmluZztcblx0QE91dHB1dCgpIHNvcnRCeUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDUwO1xuXHRAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuXHRAT3V0cHV0KCkgY3VycmVudFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRASW5wdXQoKSBzZWxlY3Rpb246IGFueVtdID0gW107XG5cdEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KCkgaWQ/OiBzdHJpbmcgPSBcImNocl9iYXNlLWRhdGEtdGFibGVcIjtcblxuXHRASW5wdXQoKSBjb2xvcjogXCJwcmltYXJ5XCIgfCBcImFjY2VudFwiIHwgXCJ3YXJuXCIgfCBcImFsZXJ0XCIgfCBcImRhcmtlcmFjY2VudFwiID1cblx0XHRcImFjY2VudFwiO1xuXG5cdEBJbnB1dCgpIHRleHRDb2xvcjpcblx0XHR8IFwicHJpbWFyeVwiXG5cdFx0fCBcImFjY2VudFwiXG5cdFx0fCBcIndhcm5cIlxuXHRcdHwgXCJhbGVydFwiXG5cdFx0fCBcImRhcmtlcmFjY2VudFwiXG5cdFx0fCBcIndoaXRlXCJcblx0XHR8IFwiYmxhY2tcIiA9IFwiYmxhY2tcIjtcblxuXHRwcml2YXRlIF9wYWdlOiBudW1iZXIgPSAxO1xuXG5cdGN1cnJlbnRQcm9wZXJ0eTogYW55IHwgbnVsbCA9IG51bGw7XG5cdGN1cnJlbnRUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIF9kYXRlOiBEYXRlUGlwZSxcblx0XHRwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuXHQpIHt9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5kYXRhU2VydmljZS5nZXQoYCR7dGhpcy5pZH1fc29ydEJ5YCkuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdGlmIChyZXMpIHRoaXMuc29ydEJ5ID0gcmVzO1xuXHRcdH0pO1xuXHRcdHRoaXMuZGF0YVNlcnZpY2UuZ2V0KGAke3RoaXMuaWR9X2lzQXNjYCkuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdGlmIChyZXMpIHRoaXMuaXNBc2MgPSByZXM7XG5cdFx0fSk7XG5cdH1cblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge31cblxuXHRwcm90ZWN0ZWQgZW1pdElzQXNjKGlzQXNjOiBhbnkpIHtcblx0XHR0aGlzLmRhdGFTZXJ2aWNlLnNldChgJHt0aGlzLmlkfV9pc0FzY2AsIGlzQXNjKTtcblx0XHR0aGlzLmlzQXNjQ2hhbmdlLmVtaXQoaXNBc2MpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGVtaXRTb3J0Qnkoc29ydEJ5OiBhbnkpIHtcblx0XHR0aGlzLmRhdGFTZXJ2aWNlLnNldChgJHt0aGlzLmlkfV9zb3J0QnlgLCBzb3J0QnkpO1xuXHRcdHRoaXMuc29ydEJ5Q2hhbmdlLmVtaXQoc29ydEJ5KTtcblx0fVxuXG5cdHByb3RlY3RlZCBlbWl0UGFnZVNpemUocGFnZVNpemU6IGFueSkge1xuXHRcdHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcblx0XHR0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQocGFnZVNpemUpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGVtaXRDdXJyZW50UGFnZShjdXJyZW50UGFnZTogYW55KSB7XG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlO1xuXHRcdHRoaXMuY3VycmVudFBhZ2VDaGFuZ2UuZW1pdChjdXJyZW50UGFnZSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0UHJvcGVydHkgPSAoZW50cnk6IGFueSwgcHJvcGVydGllcz86IGFueVtdKSA9PiB7XG5cdFx0dGhpcy5jdXJyZW50UHJvcGVydHkgPSBudWxsO1xuXHRcdHRoaXMuY3VycmVudFRleHQgPSBudWxsO1xuXG5cdFx0aWYgKCFwcm9wZXJ0aWVzKSB7XG5cdFx0XHR0aGlzLmN1cnJlbnRQcm9wZXJ0eSA9IGVudHJ5O1xuXHRcdFx0cmV0dXJuIGVudHJ5O1xuXHRcdH1cblx0XHRsZXQgdmFsdWUgPSBlbnRyeTtcblx0XHRmb3IgKGNvbnN0IGkgb2YgcHJvcGVydGllcykge1xuXHRcdFx0dmFsdWUgPSAodmFsdWUgYXMgYW55KT8uW2ldO1xuXHRcdH1cblx0XHR0aGlzLmN1cnJlbnRQcm9wZXJ0eSA9IHZhbHVlO1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fTtcblxuXHRwcm90ZWN0ZWQgZ2V0VGV4dCA9IChwcm9wZXJ0eTogYW55LCBjb2x1bW46IElDb2x1bW4pID0+IHtcblx0XHRsZXQgdGV4dCA9IG51bGw7XG5cblx0XHRpZiAoY29sdW1uLmNhbGxiYWNrKSB0ZXh0ID0gY29sdW1uLmNhbGxiYWNrKHByb3BlcnR5KTtcblxuXHRcdGlmICh0ZXh0ID09IG51bGwgJiYgY29sdW1uLmRhdGUpXG5cdFx0XHR0ZXh0ID0gdGhpcy5fZGF0ZS50cmFuc2Zvcm0ocHJvcGVydHksIGNvbHVtbi5kYXRlKTtcblxuXHRcdHRoaXMuY3VycmVudFRleHQgPSB0ZXh0IHx8IHByb3BlcnR5O1xuXG5cdFx0cmV0dXJuIHRleHQgfHwgcHJvcGVydHk7XG5cdFx0Ly8gY29sdW1uLmRhdGVcblx0XHQvLyAgID8gY29sdW1uLmNhbGxiYWNrXG5cdFx0Ly8gXHQ/IGNvbHVtbi5jYWxsYmFjayhwcm9wZXJ0eSlcblx0XHQvLyBcdDogKHByb3BlcnR5IHwgZGF0ZSA6IGNvbHVtbi5kYXRlKVxuXHRcdC8vICAgOiBjb2x1bW4uY2FsbGJhY2tcblx0XHQvLyBcdD8gY29sdW1uLmNhbGxiYWNrKHByb3BlcnR5KVxuXHRcdC8vIFx0OiBwcm9wZXJ0eVxuXHR9O1xuXG5cdHByb3RlY3RlZCBzZWxlY3QgPSAoZW50cnk6IGFueSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblx0XHRjb25zdCBwb2ludGVyID0gPFBvaW50ZXJFdmVudD5ldmVudDtcblx0XHRjb25zdCB0YXJnZXQgPSA8SFRNTElucHV0RWxlbWVudD5wb2ludGVyLnRhcmdldDtcblx0XHRpZiAodGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdHRoaXMuc2VsZWN0aW9uLnB1c2goZW50cnkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcigoeCkgPT4geCAhPT0gZW50cnkpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuXHR9O1xuXG5cdHB1YmxpYyBnZXRTZWxlY3Rpb24gPSAoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uO1xuXHR9O1xuXG5cdHB1YmxpYyBzZXRTZWxlY3Rpb24gPSAoZGF0YTogYW55W10pID0+IHtcblx0XHR0aGlzLnNlbGVjdGlvbiA9IGRhdGE7XG5cdFx0dGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG5cdH07XG5cblx0cHJvdGVjdGVkIGNvbnRhaW5zID0gKGVudHJ5OiBhbnkpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaW5jbHVkZXMoZW50cnkpO1xuXHR9O1xuXG5cdHByb3RlY3RlZCBnZXRJc0FzYyA9ICgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5pc0FzYztcblx0fTtcblxuXHRwcm90ZWN0ZWQgZ2V0U29ydEJ5ID0gKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLnNvcnRCeTtcblx0fTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgbm8tc2Nyb2xsYmFyXCI+XG4gIDxuZy1jb250ZW50IGNsYXNzPVwibXQtNVwiPjwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xIG92ZXJmbG93LWF1dG8gbm8tc2Nyb2xsYmFyXCI+XG4gICAgQGlmIChkYXRhKSB7XG4gICAgPHRhYmxlXG4gICAgICBjbGFzcz1cInRhYmxlLWF1dG8gYm9yZGVyIGRhcms6Ym9yZGVyLW5vbmUgcmVsYXRpdmUgZmxleCBmbGV4LXJvdyBmbGV4LW5vLXdyYXAgdy1mdWxsIHJvdW5kZWQtbGcgc206c2hhZG93LWxnIGJnLXRyYW5zcGFyZW50IG5vLXNjcm9sbGJhclwiPlxuICAgICAgPHRoZWFkIGNsYXNzPVwidGV4dC1ibGFja1wiPlxuICAgICAgICBAaWYgKGRhdGEubGVuZ3RoIDw9IDApIHsgPHRyIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LW5vIHdyYXAgc206dGFibGUtcm93IHJvdW5kZWQtbGcgbWItMiBzbTptYi0wXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JnLWNocmRibHVlJzogY29sb3IgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICdiZy1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdiZy1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdiZy1jaHJ3YXJuaW5nJzogY29sb3IgPT09ICd3YXJuJyxcbiAgICAgICAgICAgICd0ZXh0LWNocmxibHVlJzogdGV4dENvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICd0ZXh0LWNocmRibHVlJzogdGV4dENvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAndGV4dC1jaHJtYmx1ZSc6IHRleHRDb2xvciA9PT0gJ2RhcmtlcmFjY2VudCcsXG4gICAgICAgICAgICAndGV4dC1jaHJvcmFuZ2UnOiB0ZXh0Q29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAndGV4dC1jaHJ3YXJuaW5nJzogdGV4dENvbG9yID09PSAnd2FybidcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgPHRoIGFwcC1jaHItdGFibGUtaGVhZGVyLWNlbGwgY2xhc3M9XCJwLTMgaC0xNFwiIGRpc3BsYXk9XCJ7eyBjb2x1bW4uZGlzcGxheSB9fVwiIGNvbHVtbj1cInt7IGNvbHVtbi5wcm9wZXJ0aWVzIH19XCJcbiAgICAgICAgICAgIFsoaXNBc2MpXT1cImlzQXNjXCIgKGlzQXNjQ2hhbmdlKT1cImVtaXRJc0FzYygkZXZlbnQpXCIgWyhzb3J0QnkpXT1cInNvcnRCeVwiIChzb3J0QnlDaGFuZ2UpPVwiZW1pdFNvcnRCeSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICBjbGFzcz1cImgtMTQgcC0zIHRleHQtbGVmdCBzbTp0ZXh0LWNlbnRlciBwbGFjZS1jb250ZW50LWNlbnRlciBwbGFjZS1pdGVtcy1jZW50ZXIgaXRlbXMtY2VudGVyIGFsaWduLW1pZGRsZSBzbTp3LTBcIj5cbiAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChlbnRyeSBvZiBkYXRhIHxcbiAgICAgICAgICBzb3J0OmlzQXNjOnNvcnRCeSB8IHBhZ2luYXRlOiB7aXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLCBpZDogdGhpcy5pZH07IHRyYWNrIGVudHJ5KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8dHIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtbm8gd3JhcCBzbTp0YWJsZS1yb3cgcm91bmRlZC1sZyBtYi0yIHNtOm1iLTAgXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JnLWNocmRibHVlJzogY29sb3IgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICdiZy1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdiZy1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdiZy1jaHJ3YXJuaW5nJzogY29sb3IgPT09ICd3YXJuJyxcbiAgICAgICAgICAgICd0ZXh0LWNocmxibHVlJzogdGV4dENvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICd0ZXh0LWNocmRibHVlJzogdGV4dENvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAndGV4dC1jaHJtYmx1ZSc6IHRleHRDb2xvciA9PT0gJ2RhcmtlcmFjY2VudCcsXG4gICAgICAgICAgICAndGV4dC1jaHJvcmFuZ2UnOiB0ZXh0Q29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAndGV4dC1jaHJ3YXJuaW5nJzogdGV4dENvbG9yID09PSAnd2FybidcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cInAtMyBoLTE0XCI+PC90aD5cbiAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW4pIHtcbiAgICAgICAgICAgIDx0aCBhcHAtY2hyLXRhYmxlLWhlYWRlci1jZWxsIGNsYXNzPVwicC0zIGgtMTRcIiBkaXNwbGF5PVwie3sgY29sdW1uLmRpc3BsYXkgfX1cIlxuICAgICAgICAgICAgICBjb2x1bW49XCJ7eyBjb2x1bW4ucHJvcGVydGllcyB9fVwiIFsoaXNBc2MpXT1cImlzQXNjXCIgYWxpZ25tZW50PVwie3tjb2x1bW4uYWxpZ25tZW50fX1cIlxuICAgICAgICAgICAgICAoaXNBc2NDaGFuZ2UpPVwiZW1pdElzQXNjKCRldmVudClcIiBbKHNvcnRCeSldPVwic29ydEJ5XCIgKHNvcnRCeUNoYW5nZSk9XCJlbWl0U29ydEJ5KCRldmVudClcIj48L3RoPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTE0IHAtMyB0ZXh0LWxlZnQgc206dGV4dC1jZW50ZXIgcGxhY2UtY29udGVudC1jZW50ZXIgcGxhY2UtaXRlbXMtY2VudGVyIGl0ZW1zLWNlbnRlciBhbGlnbi1taWRkbGUgc2VsZi1jZW50ZXIgc206dy0wXCI+XG4gICAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgIEBpZiAoZGF0YS5sZW5ndGggPD0gMCkgeyA8dHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1uby13cmFwIHNtOnRhYmxlLXJvdyByb3VuZGVkLWxnIG1iLTAgc206bWItMiBkYXJrOmJnLXNsYXRlLTYwMFwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0XCI+UGFzIGRlIGRvbm7DqWUocyk8L3RkPlxuICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zIHwgc2xpY2U6IDE7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0XCI+PC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgPHRkIGNsYXNzPVwicC0zIGgtMTQgZ3JpZCBnYXAtMyBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbnMubGVuZ3RoID4gMSA/ICdncmlkLWNvbHMtMicgOiAnZ3JpZC1jb2xzLTEnXCI+PC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoZW50cnkgb2YgZGF0YSB8XG4gICAgICAgICAgc29ydDppc0FzYzpzb3J0QnkgfCBwYWdpbmF0ZToge2l0ZW1zUGVyUGFnZTogcGFnZVNpemUsIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSwgaWQ6IHRoaXMuaWR9OyB0cmFja1xuICAgICAgICAgIGVudHJ5OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDx0ciBbYXR0ci5kYXRhLWluZGV4XT1cImlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtbm8td3JhcCBzbTp0YWJsZS1yb3cgbWItMiBzbTptYi0wIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmJnLXNsYXRlLTYwMCBzbTpvZGQ6YmctZ3JheS0yMDAgc206ZGFyazpvZGQ6Ymctc2xhdGUtNzAwIHNtOmJvcmRlci10LTIgc206Zmlyc3Q6Ym9yZGVyLTBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JvcmRlci1jaHJsYmx1ZSc6IGNvbG9yID09PSAnYWNjZW50JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyZGJsdWUnOiBjb2xvciA9PT0gJ3ByaW1hcnknLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJtYmx1ZSc6IGNvbG9yID09PSAnZGFya2VyYWNjZW50JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyb3JhbmdlJzogY29sb3IgPT09ICdhbGVydCcsXG4gICAgICAgICAgICAnYm9yZGVyLWNocndhcm5pbmcnOiBjb2xvciA9PT0gJ3dhcm4nLFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicC0zIGgtMTQgdGV4dC1lbGxpcHNpcyBib3JkZXItdC0yIGZpcnN0OmJvcmRlci0wIHNtOmZpcnN0OmJvcmRlci10LTJcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYm9yZGVyLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJkYmx1ZSc6IGNvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAnYm9yZGVyLWNocm1ibHVlJzogY29sb3IgPT09ICdkYXJrZXJhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyd2FybmluZyc6IGNvbG9yID09PSAnd2FybicsXG4gICAgICAgICAgICB9XCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJzZWxlY3QoZW50cnksICRldmVudClcIiBbY2hlY2tlZF09XCJjb250YWlucyhlbnRyeSlcIiAvPjwvdGQ+XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uOykge1xuICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgIGNvbHVtbi5jaGlwc1RhcmdldCB8fCBjb2x1bW4uY2hpcHNEaXNwbGF5XG4gICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgIFwiIGNsYXNzPVwicC0zIGgtMTQgdGV4dC1lbGxpcHNpcyBib3JkZXItdC0yIGZpcnN0OmJvcmRlci0wIHNtOmZpcnN0OmJvcmRlci10LTJcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYm9yZGVyLWNocmxibHVlJzogY29sb3IgPT09ICdhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJkYmx1ZSc6IGNvbG9yID09PSAncHJpbWFyeScsXG4gICAgICAgICAgICAnYm9yZGVyLWNocm1ibHVlJzogY29sb3IgPT09ICdkYXJrZXJhY2NlbnQnLFxuICAgICAgICAgICAgJ2JvcmRlci1jaHJvcmFuZ2UnOiBjb2xvciA9PT0gJ2FsZXJ0JyxcbiAgICAgICAgICAgICdib3JkZXItY2hyd2FybmluZyc6IGNvbG9yID09PSAnd2FybicsXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntwcm9wOiBnZXRQcm9wZXJ0eShlbnRyeSwgY29sdW1uLnByb3BlcnRpZXMpLCBjb2x1bW46IGNvbHVtbn1cIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQgbGV0LWNvbHVtbj0nY29sdW1uJyBsZXQtcHJvcGVydHk9XCJwcm9wXCI+XG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzTGluaykge1xuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInRleHQte3tjb2x1bW4uYWxpZ25tZW50fX1cIiBocmVmPVwie3tjb2x1bW4ubGlua1N0YXRpY1VybH19e3tcbiAgICAgICAgICAgICAgZ2V0VGV4dChwcm9wZXJ0eSwgY29sdW1uKVxuICAgICAgICAgICAgICB9fVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgY3VycmVudFRleHRcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmICghY29sdW1uLmlzTGluaykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnanVzdGlmeS1zdGFydCc6IGNvbHVtbi5hbGlnbm1lbnQgPT0gJ2xlZnQnLFxuICAgICAgICAgICAgICAgICdqdXN0aWZ5LWNlbnRlcic6IGNvbHVtbi5hbGlnbm1lbnQgPT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgJ2p1c3RpZnktZW5kJzogY29sdW1uLmFsaWdubWVudCA9PSAncmlnaHQnLFxuICAgICAgICAgICAgICAgICdnYXAtMic6IGNvbHVtbi5jaGlwc0Rpc3BsYXkgJiYgZ2V0VGV4dChwcm9wZXJ0eSwgY29sdW1uKVxuICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uY2hpcHNUYXJnZXQgfHwgY29sdW1uLmNoaXBzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jaGlwc0NhbGxiYWNrID8gKGNvbHVtbi5jaGlwc0NhbGxiYWNrKGVudHJ5KSA/IE9LIDogTk9LKSA6IChnZXRQcm9wZXJ0eShlbnRyeSwgY29sdW1uLmNoaXBzVGFyZ2V0KSA/IE9LIDogTk9LKVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI09LPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0yNCBmbGV4IHRleHQtY2VudGVyIGNvbnRlbnQtY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIHRleHQteHMgZm9udC1tZWRpdW0gcHktMC41IHJvdW5kZWQtZnVsbCBkYXJrOmJnLWdyZWVuLTkwMCBkYXJrOnRleHQtZ3JlZW4tMzAwXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2hpcHNEaXNwbGF5ICYmIGNvbHVtbi5jaGlwc0Rpc3BsYXlbMF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNOT0s+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTI0IGZsZXggdGV4dC1jZW50ZXIgY29udGVudC1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1yZWQtMTAwIHRleHQtcmVkLTgwMCB0ZXh0LXhzIGZvbnQtbWVkaXVtIHB5LTAuNSByb3VuZGVkLWZ1bGwgZGFyazpiZy1yZWQtOTAwIGRhcms6dGV4dC1yZWQtMzAwXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2hpcHNEaXNwbGF5ICYmIGNvbHVtbi5jaGlwc0Rpc3BsYXlbMV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJpbmxpbmUtYmxvY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbm93cmFwIHRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGV4dCB8fCBnZXRUZXh0KHByb3BlcnR5LCBjb2x1bW4pXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICBAaWYgKGFjdGlvbnMpIHtcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMyBoLTE0IGZsZXggZ2FwLTIgdy1mdWxsIHNtOnctbWluIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgPGFwcC1jaHItYnV0dG9uIGNsYXNzPVwidy1mdWxsXCIgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgYWN0aW9uLmRpc2FibGVkQ2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgPyBhY3Rpb24uZGlzYWJsZWRDYWxsYmFjayhlbnRyeSlcbiAgICAgICAgICAgICAgICAgICAgOiBhY3Rpb24uZGlzYWJsZWQgfHwgZmFsc2VcbiAgICAgICAgICAgICAgICBcIiBbZGlzcGxheV09XCJhY3Rpb24uZGlzcGxheVwiIFtpY29uXT1cImFjdGlvbi5pY29uXCIgW2NsaWNrXT1cImFjdGlvbi5jYWxsYmFjay5iaW5kKG51bGwsIGVudHJ5LCBpKVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiIHR5cGU9XCJyZXNwb25zaXZlXCI+XG4gICAgICAgICAgICAgIDwvYXBwLWNoci1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAociBvZiBjb21wdXRlZFJvd3M7IHRyYWNrIHIpIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LW5vLXdyYXAgc206dGFibGUtcm93IG1iLTIgc206bWItMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpiZy1zbGF0ZS02MDAgc206b2RkOmJnLWdyYXktMjAwIHNtOmRhcms6b2RkOmJnLXNsYXRlLTcwMFwiPlxuICAgICAgICAgICAgQGZvciAoYyBvZiByLmNvbHVtbnM7IHRyYWNrIGMpIHtcbiAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJjLmFsaWdubWVudCAmJiAndGV4dC0nKyhjLmFsaWdubWVudHx8J2xlZnQnKVwiIGNsYXNzPVwicC0zIGgtMTRcIj5cbiAgICAgICAgICAgICAge3tjLmxhYmVsICYmIGMubGFiZWwgKyAnOid9fSB7e2MudmFsdWUgfHwgKGMuY2FsbGJhY2sgJiYgYy5jYWxsYmFjayhkYXRhKSl9fSB7e2MuYWZ0ZXJ9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgICA8YXBwLWNoci1wYWdpbmF0b3IgW2lkXT1cInRoaXMuaWRcIiBbKHBhZ2VTaXplKV09XCJwYWdlU2l6ZVwiIFsocGFnZSldPVwiY3VycmVudFBhZ2VcIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cImVtaXRQYWdlU2l6ZSgkZXZlbnQpXCIgKHBhZ2VDaGFuZ2UpPVwiZW1pdEN1cnJlbnRQYWdlKCRldmVudClcIj48L2FwcC1jaHItcGFnaW5hdG9yPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -865,6 +865,9 @@ class ChrFormComponent {
865
865
  this.form.markAllAsTouched();
866
866
  this.form.updateValueAndValidity({ emitEvent: true });
867
867
  };
868
+ this.reset = () => {
869
+ this.form.reset();
870
+ };
868
871
  this.setValue$ = (key, value) => {
869
872
  const val = this.typeToInputValue(this.controlTypes[key], value);
870
873
  this.form.get(key)?.patchValue(val);
@@ -909,7 +912,7 @@ class ChrFormComponent {
909
912
  this.submit?.(this.form.value);
910
913
  };
911
914
  this.log = (el) => {
912
- console.log(el);
915
+ //console.log(el);
913
916
  };
914
917
  this.detectChanges = () => {
915
918
  this.form.markAsDirty();