@esfaenza/forms-and-validations 15.2.39 → 15.2.41

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.
@@ -111,6 +111,7 @@ export class FormAdaptiveComponent extends BaseFormControl {
111
111
  }
112
112
  break;
113
113
  }
114
+ pv._validator = pv.createValidator(pv.pattern);
114
115
  this.ngControl._setValidators(validators);
115
116
  this.ngControl.control.setValidators(validators);
116
117
  this.ngControl.control.updateValueAndValidity();
@@ -385,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
385
386
  }], Options: [{
386
387
  type: Input
387
388
  }] } });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hZGFwdGl2ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLWFkYXB0aXZlL2Zvcm0tYWRhcHRpdmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1hZGFwdGl2ZS9mb3JtLWFkYXB0aXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQXdCLGFBQWEsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxHLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpFLFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBYy9DLDJKQUEySjtBQVEzSixNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQXdEdEQsMkJBQTJCO0lBQzNCLFlBQVksR0FBc0IsRUFBVSxPQUF1QixFQUFVLFNBQXNCLEVBQVUsV0FBbUMsRUFBUyxFQUF1QixFQUFzQixTQUFvQixFQUFxQyxXQUF1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QU07MkJBQUMsYUFBYTs7MEJBQXNELFFBQVE7OzBCQUFrQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUEwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7NENBdEQvYSxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdxQyxPQUFPO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sLCBQYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBFUyAvIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgTmd4TWF0RGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgRm9ybUFkYXB0aXZlQ29tcG9uZW50TG9jIH0gZnJvbSBcIi4vZm9ybS1hZGFwdGl2ZS5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFDT19DVVNUT01LRVksIEZBVl9ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgQXBwRmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvQXBwRmlsZVwiO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYW5nZUV2ZW50IH0gZnJvbSBcIi4uLy4uL21vZGVscy9DaGFuZ2VFdmVudFwiO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuLyoqIE9wemlvbmkgZ2VuZXJpY2hlIGRpc3BvbmliaWxpICovXHJcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZU9wdGlvbnMgPSAnSnNEYXRlcycgfCAnQ2FzZVNlbnNpdGl2ZScgfCAnTWluQ2hhcnMnIHwgJ1NlYXJjaEZ1bmN0aW9uJyB8ICdBbGlnbm1lbnQnIHwgJ1ByZWNpc2lvbicgfCAnQWxsb3dEb3dubG9hZCcgfCAnQWRqdXN0TnVtYmVyJyB8ICdQYXR0ZXJuJztcclxuXHJcbi8qKiBDb21wb25lbnRlIGluIGdyYWRvIGRpIGFzc3VtZXJlIGxhIGZvcm1hIGRpIHVuIHF1YWxzaWFzaSBhbHRybyBjb21wb25lbnRlIGZvcm0gaW4gYmFzZSBhbCB0aXBvIHNwZWNpZmljYXRvLiBVdGlsZSAgcGVyIGxhIGNyZWF6aW9uZSBkaSBmb3JtIGRpbmFtaWNpICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1hZGFwdGl2ZVwiLFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogRm9ybUFkYXB0aXZlQ29tcG9uZW50TG9jIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS1hZGFwdGl2ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9mb3JtLWZpbGUvZm9ybS1maWxlLmNvbXBvbmVudC5jc3NcIl0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUFkYXB0aXZlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKiBUaXBvbG9naWEgY2hlIGRlY2lkZSBjaGUgY29tcG9uZW50ZSBtb3N0cmFyZSAqL1xyXG4gICAgQElucHV0KCkgVHlwZTogJ3N0cmluZycgfCAnZmxvYXQnIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAnaW50JyB8ICdib29sZWFuJyB8ICdlbnVtJyB8ICdhdXRvY29tcGxldGUnIHwgJ2RhdGV0aW1lJyB8ICd0aW1lJyB8ICdmaWxlJyB8ICdjdXJyZW5jeSc7XHJcblxyXG4gICAgLyoqIE1lc3NhZ2dpbyBwZXIgcXVhbmRvIHNpIGJpbmRhIHVuIGZvcm0tYWRhcHRpdmUgc2VuemEgdGlwbyAqL1xyXG4gICAgQElucHV0KCkgVHlwZU1pc3NpbmdNZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFBhdHRlcm4gZGkgdmFsaWRhemlvbmUgKi9cclxuICAgIEBJbnB1dCgpIFBhdHRlcm46IHN0cmluZztcclxuXHJcbiAgICAvKiogSW5kaWNhIGRpIGFnZ2l1c3RhcmUgaW4gdXNjaXRhIGkgbnVtYmVyIGluIG1vZG8gY2hlIHNpYW5vIHBhcnNhYmlsaSBkYWwgamF2YXNjcmlwdCAqL1xyXG4gICAgQElucHV0KCkgQWRqdXN0TnVtYmVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogUmlmZXJpbWVudG8gYWxsJ2VsZW1lbnRvIGlucHV0IGRpIHRpcG8gZmlsZSBxdWFsb3JhIGlsICoqVHlwZSoqIGRpIHF1ZXN0byBjb21wb25lbnRlIGZvc3NlICoqZmlsZSoqICovXHJcbiAgICBAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSBzY2FyaWNhcmUgbCdldmVudHVhbGUgZmlsZSBwcmVzZW50ZSBxdWFsb3JhIGlsICoqVHlwZSoqIGRpIHF1ZXN0byBjb21wb25lbnRlIGZvc3NlICoqZmlsZSoqICovXHJcbiAgICBASW5wdXQoKSBBbGxvd0Rvd25sb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogTW9kZWxsbyB0eXBlc2NyaXB0IGRpIGJpbmQgZGVpIGZpbGUgKi9cclxuICAgIE1vZGVsRmlsZTogQXBwRmlsZTtcclxuXHJcbiAgICAvKiogVXRpbGl6emF0YSBuZWwgZm9ybS1hZGFwdGVyIHBlciBzcGVjaWZpY2FyZSBsYSBwcmVjaXNpb25lIGRlZ2xpIGlucHV0IGN1cnJlbmN5bWFwIChUeXBlOiBjdXJyZW5jeSkgKi9cclxuICAgIEBJbnB1dCgpIFByZWNpc2lvbjogbnVtYmVyID0gMjtcclxuXHJcbiAgICAvKiogQWxsaW5lYW1lbnRvIGRlbGxhIGN1cnJlbmN5IG1hc2sgKi9cclxuICAgIEBJbnB1dCgpIEFsaWdubWVudDogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCc7XHJcblxyXG4gICAgLyoqIEZ1bnppb25lIGRpIHJpY2VyY2EgY2hlIHZlcnLDoCBjaGlhbWF0YSBkYWwgY29tcG9uZW50ZSAqL1xyXG4gICAgQElucHV0KCkgU2VhcmNoRnVuY3Rpb246IChzZWFyY2g6IHN0cmluZywgYnlpZDogYm9vbGVhbikgPT4gT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdPiA9IG51bGw7XHJcblxyXG4gICAgLyoqIE51bWVybyBtaW5pbW8gZGkgY2FyYXR0ZXJpIGNvbiBjdWkgY2VyY2FyZSAqL1xyXG4gICAgQElucHV0KCkgTWluQ2hhcnM6IG51bWJlciA9IDM7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBpIGNvbnRyb2xsaSBkZXZvbm8gZXNzZXJlIGVmZmV0dHVhdGkgdGVuZW5kbyBjb250byBkZWwgQ2FzZSBvIG1lbm8uIFZhbGUgc29sbyBxdWFsb3JhIGxhICoqU291cmNlKiogZm9zc2UgZm9ybml0YSAqL1xyXG4gICAgQElucHV0KCkgQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBPcHppb25pIHNwZWNpZmljaGUgcGVyIGlsIGNvbXBvbmVudGUgY2hlIHNpIHZhIGEgdmlzdWFsaXp6YXJlLiBFcy4gcGVyIGkgdGlwaSBkYXRlOiB7IEpzRGF0ZXM6IHRydWUgfSAqL1xyXG4gICAgQElucHV0KCkgT3B0aW9uczogeyBbaWQgaW4gQXZhaWxhYmxlT3B0aW9uc10/OiBhbnkgfSA9IHt9O1xyXG5cclxuICAgIC8qKiBWYXJpYWJpbGUgaW50ZXJuYSBjaGUgZ2VzdGlzY2Ugc2UgZWZmZXR0dWFyZSBpbCByaWFsbGluZWFtZW50byBkZWkgZGF0aSBvIG1lbm8gKi9cclxuICAgIHByaXZhdGUgYWxpZ25WYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBpZ25vcmFyZSBpbCBwcm9zc2ltbyBldmVudG8gd3JpdGVWYWx1ZSBjaGUgbm9ybWFsbWVudGUgZG92cmViYmUgcmljaGllZGVyZSBsYSBudW92YSBzb3VyY2UuIFNlcnZlIHBlciBxdWFuZG8gbCd1dGVudGUgc2VsZXppb25hIHVuIGVsZW1lbnRvOlxyXG4gICAgICogU3ViaXRvIGRvcG8gcGFydGlyZWJiZSB1biBhbHRybyBldmVudG8gbW9kZWxDaGFuZ2UgY2hlIHJpY2FyaWNoZXJlYmJlIG51b3ZhbWVudGUgbGEgc291cmNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaWdub3JlTmV4dFdyaXRlVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQ2FjaGUgZGVsbGEgc29yZ2VudGUgb3JpZ2luYWxlIFBPU1QgYmluZGluZywgaW4gbW9kbyBkYSBwb3RlciBmYXJlIGZpbHRyaSBpbiBsb2NhbGUgcXVhbG9yYSBsYSAqKlNlYXJjaEZ1bmN0aW9uKiogbm9uIGZvc3NlIGRlZmluaXRhIGUgbGEgKipTb3VyY2UqKiBmb3NzZSBhc3NlZ25hdGEgKi9cclxuICAgIHB1YmxpYyBGaWx0ZXJlZEJvdW5kU291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIFNvbG8gcGVyIGdsaSBpbnB1dCBkaSB0aXBvIFwiZGF0ZVwiLiBDYXBpc2NlIGNoZSBtb2RhbGl0w6AgdXNhcmUgcGVyIGlsIHZhbGlkYXRpb24tZGF0ZSBzb3R0b3N0YW50ZSAqL1xyXG4gICAgcHVibGljIHVzZUpzRGF0ZXM6IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBkYXRlc0V4dHM6IERhdGVTZXJ2aWNlLCBwcml2YXRlIGRhdGVBZGFwdGVyOiBOZ3hNYXREYXRlQWRhcHRlcjxhbnk+LCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQE9wdGlvbmFsKCkgQXBwQ29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgQE9wdGlvbmFsKCkgQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZOiBzdHJpbmcsIEBPcHRpb25hbCgpIEBJbmplY3QoRkFWX0RFQlVHX01PREUpIEZBVl9ERUJVR19NT0RFOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG5cclxuICAgICAgICB0aGlzLk1vZGVsRmlsZSA9IG5ldyBBcHBGaWxlKCk7XHJcbiAgICAgICAgdGhpcy5Vc2VVc2VyVmFsaWRhdG9ycyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBJbnRQYXR0ZXJuID0gJ15bMC05XVxcXFxkKiQnO1xyXG4gICAgcHVibGljIEZsb2F0UGF0dGVybiA9ICdeKFswLTldKlssXSk/WzAtOV0rJCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOdmwgY29uIHVuIG1pbmltbyBkaSBzZW5zb1xyXG4gICAgICogQHBhcmFtIHZhbHVlIFZhbG9yZSBiYXNlXHJcbiAgICAgKiBAcGFyYW0gaWZub2QgVmFsb3JlIGRhIHVzYXJlIHNlICoqdmFsdWUqKiDDqCBudWxsbyBvIHVuZGVmaW5lZFxyXG4gICAgICogQHJldHVybnMgSWwgdmFsb3JlIHByZXNvIGZyYSBpIGR1ZSBkaXNwb25pYmlsaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG52bDxUPih2YWx1ZTogVCwgaWZub2Q6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSB1bmRlZmluZWQgPyBpZm5vZCA6IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgICAgICAvLyBBc3NlZ25hemlvbmUgT3B6aW9uaSBkYSBvZ2dldHRvXHJcbiAgICAgICAgaWYodGhpcy5PcHRpb25zKXtcclxuICAgICAgICAgICAgdGhpcy51c2VKc0RhdGVzID0gdGhpcy5udmwodGhpcy5PcHRpb25zPy5Kc0RhdGVzLCB0aGlzLnVzZUpzRGF0ZXMpOztcclxuICAgICAgICAgICAgdGhpcy5DYXNlU2Vuc2l0aXZlID0gdGhpcy5udmwodGhpcy5PcHRpb25zPy5DYXNlU2Vuc2l0aXZlLCB0aGlzLkNhc2VTZW5zaXRpdmUpO1xyXG4gICAgICAgICAgICB0aGlzLk1pbkNoYXJzID0gdGhpcy5udmwodGhpcy5PcHRpb25zPy5NaW5DaGFycywgdGhpcy5NaW5DaGFycyk7XHJcbiAgICAgICAgICAgIHRoaXMuU2VhcmNoRnVuY3Rpb24gPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LlNlYXJjaEZ1bmN0aW9uLCB0aGlzLlNlYXJjaEZ1bmN0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5BbGlnbm1lbnQgPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LkFsaWdubWVudCwgdGhpcy5BbGlnbm1lbnQpO1xyXG4gICAgICAgICAgICB0aGlzLlByZWNpc2lvbiA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uUHJlY2lzaW9uLCB0aGlzLlByZWNpc2lvbik7XHJcbiAgICAgICAgICAgIHRoaXMuQWxsb3dEb3dubG9hZCA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uQWxsb3dEb3dubG9hZCwgdGhpcy5BbGxvd0Rvd25sb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5BZGp1c3ROdW1iZXIgPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LkFkanVzdE51bWJlciwgdGhpcy5BZGp1c3ROdW1iZXIpO1xyXG4gICAgICAgICAgICB0aGlzLlBhdHRlcm4gPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LlBhdHRlcm4sIHRoaXMuUGF0dGVybik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgLy8gRXNjbHVzaSBpIHZhbGlkYXRvcmkgYSBjb21wb25lbnRpXHJcbiAgICAgICAgICAgIGxldCB2YWxpZGF0b3JzID0gWy4uLih0aGlzLl92YWxpZGF0b3JzIHx8IFtdKV0uZmlsdGVyKHYgPT4gIXYubmdPbkluaXQpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHB2ID0gbmV3IFBhdHRlcm5WYWxpZGF0b3IoKTtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLlR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2ludCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcHYucGF0dGVybiA9IHRoaXMuUGF0dGVybiB8fCB0aGlzLkludFBhdHRlcm47XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHB2KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgcHYucGF0dGVybiA9IHRoaXMuUGF0dGVybiB8fCB0aGlzLkZsb2F0UGF0dGVybjtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5QYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHB2LnBhdHRlcm4gPSB0aGlzLlBhdHRlcm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChwdik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICg8YW55PnRoaXMubmdDb250cm9sKS5fc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgbmV3U291cmNlID0gY2hhbmdlc1tcIlNvdXJjZVwiXTtcclxuICAgICAgICBjb25zdCBuZXdUeXBlID0gY2hhbmdlc1tcIlR5cGVcIl07XHJcblxyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpIHtcclxuICAgICAgICAgICAgdGhpcy50cnlCaW5kU291cmNlRGlzcGxheSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gUHJpbWEgYXNzZWduYXppb25lIHNlIGNhbWJpYSBsYSBzb3VyY2Ugc290dG8gKHF1aW5kaSBzZSB2aWVuZSBiaW5kYXRhIGRpcmV0dGFtZW50ZSBkYSBIVE1MKVxyXG4gICAgICAgICAgICBpZiAodGhpcy5UeXBlID09IFwiYXV0b2NvbXBsZXRlXCIgJiYgKHRoaXMuTW9kZWw/Lmxlbmd0aCB8fCAwKSA+PSB0aGlzLk1pbkNoYXJzICYmICF0aGlzLlNlYXJjaEZ1bmN0aW9uKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gdGhpcy5Cb3VuZFNvdXJjZTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gW107XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChuZXdUeXBlICYmIHRoaXMuTW9kZWwpXHJcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLk1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWxpZ25WYWx1ZXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IG9iaj8udG9TdHJpbmcoKSB8fCBcIlwiO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuVHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLlR5cGUgPSBcInN0cmluZ1wiO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuVHlwZSA9PSBcImRhdGVcIiB8fCB0aGlzLlR5cGUgPT0gXCJkYXRldGltZVwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlSnNEYXRlcyA9IHRoaXMudXNlSnNEYXRlcyA9PSBudWxsID8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBEYXRlXVwiIDogdGhpcy51c2VKc0RhdGVzO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5UeXBlID09IFwiZGF0ZVwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuZGF0ZXNFeHRzLmdldEZvcm1hdHRlZChvYmosIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuVHlwZSA9PSBcImRhdGV0aW1lXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5kYXRlc0V4dHMuZ2V0Rm9ybWF0dGVkKG9iaiwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgodGhpcy5UeXBlID09IFwiZmxvYXRcIiB8fCB0aGlzLlR5cGUgPT0gXCJudW1iZXJcIikgJiYgb2JqKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IG9iai50b1N0cmluZygpLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IG9iajtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUGVyIHNpY3VyZXp6YSByaWFsbGluZW8gaSB2YWxvcmlcclxuICAgICAgICBlbHNlIGlmICh0aGlzLlR5cGUgPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgb2JqID0gb2JqID8gKG9iaiA9PT0gdHJ1ZSB8fCBvYmoudG9Mb3dlckNhc2UoKSA9PSBcInRydWVcIikgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5hbGlnblZhbHVlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLmxjLmxvYyhvYmogPyAnU8OsJyA6ICdObycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlR5cGUgPT0gXCJ0aW1lXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IChvYmogfHwgXCIwMDowMDowMFwiKS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgICAgIG9iaiA9IGRheWpzKCkuaG91cihwYXJzZUludChob3VycyA/PyAwKSkubWludXRlKHBhcnNlSW50KG1pbnV0ZXMgPz8gMCkpLnNlY29uZChwYXJzZUludChzZWNvbmRzID8/IDApKTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IGAke2hvdXJzIHx8ICcwMCd9OiR7bWludXRlcyB8fCAnMDAnfToke3NlY29uZHMgfHwgJzAwJ31gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlR5cGUgPT0gXCJmaWxlXCIpIHtcclxuICAgICAgICAgICAgb2JqID0gdGhpcy5Nb2RlbEZpbGU7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLk1vZGVsRmlsZS5maWxlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5UeXBlID09IFwiYXV0b2NvbXBsZXRlXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuU2VhcmNoRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2VhcmNoRnVuY3Rpb24ob2JqLCB0cnVlKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb3VyY2UgPSB0O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5maW5hbGl6ZVZhbHVlKG9iaik7IH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5hbGl6ZVZhbHVlKG9iaik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5Cb3VuZFNvdXJjZSAmJiB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLkJvdW5kU291cmNlLmZpbmQodCA9PiB0LmlkID09IG9iaik/LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKG9iaik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFsaWduVmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRvIHVuIHZhbG9yZSB2ZXJpZmljYSBzZSBwdcOyIHJlc3RpdHVpcmUgbGUgaW5mb3JtYXppb25pIHRyb3ZhdGUgaW4gKipTb3VyY2UqKiBjb24gaWQgdWd1YWxlIGEgKip2YWx1ZSoqIG8gc2UgZGV2ZSByZXN0aXR1aXJlIGlsIHZhbG9yZSBpbiBzZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgVmFsb3JlIHNjcml0dG8gbmVsbCdpbnB1dCBkaSB0ZXN0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZpbmFsaXplVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHZhciB2YWwgPSB0aGlzLlNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsID8gdmFsLmlkIDogdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuTW9kZWwgPSB2YWwgPyB2YWwuZGVzY3JpcHRpb24gOiB2YWx1ZTtcclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Nb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBkaSBmaWx0cm8gZGVsbGEgc29yZ2VudGUgZGF0aSBpbiBiYXNlIGFsbCdpbnB1dCB1dGVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IElucHV0IHV0ZW50ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsdGVyU291cmNlKGV2ZW50PzogQ2hhbmdlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5pZ25vcmVOZXh0V3JpdGVWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlnbm9yZU5leHRXcml0ZVZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFF1YW5kbyBmaWx0cm8gbGEgc291cmNlLCBzZSBub24gZGV2byBpZ25vcmFyZSBsJ2V2ZW50byBkZXZvIGNvbXVucXVlIGFzc2ljdXJhcm1pIGRpIGltcG9zdGFyZSBpbCB2YWxvcmUgc2VsZXppb25hdG8gYSBudWxsXHJcbiAgICAgICAgc3VwZXIuY2hhbmdlZChudWxsKTtcclxuXHJcbiAgICAgICAgaWYgKCFldmVudCAmJiB0aGlzLk1pbkNoYXJzID09IDAgJiYgIXRoaXMuU2VhcmNoRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gdGhpcy5Cb3VuZFNvdXJjZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFldmVudCB8fCBldmVudC52YWx1ZS5sZW5ndGggPCB0aGlzLk1pbkNoYXJzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRmlsdGVyZWRCb3VuZFNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuU2VhcmNoRnVuY3Rpb24gJiYgKCF0aGlzLlNvdXJjZSB8fCB0aGlzLlNvdXJjZS5sZW5ndGggPT0gMCkpXHJcbiAgICAgICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgZmlsdHJhcmUgZ2xpIGVsZW1lbnRpIHNlbnphIHVuYSBmdW56aW9uZSBkaSByaWNlcmNhIGNoZSByZXN0aXR1aXNjYSB1bmEgbGlzdGEgZGkgeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1cIjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuU2VhcmNoRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcImZpbHRlcnNvdXJjZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlYXJjaEZ1bmN0aW9uKGV2ZW50LnZhbHVlLCBmYWxzZSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlID0gdDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gcXVlc3RvIGNhc28gw6ggZ2nDoCBmaWx0cmF0YSBkYWxsYSBTZWFyY2hGdW5jdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRmlsdGVyZWRCb3VuZFNvdXJjZSA9IHRoaXMuQm91bmRTb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWx0ZXJlZFNvdXJjZU9uRGVzY3JpcHRpb25TZWxlY3Rpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA0MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcImZpbHRlcnNvdXJjZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBJbiBxdWVzdG8gY2FzbyBkZXZvIGZpbHRyYXJlIGlvIGluIG1lbW9yaWFcclxuICAgICAgICAgICAgICAgIHRoaXMuRmlsdGVyZWRCb3VuZFNvdXJjZSA9IHRoaXMuQm91bmRTb3VyY2UuZmlsdGVyKHQgPT4gKHRoaXMuQ2FzZVNlbnNpdGl2ZSAmJiB0LmRlc2NyaXB0aW9uLmluY2x1ZGVzKGV2ZW50LnZhbHVlKSkgfHwgKCF0aGlzLkNhc2VTZW5zaXRpdmUgJiYgdC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlLnRvTG93ZXJDYXNlKCkpKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbHRlcmVkU291cmNlT25EZXNjcmlwdGlvblNlbGVjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHJlbW92ZUZpbHRlcmVkU291cmNlT25EZXNjcmlwdGlvblNlbGVjdGlvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlLmxlbmd0aCA9PSAxICYmICh0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2VbMF0uZGVzY3JpcHRpb24gPT09IHRoaXMuTW9kZWwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTW9kZWwgPSB0aGlzLkJvdW5kU291cmNlWzBdLmlkO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Cb3VuZFNvdXJjZVswXS5kZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBNZXRvZG8gcmljaGlhbWF0byBxdWFuZG8gdmllbmUgbW9kaWZpY2F0byBpbCBtb2RlbGxvIGRlbCBjYW1wbyBkaSBpbnB1dCAqL1xyXG4gICAgY2hhbmdlZChldmVudD86IENoYW5nZUV2ZW50KSB7XHJcbiAgICAgICAgdmFyIHRvRW1pdCA9IHRoaXMuZ2V0TW9kZWxUb0VtaXQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuVHlwZSA9PSBcImF1dG9jb21wbGV0ZVwiKVxyXG4gICAgICAgICAgICB0aGlzLmlnbm9yZU5leHRXcml0ZVZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1pdFBlbmRpbmdDaGFuZ2VzKVxyXG4gICAgICAgICAgICBzdXBlci5jaGFuZ2VkKHRvRW1pdCwgZmFsc2UsIGZhbHNlLCBldmVudD8uaW50ZXJuYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBmaW5hbGl6ZWQoKSB7XHJcbiAgICAgICAgc3VwZXIuZmluYWxpemVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIE1ldG9kbyByaWNoaWFtYXRvIHF1YW5kbyB2aWVuZSBzZWxlemlvbmF0byBpbCBjYW1wbyBjb2wgbW91c2UgKi9cclxuICAgIGZvY3VzZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHN1cGVyLmZvY3VzZWQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBFZmZldHR1YSBnbGkgYWdnaXVzdGFtZW50aSBkYXRpIGRlbCBjYXNvIGVkIGVtZXR0ZSBpbCBtb2RlbGxvIGNvcnJldHRvICovXHJcbiAgICBwcml2YXRlIGdldE1vZGVsVG9FbWl0KCkge1xyXG4gICAgICAgIHZhciB0b0VtaXQgPSB0aGlzLk1vZGVsID9cclxuICAgICAgICAgICAgKHRoaXMuVHlwZSA9PSBcInRpbWVcIiB8fCB0aGlzLnVzZUpzRGF0ZXMgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5jbG9uZSh0aGlzLmRhdGVzRXh0cy5nZXREYXRlQ29udmVydGlvbih0aGlzLk1vZGVsKSlcclxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLk1vZGVsKSkpXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLlR5cGUgPT0gXCJmbG9hdFwiIHx8IHRoaXMuVHlwZSA9PSBcIm51bWJlclwiKSAmJiB0b0VtaXQpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5BZGp1c3ROdW1iZXIpXHJcbiAgICAgICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQucmVwbGFjZShcIi5cIiwgXCJcIikucmVwbGFjZShcIixcIiwgXCIuXCIpO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdG9FbWl0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlR5cGUgPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgdG9FbWl0ID0gdG9FbWl0ID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5sYy5sb2ModG9FbWl0ID8gJ1llcycgOiAnTm8nKTs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVHlwZSA9PSBcInRpbWVcIikge1xyXG4gICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQuZm9ybWF0KFwiSEg6bW06c3NcIik7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b0VtaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLlR5cGUgPT0gXCJkYXRlXCIgfHwgdGhpcy5UeXBlID09IFwiZGF0ZXRpbWVcIikgJiYgdGhpcy51c2VKc0RhdGVzKSB7XHJcbiAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC50b0RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuZGF0ZXNFeHRzLmdldEZvcm1hdHRlZCh0aGlzLk1vZGVsLCB0aGlzLlR5cGUgPT0gXCJkYXRlXCIsIHRoaXMuVHlwZSA9PSBcImRhdGV0aW1lXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRvRW1pdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwZXIgZ2VzdGlyZSBsYSBtb2RpZmljYSBkZWwgZmlsZSBhdHR1YWxtZW50ZSBiaW5kYXRvLiBPdnZpYW1lbnRlIGZ1bnppb25hIHNvbG8gcXVhbG9yYSBpbCAqKlR5cGUqKiBmb3NzZSAqKmZpbGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNsZWFyIEluZGljYSBzZSBiaXNvZ25hIHN2dW90YXJlIGwnaW5wdXQgbyBtZW5vIFxyXG4gICAgICovXHJcbiAgICBmaWxlQ2hhbmdlKGNsZWFyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBtb2RlbCA9ICg8QXBwRmlsZT50aGlzLk1vZGVsKTtcclxuICAgICAgICBsZXQgbmU6IEhUTUxJbnB1dEVsZW1lbnQgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKGNsZWFyKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLmZpbGVuYW1lID0gXCJcIjtcclxuICAgICAgICAgICAgbmUudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZS5maWxlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgICAgIGZpbGVzLnB1c2gobmUuZmlsZXMuaXRlbShpKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobmUuZmlsZXMubGVuZ3RoID09IDEpXHJcbiAgICAgICAgICAgICAgICBtb2RlbC5maWxlbmFtZSA9IG5lLmZpbGVzWzBdLm5hbWU7XHJcbiAgICAgICAgICAgIGlmIChuZS5maWxlcy5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICAgICAgbW9kZWwuZmlsZW5hbWUgPSBuZS5maWxlcy5sZW5ndGggKyBcIiBcIiArIHRoaXMubGMubG9jKFwiRmlsZXMgU2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIG1vZGVsLm5hdGl2ZWZpbGVzID0gZmlsZXM7XHJcbiAgICAgICAgICAgIG1vZGVsLmZpbGViNjQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUGVybWV0dGUgZGkgc2NhcmljYXJlIGlsIGZpbGUgY29sbGVnYXRvIGFsbCdldmV0bnVhbGUgZmlsZSBpbnB1dCByYXBwcmVzZW50YXRvIGRhIHF1ZXN0byBjb21wb25lbnRlICovXHJcbiAgICBkb3dubG9hZEF0dGFjaG1lbnQoKSB7XHJcbiAgICAgICAgbGV0IG1vZGVsID0gKDxBcHBGaWxlPnRoaXMuTW9kZWwpO1xyXG4gICAgICAgIHRoaXMudXRpRXh0cy5zYXZlRmlsZShtb2RlbC5maWxlYjY0LCBtb2RlbC5maWxlbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gICAgLy9UT0RPOiBzcG9zdGFybGEgaW4gdW4gbWV0b2RvIGRpIHV0aWxpdMOgIChlc2ZhZW56YS9leHRlbnNpb25zKVxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgZnVuemlvbmUgY2hlIHZ1b2xlIGVzZWd1aXJlIHJpcHVsaXNjbyBxdWVsIHRpbWVvdXRcclxuICAgICAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IG51bGw7IH0sIHRocm90dGxlVGltZSk7XHJcbiAgICB9XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSIsIjwhLS0gVWd1YWxlIGluIHR1dHRpIGkgY29tcG9uZW50aSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2Zvcm0nXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnaW5saW5lJ1wiIGNsYXNzPVwiYXBwLWlubGluZVwiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TW9kZVRlbXBsYXRlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRpc3BsYXlNb2RlVGVtcGxhdGUsIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBFdmFsdWF0ZWRNb2RlbCB9XCI+PC9uZy1jb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtoaWRkZW5dPVwiRGlzcGxheU1vZGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+PC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIkZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIiBjbGFzcz1cInt7Rm9ybUdyb3VwQ2xhc3MgKyAoTGFzdCA/ICcgYXBwLW1hcmdpbi1ib3R0b20tMCBhcHAtbWFyZ2luLXJpZ2h0LTAgJyA6ICcnKSArIChEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnICYmIERpc3BsYXlNb2RlID8gKCcgYXBwLWlubGluZS1ibG9jayAnICsgKCFMYXN0ID8gJ2FwcC1tYXJnaW4tcmlnaHQtMTAnIDogJycpKSA6ICcgZm9ybS1ncm91cCByb3cnKX19XCI+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLXt7KERpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtYm9sZCBhcHAtbWFyZ2luLWJvdHRvbS0wJyA6IExhYmVsQ29sV2lkdGgpICsgKERpc3BsYXlNb2RlID8gJyBhcHAtYm9sZCcgOiAnIG0tdC01JykgfX1cIj57e0xhYmVsfX17e1JlcXVpcmVkICYmICFEaXNwbGF5TW9kZSA/ICcqJyA6ICcnfX17e0xhYmVsID8gXCI6XCIgOiBcIlwifX08L2xhYmVsPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnICYmIElubGluZVNlcGFyYXRvciAhPSAnJ1wiPnt7SW5saW5lU2VwYXJhdG9yfX08L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7RGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1pbmxpbmUtYmxvY2snIDogSW5wdXRDb2xXaWR0aH19XCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiRGlzcGxheU1vZGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxyXG48L2Rpdj5cclxuPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFUeXBlXCIgY2xhc3M9XCJhcHAtbWFyZ2luLXRvcC01XCI+XHJcbiAgICAgICAgPGVtPnt7VHlwZU1pc3NpbmdNZXNzYWdlfX08L2VtPlxyXG4gICAgPC9kaXY+XHJcbiAgIFxyXG4gICAgIDwhLS1TZSBjdXJyZW5jeS0tPlxyXG4gICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICdjdXJyZW5jeSdcIj5cclxuICAgICAgICA8dmFsLWN1cnJlbmN5ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIlxyXG4gICAgICAgIFtDdXJyZW5jeU9wdGlvbnNdPVwieyBwcmVmaXg6ICcnLCB0aG91c2FuZHM6ICcuJywgZGVjaW1hbDogJywnLCBwcmVjaXNpb246IFByZWNpc2lvbiwgYWxpZ246IEFsaWdubWVudCB9XCIgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiBbcmVxdWlyZWRdPVwiUmVxdWlyZWRcIiBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIiAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIj48L3ZhbC1jdXJyZW5jeT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIGRhdGEtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgIDx2YWwtZGF0ZSAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIiBbRmxvYXRpbmdMYWJlbF09XCJGbG9hdGluZ0xhYmVsXCIgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIiBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIFt1c2VKc0RhdGVzXT1cInVzZUpzRGF0ZXNcIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpO1wiIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIiAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIj48L3ZhbC1kYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2Ugc3RyaW5nYS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ3N0cmluZydcIj5cclxuICAgICAgICA8dmFsLWlucHV0ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwie3tQYXR0ZXJuIHx8ICcnfX1cIiBbcmVxdWlyZWRdPVwiUmVxdWlyZWRcIiBbcGxhY2Vob2xkZXJdPVwiUGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpO1wiIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIiAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIj48L3ZhbC1pbnB1dD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIG51bWVyby0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2Zsb2F0JyB8fCBUeXBlID09ICdudW1iZXInXCI+XHJcbiAgICAgICAgPHZhbC1pbnB1dCAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIiBbRmxvYXRpbmdMYWJlbF09XCJGbG9hdGluZ0xhYmVsXCIgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIiBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cInt7UGF0dGVybiB8fCBGbG9hdFBhdHRlcm59fVwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCRldmVudCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWlucHV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgbnVtZXJvIGludGVyby0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2ludCdcIj5cclxuICAgICAgICA8dmFsLWlucHV0ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwie3tQYXR0ZXJuIHx8IEludFBhdHRlcm59fVwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCRldmVudCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWlucHV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgYm9vbGVhbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm0tdC01XCIgKm5nSWY9XCJUeXBlID09ICdib29sZWFuJ1wiPlxyXG4gICAgICAgIDxpbnB1dCAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW3JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJhcHAtcG9pbnRlclwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBpZD1cInt7R2VuZXJhdGVkTmFtZX19XCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgpOyBmaW5hbGl6ZWQoKTtcIiAoY2xpY2spPVwiZm9jdXNlZCgkZXZlbnQpO1wiIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSBlbnVtLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAnZW51bSdcIj5cclxuICAgICAgICA8dmFsLXNlbGVjdCAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgW3BsYWNlSG9sZGVyVmFsdWVdPVwiJydcIiBbcGxhY2Vob2xkZXJdPVwiUmVxdWlyZWQgPyAoJ1NlbGVjdCcgfCBsb2NhbGl6ZSA6IGxjKSArICcuLi4nIDogUGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwiUmVxdWlyZWRcIiBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KTtcIiAoaW5wdXRGb2N1cyk9XCJmb2N1c2VkKCRldmVudCk7XCIgKGlucHV0RmluYWxpemVkKT1cImZpbmFsaXplZCgpXCIgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsIG9mIEJvdW5kU291cmNlXCIgW3ZhbHVlXT1cInZhbC5pZFwiPnt7dmFsLmRlc2NyaXB0aW9ufX08L29wdGlvbj5cclxuICAgICAgICA8L3ZhbC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSBhdXRvY29tcGxldGUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICdhdXRvY29tcGxldGUnXCI+XHJcbiAgICAgICAgPHZhbC1hdXRvY29tcGxldGUgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIiBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIiBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJSZXF1aXJlZCA/ICgnU2VsZWN0JyB8IGxvY2FsaXplIDogbGMpICsgJy4uLicgOiBQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIFtGaWx0ZXJlZFNvdXJjZV09XCJGaWx0ZXJlZEJvdW5kU291cmNlXCIgKGlucHV0Q2hhbmdlKT1cImZpbHRlclNvdXJjZSgkZXZlbnQpOyBjaGFuZ2VkKCRldmVudCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWF1dG9jb21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIGRhdGUgdGltZS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgIDx2YWwtZGF0ZXRpbWUgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIiBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiBbcmVxdWlyZWRdPVwiUmVxdWlyZWRcIiBbdXNlSnNEYXRlc109XCJ1c2VKc0RhdGVzXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtpZF09XCJHZW5lcmF0ZWROYW1lXCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KTtcIiAoaW5wdXRGb2N1cyk9XCJmb2N1c2VkKCRldmVudCk7XCIgKGlucHV0RmluYWxpemVkKT1cImZpbmFsaXplZCgpXCI+PC92YWwtZGF0ZXRpbWU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSB0aW1lLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAndGltZSdcIj5cclxuICAgICAgICA8bmd4LW1hdC10aW1lcGlja2VyIG5hbWU9XCJ2YWwtdGltZVwiICNlbGVtZW50UmVmICNiYXNlSW5wdXQ9XCJuZ01vZGVsXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtkaXNhYmxlZF09XCJSZWFkb25seVwiXHJcbiAgICAgICAgW3Nob3dTcGlubmVyc109XCJmYWxzZVwiIFtzdGVwSG91cl09XCIyXCIgW3N0ZXBNaW51dGVdPVwiNVwiIFtzdGVwU2Vjb25kXT1cIjMwXCJcclxuICAgICAgICBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZWQoKVwiICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIj5cclxuICAgICAgICA8L25neC1tYXQtdGltZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIGZpbGUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICdmaWxlJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBmaWxlLXVwbG9hZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoKVwiICNmaWxlSW5wdXQgaWQ9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGNsYXNzPVwiZmlsZS11cGxvYWQtYnRuIGFwcC1wb2ludGVyXCIgW211bHRpcGxlXT1cIm51bGxcIi8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtjbGFzcy5mcm0tcGFkZGluZy1sZWZ0LTIyXT1cIkFsbG93RG93bmxvYWQgJiYgTW9kZWxGaWxlLmZpbGVuYW1lICYmIE1vZGVsRmlsZS5maWxlYjY0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tpbmctZmllbGRcIiBwbGFjZWhvbGRlcj1cInt7J1NlbGVjdCBhIGZpbGUnIHwgbG9jYWxpemUgOiBsY319Li4uXCIgWyhuZ01vZGVsKV09XCJNb2RlbEZpbGUuZmlsZW5hbWVcIiBuYW1lPVwiZHNmaWxlXCIgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiLz5cclxuICAgIFxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImZhIGZhLWRvd25sb2FkIGFwcC1wb2ludGVyIGFwcC1pbnB1dC1pY29uXCIgKm5nSWY9XCJBbGxvd0Rvd25sb2FkICYmIE1vZGVsRmlsZS5maWxlbmFtZSAmJiBNb2RlbEZpbGUuZmlsZWI2NFwiIChjbGljayk9XCJkb3dubG9hZEF0dGFjaG1lbnQoKVwiPjwvYT5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lcyBkZWxldGUtZmlsZVwiIChjbGljayk9XCJmaWxlQ2hhbmdlKHRydWUpXCIgKm5nSWY9XCJNb2RlbEZpbGUuZmlsZW5hbWVcIj48L2k+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1maWxlLXVwbG9hZFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImZhIGZhLXVwbG9hZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hZGFwdGl2ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLWFkYXB0aXZlL2Zvcm0tYWRhcHRpdmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1hZGFwdGl2ZS9mb3JtLWFkYXB0aXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQXdCLGFBQWEsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxHLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpFLFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBYy9DLDJKQUEySjtBQVEzSixNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQXdEdEQsMkJBQTJCO0lBQzNCLFlBQVksR0FBc0IsRUFBVSxPQUF1QixFQUFVLFNBQXNCLEVBQVUsV0FBbUMsRUFBUyxFQUF1QixFQUFzQixTQUFvQixFQUFxQyxXQUF1QixFQUFFLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUIsRUFBc0MsY0FBdUI7UUFDN2MsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRDFDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBOUNoTCx5RkFBeUY7UUFDaEYsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFLdEMsOEdBQThHO1FBQ3JHLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBS3ZDLHlHQUF5RztRQUNoRyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBRS9CLHVDQUF1QztRQUM5QixjQUFTLEdBQXFCLE9BQU8sQ0FBQztRQUUvQyw0REFBNEQ7UUFDbkQsbUJBQWMsR0FBeUYsSUFBSSxDQUFDO1FBRXJILGlEQUFpRDtRQUN4QyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRTlCLGtJQUFrSTtRQUN6SCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV4Qyw0R0FBNEc7UUFDbkcsWUFBTyxHQUF1QyxFQUFFLENBQUM7UUFFMUQscUZBQXFGO1FBQzdFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXJDOzs7V0FHRztRQUNLLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUU5QywyS0FBMks7UUFDcEssd0JBQW1CLEdBQTBDLEVBQUUsQ0FBQztRQUV2RSx1R0FBdUc7UUFDaEcsZUFBVSxHQUFZLElBQUksQ0FBQztRQVUzQixlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7UUF5UzdDLHVHQUF1RztRQUN2RywrREFBK0Q7UUFDL0QsY0FBYztRQUNOLG9CQUFlLEdBQTZCLEVBQUUsQ0FBQztRQWpUbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUtEOzs7OztPQUtHO0lBQ0ssR0FBRyxDQUFJLEtBQVEsRUFBRSxLQUFRO1FBQzdCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRUQsUUFBUTtRQUVKLGtDQUFrQztRQUNsQyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQUEsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEU7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsb0NBQW9DO1lBQ3JDLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV4RSxJQUFJLEVBQUUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDaEMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssS0FBSztvQkFDTixFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDN0MsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsTUFBTTtnQkFDVixLQUFLLE9BQU8sQ0FBQztnQkFDYixLQUFLLFFBQVE7b0JBQ1QsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQy9DLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3BCLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDZCxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQzFCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3ZCO29CQUNELE1BQU07YUFDYjtZQUNLLEVBQUcsQ0FBQyxVQUFVLEdBQVMsRUFBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDbEQ7UUFFRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7SUFDUCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNCO1FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEMsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUU1Qiw4RkFBOEY7WUFDOUYsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDakcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7O2dCQUU1QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBRWxDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7UUFFRCxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7U0FDN0I7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDdEgsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU07Z0JBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVTtnQkFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNFO2FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFO1lBQzdELEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztTQUM3QjtRQUNELG1DQUFtQzthQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFO1lBQzdCLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4RDthQUNJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDMUIsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNsRjthQUNJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDMUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztTQUNqRDthQUNJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTzthQUNWOztnQkFFRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDO1FBRS9FLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFVO1FBQzVCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsS0FBbUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztZQUNsQyxPQUFPO1NBQ1Y7UUFFRCw2SEFBNkg7UUFDN0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN0RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM1QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztZQUM5QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDakUsTUFBTSxrSUFBa0ksQ0FBQztRQUU3SSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO2dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQzVCLHFEQUFxRDtvQkFDckQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQzVDLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxDQUFDO29CQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNYO2FBQ0k7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQy9CLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pOLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNYO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTiwwQ0FBMEM7UUFDOUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUN0RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxPQUFPLENBQUMsS0FBbUI7UUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxjQUFjO0lBQ2QsU0FBUztRQUNMLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE9BQU8sQ0FBQyxLQUFVO1FBQ2QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsNkVBQTZFO0lBQ3JFLGNBQWM7UUFDbEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVgsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksTUFBTSxFQUFFO1lBQzNELElBQUcsSUFBSSxDQUFDLFlBQVk7Z0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1NBQ2hDO2FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUM3QixNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUFBLENBQUM7U0FDN0Q7YUFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFO1lBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1NBQ2hDO2FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMxRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1NBQy9HO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsUUFBaUIsS0FBSztRQUM3QixJQUFJLEtBQUssR0FBVyxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEdBQWEsSUFBSSxDQUFDLEtBQU0sQ0FBQztRQUNsQyxJQUFJLEVBQUUsR0FBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFdEQsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNqQjthQUNJO1lBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFDcEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN0QyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDM0UsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELDBHQUEwRztJQUMxRyxrQkFBa0I7UUFDZCxJQUFJLEtBQUssR0FBYSxJQUFJLENBQUMsS0FBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLEtBQVcsQ0FBQztJQU03QixjQUFjO0lBQ04sUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUFjLEVBQUUsWUFBb0I7UUFDN0QsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQywrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1RyxDQUFDOztrSEF0WFEscUJBQXFCLHFPQXlEa04sYUFBYSxpSEFBbUgsYUFBYSw2QkFBNkMsY0FBYztzR0F6RC9hLHFCQUFxQiwwVkFMbkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyw0S0NqQ3JGLHc0VEF5RmM7MkZEbkRELHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDSSxlQUFlLGFBQ2QsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxtQkFHaEUsdUJBQXVCLENBQUMsTUFBTTs7MEJBMkRvSSxRQUFROzswQkFBSSxJQUFJOzswQkFBMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBc0QsUUFBUTs7MEJBQWtDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs0Q0F0RC9hLElBQUk7c0JBQVosS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR3FDLE9BQU87c0JBQWpELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHaEMsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wsIFBhdHRlcm5WYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIEVTIC8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBEYXRlU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBOZ3hNYXREYXRlQWRhcHRlciB9IGZyb20gXCJAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlclwiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEJhc2VGb3JtQ29udHJvbCB9IGZyb20gXCIuLi9iYXNlLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQgeyBGb3JtQWRhcHRpdmVDb21wb25lbnRMb2MgfSBmcm9tIFwiLi9mb3JtLWFkYXB0aXZlLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBBcHBGaWxlIH0gZnJvbSBcIi4uLy4uL21vZGVscy9BcHBGaWxlXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRXZlbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL0NoYW5nZUV2ZW50XCI7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbmRlY2xhcmUgdmFyIGRheWpzOiBhbnk7XHJcblxyXG4vKiogT3B6aW9uaSBnZW5lcmljaGUgZGlzcG9uaWJpbGkgKi9cclxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlT3B0aW9ucyA9ICdKc0RhdGVzJyB8ICdDYXNlU2Vuc2l0aXZlJyB8ICdNaW5DaGFycycgfCAnU2VhcmNoRnVuY3Rpb24nIHwgJ0FsaWdubWVudCcgfCAnUHJlY2lzaW9uJyB8ICdBbGxvd0Rvd25sb2FkJyB8ICdBZGp1c3ROdW1iZXInIHwgJ1BhdHRlcm4nO1xyXG5cclxuLyoqIENvbXBvbmVudGUgaW4gZ3JhZG8gZGkgYXNzdW1lcmUgbGEgZm9ybWEgZGkgdW4gcXVhbHNpYXNpIGFsdHJvIGNvbXBvbmVudGUgZm9ybSBpbiBiYXNlIGFsIHRpcG8gc3BlY2lmaWNhdG8uIFV0aWxlICBwZXIgbGEgY3JlYXppb25lIGRpIGZvcm0gZGluYW1pY2kgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLWFkYXB0aXZlXCIsXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBGb3JtQWRhcHRpdmVDb21wb25lbnRMb2MgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLWFkYXB0aXZlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4uL2Zvcm0tZmlsZS9mb3JtLWZpbGUuY29tcG9uZW50LmNzc1wiXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQWRhcHRpdmVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqIFRpcG9sb2dpYSBjaGUgZGVjaWRlIGNoZSBjb21wb25lbnRlIG1vc3RyYXJlICovXHJcbiAgICBASW5wdXQoKSBUeXBlOiAnc3RyaW5nJyB8ICdmbG9hdCcgfCAnZGF0ZScgfCAnbnVtYmVyJyB8ICdpbnQnIHwgJ2Jvb2xlYW4nIHwgJ2VudW0nIHwgJ2F1dG9jb21wbGV0ZScgfCAnZGF0ZXRpbWUnIHwgJ3RpbWUnIHwgJ2ZpbGUnIHwgJ2N1cnJlbmN5JztcclxuXHJcbiAgICAvKiogTWVzc2FnZ2lvIHBlciBxdWFuZG8gc2kgYmluZGEgdW4gZm9ybS1hZGFwdGl2ZSBzZW56YSB0aXBvICovXHJcbiAgICBASW5wdXQoKSBUeXBlTWlzc2luZ01lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICAvKiogUGF0dGVybiBkaSB2YWxpZGF6aW9uZSAqL1xyXG4gICAgQElucHV0KCkgUGF0dGVybjogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBJbmRpY2EgZGkgYWdnaXVzdGFyZSBpbiB1c2NpdGEgaSBudW1iZXIgaW4gbW9kbyBjaGUgc2lhbm8gcGFyc2FiaWxpIGRhbCBqYXZhc2NyaXB0ICovXHJcbiAgICBASW5wdXQoKSBBZGp1c3ROdW1iZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBSaWZlcmltZW50byBhbGwnZWxlbWVudG8gaW5wdXQgZGkgdGlwbyBmaWxlIHF1YWxvcmEgaWwgKipUeXBlKiogZGkgcXVlc3RvIGNvbXBvbmVudGUgZm9zc2UgKipmaWxlKiogKi9cclxuICAgIEBWaWV3Q2hpbGQoXCJmaWxlSW5wdXRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGRpIHNjYXJpY2FyZSBsJ2V2ZW50dWFsZSBmaWxlIHByZXNlbnRlIHF1YWxvcmEgaWwgKipUeXBlKiogZGkgcXVlc3RvIGNvbXBvbmVudGUgZm9zc2UgKipmaWxlKiogKi9cclxuICAgIEBJbnB1dCgpIEFsbG93RG93bmxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBNb2RlbGxvIHR5cGVzY3JpcHQgZGkgYmluZCBkZWkgZmlsZSAqL1xyXG4gICAgTW9kZWxGaWxlOiBBcHBGaWxlO1xyXG5cclxuICAgIC8qKiBVdGlsaXp6YXRhIG5lbCBmb3JtLWFkYXB0ZXIgcGVyIHNwZWNpZmljYXJlIGxhIHByZWNpc2lvbmUgZGVnbGkgaW5wdXQgY3VycmVuY3ltYXAgKFR5cGU6IGN1cnJlbmN5KSAqL1xyXG4gICAgQElucHV0KCkgUHJlY2lzaW9uOiBudW1iZXIgPSAyO1xyXG5cclxuICAgIC8qKiBBbGxpbmVhbWVudG8gZGVsbGEgY3VycmVuY3kgbWFzayAqL1xyXG4gICAgQElucHV0KCkgQWxpZ25tZW50OiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcclxuXHJcbiAgICAvKiogRnVuemlvbmUgZGkgcmljZXJjYSBjaGUgdmVycsOgIGNoaWFtYXRhIGRhbCBjb21wb25lbnRlICovXHJcbiAgICBASW5wdXQoKSBTZWFyY2hGdW5jdGlvbjogKHNlYXJjaDogc3RyaW5nLCBieWlkOiBib29sZWFuKSA9PiBPYnNlcnZhYmxlPHsgaWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyB9W10+ID0gbnVsbDtcclxuXHJcbiAgICAvKiogTnVtZXJvIG1pbmltbyBkaSBjYXJhdHRlcmkgY29uIGN1aSBjZXJjYXJlICovXHJcbiAgICBASW5wdXQoKSBNaW5DaGFyczogbnVtYmVyID0gMztcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIGkgY29udHJvbGxpIGRldm9ubyBlc3NlcmUgZWZmZXR0dWF0aSB0ZW5lbmRvIGNvbnRvIGRlbCBDYXNlIG8gbWVuby4gVmFsZSBzb2xvIHF1YWxvcmEgbGEgKipTb3VyY2UqKiBmb3NzZSBmb3JuaXRhICovXHJcbiAgICBASW5wdXQoKSBDYXNlU2Vuc2l0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIE9wemlvbmkgc3BlY2lmaWNoZSBwZXIgaWwgY29tcG9uZW50ZSBjaGUgc2kgdmEgYSB2aXN1YWxpenphcmUuIEVzLiBwZXIgaSB0aXBpIGRhdGU6IHsgSnNEYXRlczogdHJ1ZSB9ICovXHJcbiAgICBASW5wdXQoKSBPcHRpb25zOiB7IFtpZCBpbiBBdmFpbGFibGVPcHRpb25zXT86IGFueSB9ID0ge307XHJcblxyXG4gICAgLyoqIFZhcmlhYmlsZSBpbnRlcm5hIGNoZSBnZXN0aXNjZSBzZSBlZmZldHR1YXJlIGlsIHJpYWxsaW5lYW1lbnRvIGRlaSBkYXRpIG8gbWVubyAqL1xyXG4gICAgcHJpdmF0ZSBhbGlnblZhbHVlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGlnbm9yYXJlIGlsIHByb3NzaW1vIGV2ZW50byB3cml0ZVZhbHVlIGNoZSBub3JtYWxtZW50ZSBkb3ZyZWJiZSByaWNoaWVkZXJlIGxhIG51b3ZhIHNvdXJjZS4gU2VydmUgcGVyIHF1YW5kbyBsJ3V0ZW50ZSBzZWxlemlvbmEgdW4gZWxlbWVudG86XHJcbiAgICAgKiBTdWJpdG8gZG9wbyBwYXJ0aXJlYmJlIHVuIGFsdHJvIGV2ZW50byBtb2RlbENoYW5nZSBjaGUgcmljYXJpY2hlcmViYmUgbnVvdmFtZW50ZSBsYSBzb3VyY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpZ25vcmVOZXh0V3JpdGVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBDYWNoZSBkZWxsYSBzb3JnZW50ZSBvcmlnaW5hbGUgUE9TVCBiaW5kaW5nLCBpbiBtb2RvIGRhIHBvdGVyIGZhcmUgZmlsdHJpIGluIGxvY2FsZSBxdWFsb3JhIGxhICoqU2VhcmNoRnVuY3Rpb24qKiBub24gZm9zc2UgZGVmaW5pdGEgZSBsYSAqKlNvdXJjZSoqIGZvc3NlIGFzc2VnbmF0YSAqL1xyXG4gICAgcHVibGljIEZpbHRlcmVkQm91bmRTb3VyY2U6IHsgaWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyB9W10gPSBbXTtcclxuXHJcbiAgICAvKiogU29sbyBwZXIgZ2xpIGlucHV0IGRpIHRpcG8gXCJkYXRlXCIuIENhcGlzY2UgY2hlIG1vZGFsaXTDoCB1c2FyZSBwZXIgaWwgdmFsaWRhdGlvbi1kYXRlIHNvdHRvc3RhbnRlICovXHJcbiAgICBwdWJsaWMgdXNlSnNEYXRlczogYm9vbGVhbiA9IG51bGw7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgICovXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHV0aUV4dHM6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGRhdGVzRXh0czogRGF0ZVNlcnZpY2UsIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IE5neE1hdERhdGVBZGFwdGVyPGFueT4sIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREU6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSk7XHJcblxyXG4gICAgICAgIHRoaXMuTW9kZWxGaWxlID0gbmV3IEFwcEZpbGUoKTtcclxuICAgICAgICB0aGlzLlVzZVVzZXJWYWxpZGF0b3JzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIEludFBhdHRlcm4gPSAnXlswLTldXFxcXGQqJCc7XHJcbiAgICBwdWJsaWMgRmxvYXRQYXR0ZXJuID0gJ14oWzAtOV0qWyxdKT9bMC05XSskJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE52bCBjb24gdW4gbWluaW1vIGRpIHNlbnNvXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsb3JlIGJhc2VcclxuICAgICAqIEBwYXJhbSBpZm5vZCBWYWxvcmUgZGEgdXNhcmUgc2UgKip2YWx1ZSoqIMOoIG51bGxvIG8gdW5kZWZpbmVkXHJcbiAgICAgKiBAcmV0dXJucyBJbCB2YWxvcmUgcHJlc28gZnJhIGkgZHVlIGRpc3BvbmliaWxpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbnZsPFQ+KHZhbHVlOiBULCBpZm5vZDogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZCA/IGlmbm9kIDogdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgICAgIC8vIEFzc2VnbmF6aW9uZSBPcHppb25pIGRhIG9nZ2V0dG9cclxuICAgICAgICBpZih0aGlzLk9wdGlvbnMpe1xyXG4gICAgICAgICAgICB0aGlzLnVzZUpzRGF0ZXMgPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LkpzRGF0ZXMsIHRoaXMudXNlSnNEYXRlcyk7O1xyXG4gICAgICAgICAgICB0aGlzLkNhc2VTZW5zaXRpdmUgPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/LkNhc2VTZW5zaXRpdmUsIHRoaXMuQ2FzZVNlbnNpdGl2ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuTWluQ2hhcnMgPSB0aGlzLm52bCh0aGlzLk9wdGlvbnM/Lk1pbkNoYXJzLCB0aGlzLk1pbkNoYXJzKTtcclxuICAgICAgICAgICAgdGhpcy5TZWFyY2hGdW5jdGlvbiA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uU2VhcmNoRnVuY3Rpb24sIHRoaXMuU2VhcmNoRnVuY3Rpb24pO1xyXG4gICAgICAgICAgICB0aGlzLkFsaWdubWVudCA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uQWxpZ25tZW50LCB0aGlzLkFsaWdubWVudCk7XHJcbiAgICAgICAgICAgIHRoaXMuUHJlY2lzaW9uID0gdGhpcy5udmwodGhpcy5PcHRpb25zPy5QcmVjaXNpb24sIHRoaXMuUHJlY2lzaW9uKTtcclxuICAgICAgICAgICAgdGhpcy5BbGxvd0Rvd25sb2FkID0gdGhpcy5udmwodGhpcy5PcHRpb25zPy5BbGxvd0Rvd25sb2FkLCB0aGlzLkFsbG93RG93bmxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLkFkanVzdE51bWJlciA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uQWRqdXN0TnVtYmVyLCB0aGlzLkFkanVzdE51bWJlcik7XHJcbiAgICAgICAgICAgIHRoaXMuUGF0dGVybiA9IHRoaXMubnZsKHRoaXMuT3B0aW9ucz8uUGF0dGVybiwgdGhpcy5QYXR0ZXJuKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICAvLyBFc2NsdXNpIGkgdmFsaWRhdG9yaSBhIGNvbXBvbmVudGlcclxuICAgICAgICAgICBsZXQgdmFsaWRhdG9ycyA9IFsuLi4odGhpcy5fdmFsaWRhdG9ycyB8fCBbXSldLmZpbHRlcih2ID0+ICF2Lm5nT25Jbml0KTtcclxuXHJcbiAgICAgICAgICAgdmFyIHB2ID0gbmV3IFBhdHRlcm5WYWxpZGF0b3IoKTtcclxuICAgICAgICAgICBzd2l0Y2ggKHRoaXMuVHlwZSkge1xyXG4gICAgICAgICAgICAgICBjYXNlICdpbnQnOlxyXG4gICAgICAgICAgICAgICAgICAgcHYucGF0dGVybiA9IHRoaXMuUGF0dGVybiB8fCB0aGlzLkludFBhdHRlcm47XHJcbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHYpO1xyXG4gICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcclxuICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICAgICAgICAgICAgIHB2LnBhdHRlcm4gPSB0aGlzLlBhdHRlcm4gfHwgdGhpcy5GbG9hdFBhdHRlcm47XHJcbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHYpO1xyXG4gICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5QYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcHYucGF0dGVybiA9IHRoaXMuUGF0dGVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHYpO1xyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgICg8YW55PnB2KS5fdmFsaWRhdG9yID0gKDxhbnk+cHYpLmNyZWF0ZVZhbGlkYXRvcihwdi5wYXR0ZXJuKTtcclxuICAgICAgICAgICAoPGFueT50aGlzLm5nQ29udHJvbCkuX3NldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGNvbnN0IG5ld1R5cGUgPSBjaGFuZ2VzW1wiVHlwZVwiXTtcclxuXHJcbiAgICAgICAgaWYgKG5ld1NvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcblxyXG4gICAgICAgICAgICAvLyBQcmltYSBhc3NlZ25hemlvbmUgc2UgY2FtYmlhIGxhIHNvdXJjZSBzb3R0byAocXVpbmRpIHNlIHZpZW5lIGJpbmRhdGEgZGlyZXR0YW1lbnRlIGRhIEhUTUwpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLlR5cGUgPT0gXCJhdXRvY29tcGxldGVcIiAmJiAodGhpcy5Nb2RlbD8ubGVuZ3RoIHx8IDApID49IHRoaXMuTWluQ2hhcnMgJiYgIXRoaXMuU2VhcmNoRnVuY3Rpb24pXHJcbiAgICAgICAgICAgICAgICB0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2UgPSB0aGlzLkJvdW5kU291cmNlO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2UgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5ld1R5cGUgJiYgdGhpcy5Nb2RlbClcclxuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuTW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGlnblZhbHVlcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqPy50b1N0cmluZygpIHx8IFwiXCI7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5UeXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuVHlwZSA9IFwic3RyaW5nXCI7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5UeXBlID09IFwiZGF0ZVwiIHx8IHRoaXMuVHlwZSA9PSBcImRhdGV0aW1lXCIpIHtcclxuICAgICAgICAgICAgdGhpcy51c2VKc0RhdGVzID0gdGhpcy51c2VKc0RhdGVzID09IG51bGwgPyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIgOiB0aGlzLnVzZUpzRGF0ZXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlR5cGUgPT0gXCJkYXRlXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5kYXRlc0V4dHMuZ2V0Rm9ybWF0dGVkKG9iaiwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5UeXBlID09IFwiZGF0ZXRpbWVcIilcclxuICAgICAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLmRhdGVzRXh0cy5nZXRGb3JtYXR0ZWQob2JqLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLlR5cGUgPT0gXCJmbG9hdFwiIHx8IHRoaXMuVHlwZSA9PSBcIm51bWJlclwiKSAmJiBvYmopIHtcclxuICAgICAgICAgICAgb2JqID0gb2JqLnRvU3RyaW5nKCkucmVwbGFjZShcIi5cIiwgXCIsXCIpO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQZXIgc2ljdXJlenphIHJpYWxsaW5lbyBpIHZhbG9yaVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVHlwZSA9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBvYmogPSBvYmogPyAob2JqID09PSB0cnVlIHx8IG9iai50b0xvd2VyQ2FzZSgpID09IFwidHJ1ZVwiKSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWduVmFsdWVzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMubGMubG9jKG9iaiA/ICdTw6wnIDogJ05vJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVHlwZSA9PSBcInRpbWVcIikge1xyXG4gICAgICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gKG9iaiB8fCBcIjAwOjAwOjAwXCIpLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICAgICAgb2JqID0gZGF5anMoKS5ob3VyKHBhcnNlSW50KGhvdXJzID8/IDApKS5taW51dGUocGFyc2VJbnQobWludXRlcyA/PyAwKSkuc2Vjb25kKHBhcnNlSW50KHNlY29uZHMgPz8gMCkpO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gYCR7aG91cnMgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVHlwZSA9PSBcImZpbGVcIikge1xyXG4gICAgICAgICAgICBvYmogPSB0aGlzLk1vZGVsRmlsZTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuTW9kZWxGaWxlLmZpbGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlR5cGUgPT0gXCJhdXRvY29tcGxldGVcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5TZWFyY2hGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWFyY2hGdW5jdGlvbihvYmosIHRydWUpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZSA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnlCaW5kU291cmNlRGlzcGxheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmZpbmFsaXplVmFsdWUob2JqKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmFsaXplVmFsdWUob2JqKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkJvdW5kU291cmNlICYmIHRoaXMuQm91bmRTb3VyY2UubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuQm91bmRTb3VyY2UuZmluZCh0ID0+IHQuaWQgPT0gb2JqKT8uZGVzY3JpcHRpb247XHJcblxyXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWxpZ25WYWx1ZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdG8gdW4gdmFsb3JlIHZlcmlmaWNhIHNlIHB1w7IgcmVzdGl0dWlyZSBsZSBpbmZvcm1hemlvbmkgdHJvdmF0ZSBpbiAqKlNvdXJjZSoqIGNvbiBpZCB1Z3VhbGUgYSAqKnZhbHVlKiogbyBzZSBkZXZlIHJlc3RpdHVpcmUgaWwgdmFsb3JlIGluIHNlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSB2YWx1ZSBWYWxvcmUgc2NyaXR0byBuZWxsJ2lucHV0IGRpIHRlc3RvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmluYWxpemVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdmFyIHZhbCA9IHRoaXMuU291cmNlLmZpbmQodCA9PiB0LmlkID09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh2YWwgPyB2YWwuaWQgOiB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5Nb2RlbCA9IHZhbCA/IHZhbC5kZXNjcmlwdGlvbiA6IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLk1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIGRpIGZpbHRybyBkZWxsYSBzb3JnZW50ZSBkYXRpIGluIGJhc2UgYWxsJ2lucHV0IHV0ZW50ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgSW5wdXQgdXRlbnRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWx0ZXJTb3VyY2UoZXZlbnQ/OiBDaGFuZ2VFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlnbm9yZU5leHRXcml0ZVZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTmV4dFdyaXRlVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUXVhbmRvIGZpbHRybyBsYSBzb3VyY2UsIHNlIG5vbiBkZXZvIGlnbm9yYXJlIGwnZXZlbnRvIGRldm8gY29tdW5xdWUgYXNzaWN1cmFybWkgZGkgaW1wb3N0YXJlIGlsIHZhbG9yZSBzZWxlemlvbmF0byBhIG51bGxcclxuICAgICAgICBzdXBlci5jaGFuZ2VkKG51bGwpO1xyXG5cclxuICAgICAgICBpZiAoIWV2ZW50ICYmIHRoaXMuTWluQ2hhcnMgPT0gMCAmJiAhdGhpcy5TZWFyY2hGdW5jdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2UgPSB0aGlzLkJvdW5kU291cmNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LnZhbHVlLmxlbmd0aCA8IHRoaXMuTWluQ2hhcnMpIHtcclxuICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gW107XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5TZWFyY2hGdW5jdGlvbiAmJiAoIXRoaXMuU291cmNlIHx8IHRoaXMuU291cmNlLmxlbmd0aCA9PSAwKSlcclxuICAgICAgICAgICAgdGhyb3cgXCJJbXBvc3NpYmlsZSBmaWx0cmFyZSBnbGkgZWxlbWVudGkgc2VuemEgdW5hIGZ1bnppb25lIGRpIHJpY2VyY2EgY2hlIHJlc3RpdHVpc2NhIHVuYSBsaXN0YSBkaSB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5TZWFyY2hGdW5jdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwiZmlsdGVyc291cmNlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2VhcmNoRnVuY3Rpb24oZXZlbnQudmFsdWUsIGZhbHNlKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb3VyY2UgPSB0O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJbiBxdWVzdG8gY2FzbyDDqCBnacOgIGZpbHRyYXRhIGRhbGxhIFNlYXJjaEZ1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gdGhpcy5Cb3VuZFNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbHRlcmVkU291cmNlT25EZXNjcmlwdGlvblNlbGVjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIDQwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwiZmlsdGVyc291cmNlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIEluIHF1ZXN0byBjYXNvIGRldm8gZmlsdHJhcmUgaW8gaW4gbWVtb3JpYVxyXG4gICAgICAgICAgICAgICAgdGhpcy5GaWx0ZXJlZEJvdW5kU291cmNlID0gdGhpcy5Cb3VuZFNvdXJjZS5maWx0ZXIodCA9PiAodGhpcy5DYXNlU2Vuc2l0aXZlICYmIHQuZGVzY3JpcHRpb24uaW5jbHVkZXMoZXZlbnQudmFsdWUpKSB8fCAoIXRoaXMuQ2FzZVNlbnNpdGl2ZSAmJiB0LmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudmFsdWUudG9Mb3dlckNhc2UoKSkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsdGVyZWRTb3VyY2VPbkRlc2NyaXB0aW9uU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcmVtb3ZlRmlsdGVyZWRTb3VyY2VPbkRlc2NyaXB0aW9uU2VsZWN0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2UubGVuZ3RoID09IDEgJiYgKHRoaXMuRmlsdGVyZWRCb3VuZFNvdXJjZVswXS5kZXNjcmlwdGlvbiA9PT0gdGhpcy5Nb2RlbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5Nb2RlbCA9IHRoaXMuQm91bmRTb3VyY2VbMF0uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLkJvdW5kU291cmNlWzBdLmRlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLkZpbHRlcmVkQm91bmRTb3VyY2UgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIE1ldG9kbyByaWNoaWFtYXRvIHF1YW5kbyB2aWVuZSBtb2RpZmljYXRvIGlsIG1vZGVsbG8gZGVsIGNhbXBvIGRpIGlucHV0ICovXHJcbiAgICBjaGFuZ2VkKGV2ZW50PzogQ2hhbmdlRXZlbnQpIHtcclxuICAgICAgICB2YXIgdG9FbWl0ID0gdGhpcy5nZXRNb2RlbFRvRW1pdCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5UeXBlID09IFwiYXV0b2NvbXBsZXRlXCIpXHJcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTmV4dFdyaXRlVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWl0UGVuZGluZ0NoYW5nZXMpXHJcbiAgICAgICAgICAgIHN1cGVyLmNoYW5nZWQodG9FbWl0LCBmYWxzZSwgZmFsc2UsIGV2ZW50Py5pbnRlcm5hbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGZpbmFsaXplZCgpIHtcclxuICAgICAgICBzdXBlci5maW5hbGl6ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogTWV0b2RvIHJpY2hpYW1hdG8gcXVhbmRvIHZpZW5lIHNlbGV6aW9uYXRvIGlsIGNhbXBvIGNvbCBtb3VzZSAqL1xyXG4gICAgZm9jdXNlZChldmVudDogYW55KSB7XHJcbiAgICAgICAgc3VwZXIuZm9jdXNlZChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVmZmV0dHVhIGdsaSBhZ2dpdXN0YW1lbnRpIGRhdGkgZGVsIGNhc28gZWQgZW1ldHRlIGlsIG1vZGVsbG8gY29ycmV0dG8gKi9cclxuICAgIHByaXZhdGUgZ2V0TW9kZWxUb0VtaXQoKSB7XHJcbiAgICAgICAgdmFyIHRvRW1pdCA9IHRoaXMuTW9kZWwgP1xyXG4gICAgICAgICAgICAodGhpcy5UeXBlID09IFwidGltZVwiIHx8IHRoaXMudXNlSnNEYXRlcyA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmNsb25lKHRoaXMuZGF0ZXNFeHRzLmdldERhdGVDb252ZXJ0aW9uKHRoaXMuTW9kZWwpKVxyXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuTW9kZWwpKSlcclxuICAgICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuVHlwZSA9PSBcImZsb2F0XCIgfHwgdGhpcy5UeXBlID09IFwibnVtYmVyXCIpICYmIHRvRW1pdCkge1xyXG4gICAgICAgICAgICBpZih0aGlzLkFkanVzdE51bWJlcilcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC5yZXBsYWNlKFwiLlwiLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b0VtaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVHlwZSA9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0aGlzLmxjLmxvYyh0b0VtaXQgPyAnWWVzJyA6ICdObycpOztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5UeXBlID09IFwidGltZVwiKSB7XHJcbiAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC5mb3JtYXQoXCJISDptbTpzc1wiKTtcclxuICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRvRW1pdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHRoaXMuVHlwZSA9PSBcImRhdGVcIiB8fCB0aGlzLlR5cGUgPT0gXCJkYXRldGltZVwiKSAmJiB0aGlzLnVzZUpzRGF0ZXMpIHtcclxuICAgICAgICAgICAgdG9FbWl0ID0gdG9FbWl0LnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5kYXRlc0V4dHMuZ2V0Rm9ybWF0dGVkKHRoaXMuTW9kZWwsIHRoaXMuVHlwZSA9PSBcImRhdGVcIiwgdGhpcy5UeXBlID09IFwiZGF0ZXRpbWVcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdG9FbWl0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIHBlciBnZXN0aXJlIGxhIG1vZGlmaWNhIGRlbCBmaWxlIGF0dHVhbG1lbnRlIGJpbmRhdG8uIE92dmlhbWVudGUgZnVuemlvbmEgc29sbyBxdWFsb3JhIGlsICoqVHlwZSoqIGZvc3NlICoqZmlsZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2xlYXIgSW5kaWNhIHNlIGJpc29nbmEgc3Z1b3RhcmUgbCdpbnB1dCBvIG1lbm8gXHJcbiAgICAgKi9cclxuICAgIGZpbGVDaGFuZ2UoY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGxldCBmaWxlczogRmlsZVtdID0gW107XHJcbiAgICAgICAgbGV0IG1vZGVsID0gKDxBcHBGaWxlPnRoaXMuTW9kZWwpO1xyXG4gICAgICAgIGxldCBuZTogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoY2xlYXIpIHtcclxuICAgICAgICAgICAgbW9kZWwuZmlsZW5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBuZS52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lLmZpbGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZmlsZXMucHVzaChuZS5maWxlcy5pdGVtKGkpKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChuZS5maWxlcy5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIG1vZGVsLmZpbGVuYW1lID0gbmUuZmlsZXNbMF0ubmFtZTtcclxuICAgICAgICAgICAgaWYgKG5lLmZpbGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICBtb2RlbC5maWxlbmFtZSA9IG5lLmZpbGVzLmxlbmd0aCArIFwiIFwiICsgdGhpcy5sYy5sb2MoXCJGaWxlcyBTZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgbW9kZWwubmF0aXZlZmlsZXMgPSBmaWxlcztcclxuICAgICAgICAgICAgbW9kZWwuZmlsZWI2NCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSBzY2FyaWNhcmUgaWwgZmlsZSBjb2xsZWdhdG8gYWxsJ2V2ZXRudWFsZSBmaWxlIGlucHV0IHJhcHByZXNlbnRhdG8gZGEgcXVlc3RvIGNvbXBvbmVudGUgKi9cclxuICAgIGRvd25sb2FkQXR0YWNobWVudCgpIHtcclxuICAgICAgICBsZXQgbW9kZWwgPSAoPEFwcEZpbGU+dGhpcy5Nb2RlbCk7XHJcbiAgICAgICAgdGhpcy51dGlFeHRzLnNhdmVGaWxlKG1vZGVsLmZpbGViNjQsIG1vZGVsLmZpbGVuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgb25Ob3ROdWxsVmFsdWVTZXQoKTogdm9pZCB7IH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqIEZ1bnppb25lIGRpIHRocm90dGxpbmcgcGVyIG5vbiBzcGFtbWFyZSByaWNoaWVzdGUgaW4gY2FzbyBkaSBhbmltYXppb25pIGF0dGl2YXRlXHJcbiAgICAvL1RPRE86IHNwb3N0YXJsYSBpbiB1biBtZXRvZG8gZGkgdXRpbGl0w6AgKGVzZmFlbnphL2V4dGVuc2lvbnMpXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBleGVjdXRpb25UaW1lcnM6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgLy9TZSBobyBsYSBmdW56aW9uZSBjaGUgdnVvbGUgZXNlZ3VpcmUgcmlwdWxpc2NvIHF1ZWwgdGltZW91dFxyXG4gICAgICAgIGlmICh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pO1xyXG5cclxuICAgICAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICAgICAgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7IGZ1bmMoKTsgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gbnVsbDsgfSwgdGhyb3R0bGVUaW1lKTtcclxuICAgIH1cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIVR5cGVcIiBjbGFzcz1cImFwcC1tYXJnaW4tdG9wLTVcIj5cclxuICAgICAgICA8ZW0+e3tUeXBlTWlzc2luZ01lc3NhZ2V9fTwvZW0+XHJcbiAgICA8L2Rpdj5cclxuICAgXHJcbiAgICAgPCEtLVNlIGN1cnJlbmN5LS0+XHJcbiAgICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2N1cnJlbmN5J1wiPlxyXG4gICAgICAgIDx2YWwtY3VycmVuY3kgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIiBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiXHJcbiAgICAgICAgW0N1cnJlbmN5T3B0aW9uc109XCJ7IHByZWZpeDogJycsIHRob3VzYW5kczogJy4nLCBkZWNpbWFsOiAnLCcsIHByZWNpc2lvbjogUHJlY2lzaW9uLCBhbGlnbjogQWxpZ25tZW50IH1cIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIiBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWN1cnJlbmN5PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgZGF0YS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgPHZhbC1kYXRlICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtpZF09XCJHZW5lcmF0ZWROYW1lXCIgW3VzZUpzRGF0ZXNdPVwidXNlSnNEYXRlc1wiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCRldmVudCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSBzdHJpbmdhLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAnc3RyaW5nJ1wiPlxyXG4gICAgICAgIDx2YWwtaW5wdXQgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIiBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJ7e1BhdHRlcm4gfHwgJyd9fVwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChpbnB1dENoYW5nZSk9XCJjaGFuZ2VkKCRldmVudCk7XCIgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiPjwvdmFsLWlucHV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgbnVtZXJvLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAnZmxvYXQnIHx8IFR5cGUgPT0gJ251bWJlcidcIj5cclxuICAgICAgICA8dmFsLWlucHV0ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwie3tQYXR0ZXJuIHx8IEZsb2F0UGF0dGVybn19XCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cIlBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtpZF09XCJHZW5lcmF0ZWROYW1lXCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KTtcIiAoaW5wdXRGb2N1cyk9XCJmb2N1c2VkKCRldmVudCk7XCIgKGlucHV0RmluYWxpemVkKT1cImZpbmFsaXplZCgpXCI+PC92YWwtaW5wdXQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSBudW1lcm8gaW50ZXJvLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAnaW50J1wiPlxyXG4gICAgICAgIDx2YWwtaW5wdXQgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIiBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJ7e1BhdHRlcm4gfHwgSW50UGF0dGVybn19XCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cIlBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtpZF09XCJHZW5lcmF0ZWROYW1lXCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KTtcIiAoaW5wdXRGb2N1cyk9XCJmb2N1c2VkKCRldmVudCk7XCIgKGlucHV0RmluYWxpemVkKT1cImZpbmFsaXplZCgpXCI+PC92YWwtaW5wdXQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1TZSBib29sZWFuLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibS10LTVcIiAqbmdJZj1cIlR5cGUgPT0gJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgPGlucHV0ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbcmVhZG9ubHldPVwiUmVhZG9ubHlcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImFwcC1wb2ludGVyXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIGlkPVwie3tHZW5lcmF0ZWROYW1lfX1cIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VkKCk7IGZpbmFsaXplZCgpO1wiIChjbGljayk9XCJmb2N1c2VkKCRldmVudCk7XCIgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIGVudW0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICdlbnVtJ1wiPlxyXG4gICAgICAgIDx2YWwtc2VsZWN0ICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIiBbRm9jdXNTdWJqZWN0XT1cIkZvY3VzU3ViamVjdFwiIFtTZXRWYWxpZGF0aW9uU3ViamVjdF09XCJTZXRWYWxpZGF0aW9uU3ViamVjdFwiIFtGaWVsZEFwcGVhcmVuY2VdPVwiRmllbGRBcHBlYXJlbmNlXCIgW2ZvcmNlSW52YWxpZF09XCJGb3JjZWRFcnJvclwiIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCIgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiBbcGxhY2VIb2xkZXJWYWx1ZV09XCInJ1wiIFtwbGFjZWhvbGRlcl09XCJSZXF1aXJlZCA/ICgnU2VsZWN0JyB8IGxvY2FsaXplIDogbGMpICsgJy4uLicgOiBQbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFsobmdNb2RlbCldPVwiTW9kZWxcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpO1wiIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIiAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIiBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWwgb2YgQm91bmRTb3VyY2VcIiBbdmFsdWVdPVwidmFsLmlkXCI+e3t2YWwuZGVzY3JpcHRpb259fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvdmFsLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIGF1dG9jb21wbGV0ZS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2F1dG9jb21wbGV0ZSdcIj5cclxuICAgICAgICA8dmFsLWF1dG9jb21wbGV0ZSAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIiBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiIFtSZWFkb25seV09XCJSZWFkb25seVwiIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cIlJlcXVpcmVkID8gKCdTZWxlY3QnIHwgbG9jYWxpemUgOiBsYykgKyAnLi4uJyA6IFBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtpZF09XCJHZW5lcmF0ZWROYW1lXCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCIgW0ZpbHRlcmVkU291cmNlXT1cIkZpbHRlcmVkQm91bmRTb3VyY2VcIiAoaW5wdXRDaGFuZ2UpPVwiZmlsdGVyU291cmNlKCRldmVudCk7IGNoYW5nZWQoJGV2ZW50KTtcIiAoaW5wdXRGb2N1cyk9XCJmb2N1c2VkKCRldmVudCk7XCIgKGlucHV0RmluYWxpemVkKT1cImZpbmFsaXplZCgpXCI+PC92YWwtYXV0b2NvbXBsZXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgZGF0ZSB0aW1lLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiVHlwZSA9PSAnZGF0ZXRpbWUnXCI+XHJcbiAgICAgICAgPHZhbC1kYXRldGltZSAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIiBbRmxvYXRpbmdMYWJlbF09XCJGbG9hdGluZ0xhYmVsXCIgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIiBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIiBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiIFt1c2VKc0RhdGVzXT1cInVzZUpzRGF0ZXNcIiBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpO1wiIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIiAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIj48L3ZhbC1kYXRldGltZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNlIHRpbWUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJUeXBlID09ICd0aW1lJ1wiPlxyXG4gICAgICAgIDxuZ3gtbWF0LXRpbWVwaWNrZXIgbmFtZT1cInZhbC10aW1lXCIgI2VsZW1lbnRSZWYgI2Jhc2VJbnB1dD1cIm5nTW9kZWxcIiBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgW2Rpc2FibGVkXT1cIlJlYWRvbmx5XCJcclxuICAgICAgICBbc2hvd1NwaW5uZXJzXT1cImZhbHNlXCIgW3N0ZXBIb3VyXT1cIjJcIiBbc3RlcE1pbnV0ZV09XCI1XCIgW3N0ZXBTZWNvbmRdPVwiMzBcIlxyXG4gICAgICAgIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgpXCIgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG4gICAgICAgIDwvbmd4LW1hdC10aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tU2UgZmlsZS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIlR5cGUgPT0gJ2ZpbGUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGZpbGUtdXBsb2FkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgpXCIgI2ZpbGVJbnB1dCBpZD1cInt7R2VuZXJhdGVkTmFtZX19XCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1idG4gYXBwLXBvaW50ZXJcIiBbbXVsdGlwbGVdPVwibnVsbFwiLz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2NsYXNzLmZybS1wYWRkaW5nLWxlZnQtMjJdPVwiQWxsb3dEb3dubG9hZCAmJiBNb2RlbEZpbGUuZmlsZW5hbWUgJiYgTW9kZWxGaWxlLmZpbGViNjRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2luZy1maWVsZFwiIHBsYWNlaG9sZGVyPVwie3snU2VsZWN0IGEgZmlsZScgfCBsb2NhbGl6ZSA6IGxjfX0uLi5cIiBbKG5nTW9kZWwpXT1cIk1vZGVsRmlsZS5maWxlbmFtZVwiIG5hbWU9XCJkc2ZpbGVcIiAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCIvPlxyXG4gICAgXHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZmEgZmEtZG93bmxvYWQgYXBwLXBvaW50ZXIgYXBwLWlucHV0LWljb25cIiAqbmdJZj1cIkFsbG93RG93bmxvYWQgJiYgTW9kZWxGaWxlLmZpbGVuYW1lICYmIE1vZGVsRmlsZS5maWxlYjY0XCIgKGNsaWNrKT1cImRvd25sb2FkQXR0YWNobWVudCgpXCI+PC9hPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzIGRlbGV0ZS1maWxlXCIgKGNsaWNrKT1cImZpbGVDaGFuZ2UodHJ1ZSlcIiAqbmdJZj1cIk1vZGVsRmlsZS5maWxlbmFtZVwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZpbGUtdXBsb2FkXCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -110,14 +110,14 @@ export class FormMultiSelectComponent extends BaseFormControl {
110
110
  /** @ignore Override per gestire input in uscita */
111
111
  changed() {
112
112
  let toEmit = null;
113
- if (!this.UseKeyValues && !this.UseCommaSeparatedList)
113
+ if (this.UseJsonList)
114
+ toEmit = JSON.stringify(this.Model.map(m => m.id));
115
+ else if (!this.UseKeyValues && !this.UseCommaSeparatedList)
114
116
  toEmit = this.Model.map(m => m.id);
115
117
  else if (this.UseKeyValues)
116
118
  toEmit = this.Model.map(m => ({ id: m.id, description: m.description }));
117
119
  else if (this.UseCommaSeparatedList)
118
120
  toEmit = this.Model.map(m => m.id).join(',');
119
- else if (this.UseJsonList)
120
- toEmit = JSON.stringify(this.Model.map(m => m.id));
121
121
  this.EvaluatedModel = this.Model.map(t => t.itemName).join(', ');
122
122
  super.changed(toEmit, false, true);
123
123
  super.finalized();
@@ -160,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
160
160
  }], UseJsonList: [{
161
161
  type: Input
162
162
  }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQUcvRTs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxlQUFlO0lBMkJ6RCwyQkFBMkI7SUFDM0IsWUFBWSxHQUFzQixFQUFTLEVBQXVCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQixFQUFzQyxjQUF3QjtRQUM1VyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFX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Q3BCLHVCQUF1QixDQUFDLE9BQU87OzBCQThCcUIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTRCLFFBQVE7OzBCQUE4QixRQUFROzswQkFBa0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzRDQWY3VSxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZUZvcm1Db250cm9sIH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jb250cm9sXCI7XHJcbmltcG9ydCB7IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9IGZyb20gXCIuL2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBjaGUgcGVybWV0dGUgZGkgZWZmZXR0dWFyZSB1bmEgc2VsZXppb25lIG11bHRpcGxhIGZyYSBnbGkgb2dnZXR0aSBwYXNzYXRpIG5lbGwnSW5wdXQgKipTb3VyY2UqKlxyXG4gKiBcclxuICogTi5COiBBbCBjb250cmFyaW8gZGVnbGkgYWx0cmkgY29tcG9uZW50aSBmb3JtLSogcXVlc3RvIHZpZW5lIHRlbnV0byBjb24gKipjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQqKiBpbiBxdWFudG8gaWwgY29tcG9uZW50ZSBcclxuICogdXRpbGl6emF0byBpbnRlcm5hbWVudGUgKGFuZ3VsYXIyLW11bHRpc2VsZWN0KSBub24gw6ggc3RhdG8gYXNzb2x1dGFtZW50ZSBwZW5zYXRvIHBlciBlc3NlcmUgdXNhdG8gY29uICoqQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoKipcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1tdWx0aXNlbGVjdFwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuY3NzXCJdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWxsbyB0ZW1wb3JhbmVvICoqTk9OKiogY29tcGF0aWJpbGUgaW4gbWFuaWVyYSBkaXJldHRhIGNvbiBpbCBjb21wb25lbnRlICoqYW5ndWxhcjItbXVsdGlzZWxlY3QqKiB1c2F0byBpbnRlcm5hbWVudGVcclxuICAgICAqIFxyXG4gICAgICogU2VydmUgZGEgYXBwb2dnaW8gcGVyIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBxdWFsb3JhIGxhIHNvcmdlbnRlIGNhbWJpYXNzZSBlIHF1YWxvcmEgKipSZWJpbmRNb2RlbEFmdGVyU291cmNlKiogZm9zc2UgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIFRtcE1vZGVsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHtpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nfVtdID0gW107XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBsYSBwcm9zc2ltYSBtb2RpZmljYSBhbGxhIFNvdXJjZSBkZXZlIGFuY2hlIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBkZWwgbW9kZWxsby4gU2VydmUgc2UgbGEgKipCb3VuZFNvdXJjZSoqIHBhc3NhIGRhIG5vbiBhdmVyZSBvZ2dldHRpIGFkIGF2ZXJuZSAqL1xyXG4gICAgcHJpdmF0ZSBSZWJpbmRNb2RlbEFmdGVyU291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZSAqL1xyXG4gICAgQElucHV0KCkgU2VsZWN0TGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgZ2VzdGlyZSBjb21lIG1vZGVsbG8gbm9uIHVuYSBsaXN0YSBkaSBjaGlhdmksIG1hIHVuYSBsaXN0YSBkaSBLZXlWYWx1ZSAqL1xyXG4gICAgQElucHV0KCkgVXNlS2V5VmFsdWVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBhbCBjb21wb25lbnRlIGRpIGVtZXR0ZXJlIHVuYSBsaXN0YSBkaSBjaGlhdmkgc2VwYXJhdGUgZGEgdmlyZ29sYSBwaXV0dG9zdG8gY2hlIHVuYSBsaXN0YSB2ZXJhIGUgcHJvcHJpYSBkaSBjaGlhdmkvS2V5VmFsdWUgKi9cclxuICAgIEBJbnB1dCgpIFVzZUNvbW1hU2VwYXJhdGVkTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgZWZmZXR0dWFyZSBsJ2VtaXQgY29tZSBsaXN0YSBkaSB2YWxvcmkgaW4gdW4gSnNvbiAqL1xyXG4gICAgQElucHV0KCkgVXNlSnNvbkxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW1wb3N0YXppb25pIGRlbCBjb21wb25lbnRlIGludGVybm8gKiphbmd1bGFyMi1tdWx0aXNlbGVjdCoqICovXHJcbiAgICBwdWJsaWMgU2V0dGluZ3M6IHsgc2VsZWN0QWxsVGV4dDogc3RyaW5nLCB1blNlbGVjdEFsbFRleHQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCBlbmFibGVDaGVja0FsbDogYm9vbGVhbiwgZGlzYWJsZWQ6IGJvb2xlYW4sIGxhYmVsS2V5OiBzdHJpbmcsIHRhZ1RvQm9keTogYm9vbGVhbiB9ID0gbnVsbDtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREUgOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IGRlaSBzZXR0aW5ncyBwZXIgZXZpdGFyZSBjaGUgc2lhbm8gbWFpIG51bGxpLCBhbHRyaW1lbnRpIGlsIGNhenpvIGRpIEN1cHBhTGFiIHNhbHRhIGluIGFyYWlhIGNoZSDDqCB2ZXJhbWVudGUgdW5hIGJlbGxlenphXHJcbiAgICAgICAgdGhpcy5ldmFsdWF0ZVNldHRpbmdzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLlRtcE1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWFkb25seSA9IGNoYW5nZXNbXCJSZWFkb25seVwiXTtcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MocmVhZG9ubHkgPyByZWFkb25seS5jdXJyZW50VmFsdWUgPz8gZmFsc2UgOiB0aGlzLlJlYWRvbmx5ID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml2ZSBpIG51b3ZpIHNldHRpbmdzIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgZGV2J2Vzc2VyZSBkaXNhYmlsaXRhdG8gbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXZhbHVhdGVTZXR0aW5ncyhkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdEFsbFRleHQ6IHRoaXMubGMubG9jKFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHVuU2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLlNlbGVjdExhYmVsIHx8IHRoaXMubGMubG9jKFwiU2VsZWN0IG9uZSBvciBtb3JlIHZhbHVlcy4uLlwiKSxcclxuICAgICAgICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICAgICAgbGFiZWxLZXk6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgdGFnVG9Cb2R5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgY29tb3BuZW50ZSBpbiBxdWVzdGlvbmUgw6ggaW4gZ3JhZG8gZGkgZ2VzdGlyZSBuZ0NvbnRyb2wgbnVsbGkuIFxyXG4gICAgICogSW4gcXVlc3RvIGNvbXBvbmVudGUgw6ggbm9ybWFsZSBjaGUgc2lhIGNvc8OsIHF1aW5kaSByZXN0aXR1aXNjZSBzZW1wbGljZW1lbnRlICoqdHJ1ZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSBnZXN0aXNjbyBuZ0NvbnRyb2wgbnVsbGksICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU51bGxOZ0NvbnRyb2woKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gaW5ncmVzc28gKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnlbXSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuVG1wTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgbGV0IHRvUGFzczogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZih0aGlzLlVzZUNvbW1hU2VwYXJhdGVkTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9ICg8c3RyaW5nPm9iaikuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5Vc2VKc29uTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoPHN0cmluZz5vYmopO1xyXG5cclxuICAgICAgICAvL1F1aSBhcnJpdmFubyBzb2xvIGdsaSBpZCwgbyB7aWQ6IHgsIGRlc2NyaXB0aW9uOiB5fSBpbiBjYXNvIHNvbm8gaW4gVXNlS2V5VmFsdWVzLCBcclxuICAgICAgICAvL2Rldm8gdGlyYXJlIGZ1b3JpIGdsaSBvZ2dldHRpIHJlbGF0aXZpIGUgcGlhenphcmxpIGNvbWUgbGlzdGEgcGVyIGlsIE1vZGVsXHJcbiAgICAgICAgaWYgKG9iaiAmJiBvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAoPGFueVtdPm9iaikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKG8gPT4gby5pZCA9PSAodGhpcy5Vc2VLZXlWYWx1ZXMgPyB0LmlkIDogdCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgdG9QYXNzLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuQm91bmRTb3VyY2UgfHwgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b1Bhc3MubWFwKHQgPT4gdC5kZXNjcmlwdGlvbikuam9pbignLCAnKTtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRvUGFzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGxldCB0b0VtaXQgPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5Vc2VLZXlWYWx1ZXMgJiYgIXRoaXMuVXNlQ29tbWFTZXBhcmF0ZWRMaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVXNlS2V5VmFsdWVzKVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+ICh7IGlkOiBtLmlkLCBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB9KSk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5Vc2VDb21tYVNlcGFyYXRlZExpc3QpXHJcbiAgICAgICAgICAgIHRvRW1pdCA9ICg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gbS5pZCkuam9pbignLCcpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVXNlSnNvbkxpc3QpXHJcbiAgICAgICAgICAgIHRvRW1pdCA9IEpTT04uc3RyaW5naWZ5KCg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gbS5pZCkpO1xyXG5cclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Nb2RlbC5tYXAodCA9PiB0Lml0ZW1OYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHN1cGVyLmNoYW5nZWQodG9FbWl0LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc3VwZXIuZmluYWxpemVkKCk7XHJcbiAgICB9XHJcbn0iLCI8IS0tIFVndWFsZSBpbiB0dXR0aSBpIGNvbXBvbmVudGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIUZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdmb3JtJ1wiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2lubGluZSdcIiBjbGFzcz1cImFwcC1pbmxpbmVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCIgY2xhc3M9XCJ7e0Zvcm1Hcm91cENsYXNzICsgKExhc3QgPyAnIGFwcC1tYXJnaW4tYm90dG9tLTAgYXBwLW1hcmdpbi1yaWdodC0wICcgOiAnJykgKyAoRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBEaXNwbGF5TW9kZSA/ICgnIGFwcC1pbmxpbmUtYmxvY2sgJyArICghTGFzdCA/ICdhcHAtbWFyZ2luLXJpZ2h0LTEwJyA6ICcnKSkgOiAnIGZvcm0tZ3JvdXAgcm93Jyl9fVwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17eyhEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWJvbGQgYXBwLW1hcmdpbi1ib3R0b20tMCcgOiBMYWJlbENvbFdpZHRoKSArIChEaXNwbGF5TW9kZSA/ICcgYXBwLWJvbGQnIDogJyBtLXQtNScpIH19XCI+e3tMYWJlbH19e3tSZXF1aXJlZCAmJiAhRGlzcGxheU1vZGUgPyAnKicgOiAnJ319e3tMYWJlbCA/IFwiOlwiIDogXCJcIn19PC9sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBJbmxpbmVTZXBhcmF0b3IgIT0gJydcIj57e0lubGluZVNlcGFyYXRvcn19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0Rpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtaW5saW5lLWJsb2NrJyA6IElucHV0Q29sV2lkdGh9fVwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TW9kZVRlbXBsYXRlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRpc3BsYXlNb2RlVGVtcGxhdGUsIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBFdmFsdWF0ZWRNb2RlbCB9XCI+PC9uZy1jb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgW2NsYXNzLm1zLXBsYWNlaG9sZGVyXT1cIiFNb2RlbCB8fCBNb2RlbC5sZW5ndGggPT0gMFwiIChjbGljayk9XCJmb2N1c2VkKCRldmVudClcIj5cclxuICAgICAgICA8YW5ndWxhcjItbXVsdGlzZWxlY3QgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJTZXR0aW5nc1wiIFtkYXRhXT1cIkJvdW5kU291cmNlXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3QpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25TZWxlY3RBbGwpPVwiY2hhbmdlZCgpO1wiXHJcbiAgICAgICAgICAgIChvbkRlU2VsZWN0QWxsKT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3RBbGwpPVwiTW9kZWwgPSBbXTsgY2hhbmdlZCgpO1wiPlxyXG4gICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQUcvRTs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxlQUFlO0lBMkJ6RCwyQkFBMkI7SUFDM0IsWUFBWSxHQUFzQixFQUFTLEVBQXVCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQixFQUFzQyxjQUF3QjtRQUM1VyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFX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Q3BCLHVCQUF1QixDQUFDLE9BQU87OzBCQThCcUIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTRCLFFBQVE7OzBCQUE4QixRQUFROzswQkFBa0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzRDQWY3VSxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZUZvcm1Db250cm9sIH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jb250cm9sXCI7XHJcbmltcG9ydCB7IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9IGZyb20gXCIuL2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBjaGUgcGVybWV0dGUgZGkgZWZmZXR0dWFyZSB1bmEgc2VsZXppb25lIG11bHRpcGxhIGZyYSBnbGkgb2dnZXR0aSBwYXNzYXRpIG5lbGwnSW5wdXQgKipTb3VyY2UqKlxyXG4gKiBcclxuICogTi5COiBBbCBjb250cmFyaW8gZGVnbGkgYWx0cmkgY29tcG9uZW50aSBmb3JtLSogcXVlc3RvIHZpZW5lIHRlbnV0byBjb24gKipjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQqKiBpbiBxdWFudG8gaWwgY29tcG9uZW50ZSBcclxuICogdXRpbGl6emF0byBpbnRlcm5hbWVudGUgKGFuZ3VsYXIyLW11bHRpc2VsZWN0KSBub24gw6ggc3RhdG8gYXNzb2x1dGFtZW50ZSBwZW5zYXRvIHBlciBlc3NlcmUgdXNhdG8gY29uICoqQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoKipcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1tdWx0aXNlbGVjdFwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuY3NzXCJdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWxsbyB0ZW1wb3JhbmVvICoqTk9OKiogY29tcGF0aWJpbGUgaW4gbWFuaWVyYSBkaXJldHRhIGNvbiBpbCBjb21wb25lbnRlICoqYW5ndWxhcjItbXVsdGlzZWxlY3QqKiB1c2F0byBpbnRlcm5hbWVudGVcclxuICAgICAqIFxyXG4gICAgICogU2VydmUgZGEgYXBwb2dnaW8gcGVyIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBxdWFsb3JhIGxhIHNvcmdlbnRlIGNhbWJpYXNzZSBlIHF1YWxvcmEgKipSZWJpbmRNb2RlbEFmdGVyU291cmNlKiogZm9zc2UgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIFRtcE1vZGVsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHtpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nfVtdID0gW107XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBsYSBwcm9zc2ltYSBtb2RpZmljYSBhbGxhIFNvdXJjZSBkZXZlIGFuY2hlIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBkZWwgbW9kZWxsby4gU2VydmUgc2UgbGEgKipCb3VuZFNvdXJjZSoqIHBhc3NhIGRhIG5vbiBhdmVyZSBvZ2dldHRpIGFkIGF2ZXJuZSAqL1xyXG4gICAgcHJpdmF0ZSBSZWJpbmRNb2RlbEFmdGVyU291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZSAqL1xyXG4gICAgQElucHV0KCkgU2VsZWN0TGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgZ2VzdGlyZSBjb21lIG1vZGVsbG8gbm9uIHVuYSBsaXN0YSBkaSBjaGlhdmksIG1hIHVuYSBsaXN0YSBkaSBLZXlWYWx1ZSAqL1xyXG4gICAgQElucHV0KCkgVXNlS2V5VmFsdWVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBhbCBjb21wb25lbnRlIGRpIGVtZXR0ZXJlIHVuYSBsaXN0YSBkaSBjaGlhdmkgc2VwYXJhdGUgZGEgdmlyZ29sYSBwaXV0dG9zdG8gY2hlIHVuYSBsaXN0YSB2ZXJhIGUgcHJvcHJpYSBkaSBjaGlhdmkvS2V5VmFsdWUgKi9cclxuICAgIEBJbnB1dCgpIFVzZUNvbW1hU2VwYXJhdGVkTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgZWZmZXR0dWFyZSBsJ2VtaXQgY29tZSBsaXN0YSBkaSB2YWxvcmkgaW4gdW4gSnNvbiAqL1xyXG4gICAgQElucHV0KCkgVXNlSnNvbkxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW1wb3N0YXppb25pIGRlbCBjb21wb25lbnRlIGludGVybm8gKiphbmd1bGFyMi1tdWx0aXNlbGVjdCoqICovXHJcbiAgICBwdWJsaWMgU2V0dGluZ3M6IHsgc2VsZWN0QWxsVGV4dDogc3RyaW5nLCB1blNlbGVjdEFsbFRleHQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCBlbmFibGVDaGVja0FsbDogYm9vbGVhbiwgZGlzYWJsZWQ6IGJvb2xlYW4sIGxhYmVsS2V5OiBzdHJpbmcsIHRhZ1RvQm9keTogYm9vbGVhbiB9ID0gbnVsbDtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREUgOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IGRlaSBzZXR0aW5ncyBwZXIgZXZpdGFyZSBjaGUgc2lhbm8gbWFpIG51bGxpLCBhbHRyaW1lbnRpIGlsIGNhenpvIGRpIEN1cHBhTGFiIHNhbHRhIGluIGFyYWlhIGNoZSDDqCB2ZXJhbWVudGUgdW5hIGJlbGxlenphXHJcbiAgICAgICAgdGhpcy5ldmFsdWF0ZVNldHRpbmdzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLlRtcE1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWFkb25seSA9IGNoYW5nZXNbXCJSZWFkb25seVwiXTtcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MocmVhZG9ubHkgPyByZWFkb25seS5jdXJyZW50VmFsdWUgPz8gZmFsc2UgOiB0aGlzLlJlYWRvbmx5ID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml2ZSBpIG51b3ZpIHNldHRpbmdzIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgZGV2J2Vzc2VyZSBkaXNhYmlsaXRhdG8gbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXZhbHVhdGVTZXR0aW5ncyhkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdEFsbFRleHQ6IHRoaXMubGMubG9jKFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHVuU2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLlNlbGVjdExhYmVsIHx8IHRoaXMubGMubG9jKFwiU2VsZWN0IG9uZSBvciBtb3JlIHZhbHVlcy4uLlwiKSxcclxuICAgICAgICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICAgICAgbGFiZWxLZXk6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgdGFnVG9Cb2R5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgY29tb3BuZW50ZSBpbiBxdWVzdGlvbmUgw6ggaW4gZ3JhZG8gZGkgZ2VzdGlyZSBuZ0NvbnRyb2wgbnVsbGkuIFxyXG4gICAgICogSW4gcXVlc3RvIGNvbXBvbmVudGUgw6ggbm9ybWFsZSBjaGUgc2lhIGNvc8OsIHF1aW5kaSByZXN0aXR1aXNjZSBzZW1wbGljZW1lbnRlICoqdHJ1ZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSBnZXN0aXNjbyBuZ0NvbnRyb2wgbnVsbGksICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU51bGxOZ0NvbnRyb2woKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gaW5ncmVzc28gKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnlbXSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuVG1wTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgbGV0IHRvUGFzczogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZih0aGlzLlVzZUNvbW1hU2VwYXJhdGVkTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9ICg8c3RyaW5nPm9iaikuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5Vc2VKc29uTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoPHN0cmluZz5vYmopO1xyXG5cclxuICAgICAgICAvL1F1aSBhcnJpdmFubyBzb2xvIGdsaSBpZCwgbyB7aWQ6IHgsIGRlc2NyaXB0aW9uOiB5fSBpbiBjYXNvIHNvbm8gaW4gVXNlS2V5VmFsdWVzLCBcclxuICAgICAgICAvL2Rldm8gdGlyYXJlIGZ1b3JpIGdsaSBvZ2dldHRpIHJlbGF0aXZpIGUgcGlhenphcmxpIGNvbWUgbGlzdGEgcGVyIGlsIE1vZGVsXHJcbiAgICAgICAgaWYgKG9iaiAmJiBvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAoPGFueVtdPm9iaikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKG8gPT4gby5pZCA9PSAodGhpcy5Vc2VLZXlWYWx1ZXMgPyB0LmlkIDogdCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgdG9QYXNzLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuQm91bmRTb3VyY2UgfHwgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b1Bhc3MubWFwKHQgPT4gdC5kZXNjcmlwdGlvbikuam9pbignLCAnKTtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRvUGFzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGxldCB0b0VtaXQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLlVzZUpzb25MaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSBKU09OLnN0cmluZ2lmeSgoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpKTtcclxuICAgICAgICBlbHNlIGlmICghdGhpcy5Vc2VLZXlWYWx1ZXMgJiYgIXRoaXMuVXNlQ29tbWFTZXBhcmF0ZWRMaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVXNlS2V5VmFsdWVzKVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+ICh7IGlkOiBtLmlkLCBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB9KSk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5Vc2VDb21tYVNlcGFyYXRlZExpc3QpXHJcbiAgICAgICAgICAgIHRvRW1pdCA9ICg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gbS5pZCkuam9pbignLCcpO1xyXG5cclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Nb2RlbC5tYXAodCA9PiB0Lml0ZW1OYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHN1cGVyLmNoYW5nZWQodG9FbWl0LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc3VwZXIuZmluYWxpemVkKCk7XHJcbiAgICB9XHJcbn0iLCI8IS0tIFVndWFsZSBpbiB0dXR0aSBpIGNvbXBvbmVudGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIUZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdmb3JtJ1wiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2lubGluZSdcIiBjbGFzcz1cImFwcC1pbmxpbmVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCIgY2xhc3M9XCJ7e0Zvcm1Hcm91cENsYXNzICsgKExhc3QgPyAnIGFwcC1tYXJnaW4tYm90dG9tLTAgYXBwLW1hcmdpbi1yaWdodC0wICcgOiAnJykgKyAoRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBEaXNwbGF5TW9kZSA/ICgnIGFwcC1pbmxpbmUtYmxvY2sgJyArICghTGFzdCA/ICdhcHAtbWFyZ2luLXJpZ2h0LTEwJyA6ICcnKSkgOiAnIGZvcm0tZ3JvdXAgcm93Jyl9fVwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17eyhEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWJvbGQgYXBwLW1hcmdpbi1ib3R0b20tMCcgOiBMYWJlbENvbFdpZHRoKSArIChEaXNwbGF5TW9kZSA/ICcgYXBwLWJvbGQnIDogJyBtLXQtNScpIH19XCI+e3tMYWJlbH19e3tSZXF1aXJlZCAmJiAhRGlzcGxheU1vZGUgPyAnKicgOiAnJ319e3tMYWJlbCA/IFwiOlwiIDogXCJcIn19PC9sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBJbmxpbmVTZXBhcmF0b3IgIT0gJydcIj57e0lubGluZVNlcGFyYXRvcn19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0Rpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtaW5saW5lLWJsb2NrJyA6IElucHV0Q29sV2lkdGh9fVwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TW9kZVRlbXBsYXRlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRpc3BsYXlNb2RlVGVtcGxhdGUsIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBFdmFsdWF0ZWRNb2RlbCB9XCI+PC9uZy1jb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgW2NsYXNzLm1zLXBsYWNlaG9sZGVyXT1cIiFNb2RlbCB8fCBNb2RlbC5sZW5ndGggPT0gMFwiIChjbGljayk9XCJmb2N1c2VkKCRldmVudClcIj5cclxuICAgICAgICA8YW5ndWxhcjItbXVsdGlzZWxlY3QgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJTZXR0aW5nc1wiIFtkYXRhXT1cIkJvdW5kU291cmNlXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3QpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25TZWxlY3RBbGwpPVwiY2hhbmdlZCgpO1wiXHJcbiAgICAgICAgICAgIChvbkRlU2VsZWN0QWxsKT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3RBbGwpPVwiTW9kZWwgPSBbXTsgY2hhbmdlZCgpO1wiPlxyXG4gICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -2635,6 +2635,7 @@ class FormAdaptiveComponent extends BaseFormControl {
2635
2635
  }
2636
2636
  break;
2637
2637
  }
2638
+ pv._validator = pv.createValidator(pv.pattern);
2638
2639
  this.ngControl._setValidators(validators);
2639
2640
  this.ngControl.control.setValidators(validators);
2640
2641
  this.ngControl.control.updateValueAndValidity();
@@ -3593,14 +3594,14 @@ class FormMultiSelectComponent extends BaseFormControl {
3593
3594
  /** @ignore Override per gestire input in uscita */
3594
3595
  changed() {
3595
3596
  let toEmit = null;
3596
- if (!this.UseKeyValues && !this.UseCommaSeparatedList)
3597
+ if (this.UseJsonList)
3598
+ toEmit = JSON.stringify(this.Model.map(m => m.id));
3599
+ else if (!this.UseKeyValues && !this.UseCommaSeparatedList)
3597
3600
  toEmit = this.Model.map(m => m.id);
3598
3601
  else if (this.UseKeyValues)
3599
3602
  toEmit = this.Model.map(m => ({ id: m.id, description: m.description }));
3600
3603
  else if (this.UseCommaSeparatedList)
3601
3604
  toEmit = this.Model.map(m => m.id).join(',');
3602
- else if (this.UseJsonList)
3603
- toEmit = JSON.stringify(this.Model.map(m => m.id));
3604
3605
  this.EvaluatedModel = this.Model.map(t => t.itemName).join(', ');
3605
3606
  super.changed(toEmit, false, true);
3606
3607
  super.finalized();