@dereekb/dbx-form 10.1.4 → 10.1.6

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.
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
317
317
  type: ViewChild,
318
318
  args: ['button', { read: ElementRef, static: false }]
319
319
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWdCLG9CQUFvQixFQUFFLHFCQUFxQixFQUFnQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNSLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEssT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFTLFdBQVcsRUFBZ0IsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlPLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0s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TUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxnRUFBZ0U7UUFDakksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7K0dBeGJVLGlDQUFpQzttR0FBakMsaUNBQWlDLHdJQVVmLFVBQVUsb0RDbEV6Qyxpb0NBcUJBOzs0RkRtQ2EsaUNBQWlDO2tCQUg3QyxTQUFTOzs4QkFjUixhQUFhO3NCQURaLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyTWF5YmUsIExvYWRpbmdTdGF0ZSwgbG9hZGluZ1N0YXRlSGFzVmFsdWUsIGxvYWRpbmdTdGF0ZUlzTG9hZGluZywgTG9hZGluZ1N0YXRlV2l0aE1heWJlU29WYWx1ZSwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nLCBTdWJzY3JpcHRpb25PYmplY3QsIHN1Y2Nlc3NSZXN1bHQsIGJlZ2luTG9hZGluZywgbWFwTG9hZGluZ1N0YXRlVmFsdWVXaXRoT3BlcmF0b3IsIGxvYWRpbmdTdGF0ZUNvbnRleHQsIHZhbHVlRnJvbUxvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIG1lcmdlTWFwLCBzY2FuLCBCZWhhdmlvclN1YmplY3QsIHRhcCwgZmlyc3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIYW5kbGVBY3Rpb25XaXRoQ29udGV4dCB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGFkZFRvU2V0Q29weSwgYXNBcnJheSwgY29udmVydE1heWJlVG9BcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIGxhc3RWYWx1ZSwgbWFrZVZhbHVlc0dyb3VwTWFwLCBNYXliZSwgbWVyZ2VBcnJheXMsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIHNldENvbnRhaW5zQWxsVmFsdWVzLCBzZXRzQXJlRXF1aXZhbGVudCwgc29ydEJ5U3RyaW5nRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBTb3VyY2VTZWxlY3RWYWx1ZU1ldGFMb2FkZXIsIFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlciwgU291cmNlU2VsZWN0T3BlbkZ1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlTG9hZGluZ1N0YXRlLCBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWUsIFNvdXJjZVNlbGVjdFZhbHVlLCBTb3VyY2VTZWxlY3REaXNwbGF5RnVuY3Rpb24sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RPcHRpb25zLCBTb3VyY2VTZWxlY3RPcGVuU291cmNlUmVzdWx0IH0gZnJvbSAnLi9zb3VyY2VzZWxlY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBvcGVuIHRoZSBzb3VyY2UgYW5kIHJlcXVlc3QgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblNvdXJjZT86IFNvdXJjZVNlbGVjdE9wZW5GdW5jdGlvbjxNPjtcbiAgLyoqXG4gICAqIExvYWRzIHRoZSBzb3VyY2VzIHRvIGRpc3BsYXkgZW50cmllcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZFNvdXJjZXM/OiBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uPE0+O1xuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gYSBtZXRhIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVSZWFkZXI6IFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlcjxULCBNPjtcbiAgLyoqXG4gICAqIExvYWRzIG1ldGFkYXRhIGZvciB0aGUgaW5wdXQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YUxvYWRlcjogU291cmNlU2VsZWN0VmFsdWVNZXRhTG9hZGVyPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogU2VsZWN0IGJ1dHRvbiBpY29uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RCdXR0b25JY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHNlbGVjdGlvbiBpcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmludGVyZmFjZSBTZWxlY3RGaWVsZE9wZW5Tb3VyY2VNYXA8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdO1xuICByZWFkb25seSB2YWx1ZXNTZXQ6IFNldDxUPjtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIHNlbGVjdCB2aWV3IChtdWx0aSBvciBub3QpXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybVNvdXJjZVNlbGVjdEZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8U291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPj4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jYWNoZU1ldGFTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlTWV0YUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxULCBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPj4+KG5ldyBNYXAoKSk7XG4gIHByaXZhdGUgX2Rpc3BsYXlIYXNoTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8VCwgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+Pj4obmV3IE1hcCgpKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPFRbXT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9mcm9tT3BlblNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VsZWN0RmllbGRPcGVuU291cmNlTWFwPFQsIE0+Pih7IHZhbHVlczogW10sIHZhbHVlc1NldDogbmV3IFNldCgpIH0pO1xuICBwcml2YXRlIF9sb2FkU291cmNlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RMb2FkU291cmNlPE0+W10+Pj4odW5kZWZpbmVkKTtcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYnV0dG9uRWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50Rm9ybUNvbnRyb2xWYWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuY3VycmVudEZvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgYWxsVmFsdWVzRXZlclNlbGVjdGVkJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgc2NhbigoYWNjLCB2YWx1ZXMpID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IFNldDxUPiA9IGFjYztcblxuICAgICAgaWYgKCFzZXRDb250YWluc0FsbFZhbHVlcyhhY2MsIHZhbHVlcykpIHtcbiAgICAgICAgcmVzdWx0ID0gYWRkVG9TZXRDb3B5KGFjYywgdmFsdWVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBuZXcgU2V0PFQ+KCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCh4KSA9PiBBcnJheS5mcm9tKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10+PiA9IHRoaXMuYWxsVmFsdWVzRXZlclNlbGVjdGVkJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkU291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBsb2FkU291cmNlcyQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4+ID0gdGhpcy5fbG9hZFNvdXJjZXMucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHN3aXRjaE1hcCgobG9hZFNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcblxuICAgICAgcmV0dXJuIGxvYWRTb3VyY2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzb3VyY2VzOiBTb3VyY2VTZWxlY3RMb2FkU291cmNlPE0+W10pID0+IHtcbiAgICAgICAgICBjb25zdCBzb3VyY2VPYnM6IE9ic2VydmFibGU8U291cmNlU2VsZWN0TG9hZFNvdXJjZUxvYWRpbmdTdGF0ZTxNPj5bXSA9IHNvdXJjZXMubWFwKCh4KSA9PiB4Lm1ldGEucGlwZShtYXAoKG1ldGFTdGF0ZSkgPT4gKHsgLi4ubWV0YVN0YXRlLCBsYWJlbDogeC5sYWJlbCB9KSkpKTtcblxuICAgICAgICAgIGlmIChzb3VyY2VPYnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoc3VjY2Vzc1Jlc3VsdChbXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChzb3VyY2VPYnMpLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlc1dpdGhWYWx1ZXMgPSB4LmZpbHRlcigoeSkgPT4gbG9hZGluZ1N0YXRlSGFzVmFsdWUoeSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB4LmZpbmRJbmRleChsb2FkaW5nU3RhdGVJc0xvYWRpbmcpICE9PSAtMTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gc3RhdGVzV2l0aFZhbHVlcy5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogeS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiAoeS52YWx1ZSBhcyBNW10pLm1hcCgobWV0YSkgPT4gKHsgbWV0YSwgdmFsdWU6IHZhbHVlUmVhZGVyKG1ldGEpIH0pKVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBmcm9tT3BlblNvdXJjZSQ6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPj4gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBzZXRzQXJlRXF1aXZhbGVudChhLnZhbHVlc1NldCwgYi52YWx1ZXNTZXQpKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIHZhbHVlczogeC52YWx1ZXNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlR3JvdXBzRnJvbVNvdXJjZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlV2l0aE1heWJlU29WYWx1ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZnJvbU9wZW5Tb3VyY2UkLCB0aGlzLmxvYWRTb3VyY2VzJF0pLnBpcGUoXG4gICAgbWFwKChbZnJvbU9wZW5Tb3VyY2VHcm91cCwgbG9hZFNvdXJjZXNdKSA9PiB7XG4gICAgICBjb25zdCBsb2FkU291cmNlc1ZhbHVlID0gbG9hZFNvdXJjZXMudmFsdWUgPz8gW107XG4gICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW2Zyb21PcGVuU291cmNlR3JvdXAsIC4uLmxvYWRTb3VyY2VzVmFsdWVdO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IExvYWRpbmdTdGF0ZVdpdGhNYXliZVNvVmFsdWU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPiA9IHtcbiAgICAgICAgbG9hZGluZzogbG9hZFNvdXJjZXMubG9hZGluZyxcbiAgICAgICAgdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxWYWx1ZUdyb3Vwc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLnNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXNTdGF0ZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXM6IExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPikgPT4ge1xuICAgICAgaWYgKGxvYWRpbmdTdGF0ZUhhc1ZhbHVlKHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlc0Zyb21WYWx1ZXNHcm91cDogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPiA9IHtcbiAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgICAgdmFsdWVzOiBzb3VyY2VTZWxlY3RWYWx1ZXNGcm9tVmFsdWVzLnZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVHcm91cHNGcm9tU291cmNlc1N0YXRlJC5waXBlKFxuICAgICAgICAgIG1hcCgoc291cmNlc1N0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGxHcm91cHM6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXSA9IFt2YWx1ZXNGcm9tVmFsdWVzR3JvdXAsIC4uLnNvdXJjZXNTdGF0ZS52YWx1ZV07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogTG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4gPSB7XG4gICAgICAgICAgICAgIGxvYWRpbmc6IHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXMubG9hZGluZyB8fCBzb3VyY2VzU3RhdGUubG9hZGluZyxcbiAgICAgICAgICAgICAgdmFsdWU6IGFsbEdyb3Vwc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKGJlZ2luTG9hZGluZzxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+KHt9KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxPcHRpb25Hcm91cHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IHRoaXMuYWxsVmFsdWVHcm91cHNTdGF0ZSQucGlwZShcbiAgICBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvcihcbiAgICAgIHN3aXRjaE1hcCgoZ3JvdXBzOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10pID0+IHtcbiAgICAgICAgY29uc3QgYWxsR3JvdXBzUmVkdWNlZEJ5TGFiZWwgPSBtYWtlVmFsdWVzR3JvdXBNYXAoZ3JvdXBzLCAoeCkgPT4geC5sYWJlbCkgYXMgTWFwPHN0cmluZywgU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPjtcblxuICAgICAgICBjb25zdCB2YWx1ZXNFbmNvdW50ZXJlZCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgY29uc3QgYWxsVW5pcXVlVmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdID0gW107XG5cbiAgICAgICAgY29uc3Qgc2ltcGxpZmllZFZhbHVlc0dyb3VwczogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW107XG5cbiAgICAgICAgLy8gc29ydCB0byBwdXQgdGhlIGJsYW5rIGxhYmVsIGZpcnN0XG4gICAgICAgIEFycmF5LmZyb20oYWxsR3JvdXBzUmVkdWNlZEJ5TGFiZWwuZW50cmllcygpKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeVN0cmluZ0Z1bmN0aW9uKCh4KSA9PiB4WzBdKSlcbiAgICAgICAgICAuZm9yRWFjaCgoW2xhYmVsLCBncm91cHNdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcblxuICAgICAgICAgICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgIGdyb3VwLnZhbHVlcy5mb3JFYWNoKChzZWxlY3RWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWVzRW5jb3VudGVyZWQuaGFzKHNlbGVjdFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goc2VsZWN0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgYWxsVW5pcXVlVmFsdWVzLnB1c2goc2VsZWN0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgdmFsdWVzRW5jb3VudGVyZWQuYWRkKHNlbGVjdFZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzaW1wbGlmaWVkVmFsdWVzR3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgIHZhbHVlc1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLmdldERpc3BsYXlWYWx1ZXNGb3JTZWxlY3RWYWx1ZXMoYWxsVW5pcXVlVmFsdWVzKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGlzcGxheVZhbHVlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlc01hcCA9IG5ldyBNYXAoZGlzcGxheVZhbHVlcy5tYXAoKHgpID0+IFt4LnZhbHVlLCB4XSkpO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5R3JvdXBzOiBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdID0gc2ltcGxpZmllZFZhbHVlc0dyb3Vwcy5tYXAoKHZhbHVlR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZmlsdGVyTWF5YmVWYWx1ZXModmFsdWVHcm91cC52YWx1ZXMubWFwKCh4KSA9PiBkaXNwbGF5VmFsdWVzTWFwLmdldCh4LnZhbHVlKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlR3JvdXAubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWVzXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlHcm91cHM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgfSlcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsT3B0aW9uR3JvdXBzJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdPiA9IHRoaXMuYWxsT3B0aW9uR3JvdXBzU3RhdGUkLnBpcGUodmFsdWVGcm9tTG9hZGluZ1N0YXRlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBvcHRpb25zJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RPcHRpb25zPFQsIE0+PiA9IHRoaXMuYWxsT3B0aW9uR3JvdXBzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgeyBpbmNsdWRlZDogZ3JvdXBlZFZhbHVlcywgZXhjbHVkZWQ6IG5vbkdyb3VwZWRHcm91cCB9ID0gc2VwYXJhdGVWYWx1ZXMoeCwgKHkpID0+IEJvb2xlYW4oeS5sYWJlbCkpO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IFNvdXJjZVNlbGVjdE9wdGlvbnM8VCwgTT4gPSB7XG4gICAgICAgIG5vbkdyb3VwZWRWYWx1ZXM6IG5vbkdyb3VwZWRHcm91cFswXT8udmFsdWVzID8/IFtdLFxuICAgICAgICBncm91cGVkVmFsdWVzXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbm9uR3JvdXBlZFZhbHVlcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUobWFwKCh4KSA9PiB4Lm5vbkdyb3VwZWRWYWx1ZXMpKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZE9wdGlvbnMkID0gdGhpcy5vcHRpb25zJC5waXBlKG1hcCgoeCkgPT4geC5ncm91cGVkVmFsdWVzKSk7XG5cbiAgZ2V0IHNvdXJjZVNlbGVjdEZpZWxkKCk6IFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IG9wZW5Tb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMub3BlblNvdXJjZTtcbiAgfVxuXG4gIGdldCBzaG93T3BlblNvdXJjZUJ1dHRvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLm9wZW5Tb3VyY2UpO1xuICB9XG5cbiAgZ2V0IGxvYWRTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxvYWRTb3VyY2VzO1xuICB9XG5cbiAgZ2V0IHZhbHVlUmVhZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZhbHVlUmVhZGVyO1xuICB9XG5cbiAgZ2V0IG1ldGFMb2FkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWV0YUxvYWRlcjtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0QnV0dG9uSWNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3RCdXR0b25JY29uID8/ICdhZGQnO1xuICB9XG5cbiAgZ2V0IG11bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm11bHRpcGxlIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlZnJlc2hEaXNwbGF5VmFsdWVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQ7XG4gIH1cblxuICBsb2FkU291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmdldFNvdXJjZVNlbGVjdFZhbHVlRm9yVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoc291cmNlU2VsZWN0VmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdKSA9PiBzdWNjZXNzUmVzdWx0KHNvdXJjZVNlbGVjdFZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXT4ge1xuICAgIGNvbnN0IHsgdmFsdWVSZWFkZXIgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4gdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKG1ldGFNYXApID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGluZ1Jlc3VsdCA9IHZhbHVlcy5tYXAoKGhhc2gsIGkpID0+IFtpLCBoYXNoLCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT5dKTtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBpbmNsdWRlZDogaGFzTWV0YSxcbiAgICAgICAgICBleGNsdWRlZDogbmVlZHNNZXRhXG4gICAgICAgIH0gPSBzZXBhcmF0ZVZhbHVlcyhtYXBwaW5nUmVzdWx0LCAoeCkgPT4gQm9vbGVhbih4WzJdKSk7XG5cbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPjtcblxuICAgICAgICBpZiAobmVlZHNNZXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBHbyBnZXQgdGhlIG1ldGEgdmFsdWUuXG4gICAgICAgICAgY29uc3QgbWV0YVZhbHVlc09icyA9IHRoaXMubWV0YUxvYWRlcihuZWVkc01ldGEubWFwKCh4KSA9PiB4WzFdKSk7XG5cbiAgICAgICAgICBvYnMgPSBtZXRhVmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChtZXRhUmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhUmVzdWx0c01hcHBpbmc6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBtZXRhUmVzdWx0cy5tYXAoKG1ldGEpID0+ICh7IG1ldGEsIHZhbHVlOiB2YWx1ZVJlYWRlcihtZXRhKSB9KSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChtZXRhUmVzdWx0c01hcHBpbmcubWFwKCh4KSA9PiBbeC52YWx1ZSwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgbWV0YU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIG1ldGFSZXN1bHRzTWFwcGluZy5mb3JFYWNoKCh4KSA9PiBtZXRhTWFwLnNldCh4LnZhbHVlLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoKHgpID0+IHhbMl0gPz8gdmFsdWVJbmRleEhhc2hNYXAuZ2V0KHhbMV0pKTtcblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gZGlzcGxheSB2YWx1ZXMuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdEaXNwbGF5VmFsdWVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGVtXG4gICAgICAgICAgb2JzID0gb2YoaGFzTWV0YS5tYXAoKHgpID0+IHhbMl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclNlbGVjdFZhbHVlcyh2YWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10pID0+IHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChtZXRhTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgeC52YWx1ZV0gYXMgW1NvdXJjZVNlbGVjdFZhbHVlPFQsIE0+LCBUXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT4sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPl0pO1xuXG4gICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcigoeCkgPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiAheFszXSk7XG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuXG4gICAgICAgICAgb2JzID0gZGlzcGxheVZhbHVlc09icy5waXBlKFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgIG1hcCgoZGlzcGxheVJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+LCBUXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB4LnZhbHVlXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChkaXNwbGF5UmVzdWx0c01hcHBpbmcubWFwKChbeCwgaGFzaF0pID0+IFtoYXNoLCB4XSkpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSBtZXRhTWFwLiBObyBuZWVkIHRvIHB1c2ggYW4gdXBkYXRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHNNYXBwaW5nLmZvckVhY2goKFt4LCBoYXNoXSkgPT4gbWV0YU1hcC5zZXQoaGFzaCwgeCkpO1xuXG4gICAgICAgICAgICAgIC8vIFppcCB2YWx1ZXMgYmFjayB0b2dldGhlci5cbiAgICAgICAgICAgICAgY29uc3QgbmV3RGlzcGxheVZhbHVlcyA9IG1hcHBpbmdSZXN1bHQubWFwKCh4KSA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBhbGwgZGlzcGxheSB2YWx1ZXMgYXJlIGhhc2hlZCByZXR1cm4gdGhhdC5cbiAgICAgICAgICBvYnMgPSBvZihoYXNEaXNwbGF5Lm1hcCgoeCkgPT4geFszXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9icztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLmFsbE9wdGlvbkdyb3Vwc1N0YXRlJCB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxvYWRTb3VyY2VzIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5fbG9hZFNvdXJjZXMubmV4dChsb2FkU291cmNlcz8uKCkgfHwgb2YoW10pKTtcblxuICAgIGlmICh0aGlzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5uZXh0KG5ldyBNYXAoKSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG5cbiAgICAvLyBjb3B5IGFsbCB2YWx1ZXMgZnJvbSB0aGUgc291cmNlcyBpbnRvIHRoZSB2YWx1ZXMgaGFzaCBtYXAgdG8gcHJldmVudCByZWxvYWRpbmdcbiAgICB0aGlzLl9jYWNoZU1ldGFTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUdyb3Vwc0Zyb21Tb3VyY2VzU3RhdGUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc3QgaGFzaE1hcCA9IHRoaXMuX3ZhbHVlTWV0YUhhc2hNYXAudmFsdWU7XG4gICAgICB4LnZhbHVlLmZvckVhY2goKHgpID0+IHgudmFsdWVzLmZvckVhY2goKHkpID0+IGhhc2hNYXAuc2V0KHkudmFsdWUsIHkpKSk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlTWV0YUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kaXNwbGF5SGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZnJvbU9wZW5Tb3VyY2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9sb2FkU291cmNlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICByZWFkb25seSBoYW5kbGVTZWxlY3RPcHRpb25zOiBIYW5kbGVBY3Rpb25XaXRoQ29udGV4dDx1bmtub3duPiA9IChfLCBjb250ZXh0KSA9PiB7XG4gICAgY29uc3QgeyBvcGVuU291cmNlIH0gPSB0aGlzO1xuXG4gICAgaWYgKG9wZW5Tb3VyY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3Qgc291cmNlT2JzID0gb3BlblNvdXJjZSh7IG9yaWdpbiB9KTtcbiAgICAgIGNvbnRleHQuc3RhcnRXb3JraW5nV2l0aE9ic2VydmFibGUoXG4gICAgICAgIHNvdXJjZU9icy5waXBlKFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgdGFwKChyZXN1bHQ6IFNvdXJjZVNlbGVjdE9wZW5Tb3VyY2VSZXN1bHQ8TT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlc1RvQWRkID0gbWVyZ2VBcnJheXMoW3Jlc3VsdC5zZWxlY3QsIHJlc3VsdC5vcHRpb25zXSk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXNUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRUb09wZW5Tb3VyY2VNYXAodmFsdWVzVG9BZGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNlbGVjdCkge1xuICAgICAgICAgICAgICB0aGlzLmFkZFRvQ3VycmVudFZhbHVlKHJlc3VsdC5zZWxlY3QubWFwKCh4KSA9PiB0aGlzLnZhbHVlUmVhZGVyKHgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5yZWplY3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhZGRUb09wZW5Tb3VyY2VNYXAoaW5wdXQ6IE1bXSkge1xuICAgIGNvbnN0IHsgdmFsdWVSZWFkZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB2YWx1ZXM6IG1ldGEsIHZhbHVlc1NldDogaW5pdGlhbFZhbHVlcyB9ID0gdGhpcy5fZnJvbU9wZW5Tb3VyY2UudmFsdWU7XG5cbiAgICBjb25zdCBuZXdNZXRhRnJvbUlucHV0OiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdID0gW107XG4gICAgY29uc3QgdmFsdWVzU2V0ID0gbmV3IFNldChpbml0aWFsVmFsdWVzKTtcblxuICAgIGlucHV0LmZvckVhY2goKHgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVSZWFkZXIoeCk7XG5cbiAgICAgIGlmICghdmFsdWVzU2V0Lmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgbmV3TWV0YUZyb21JbnB1dC5wdXNoKHsgbWV0YTogeCwgdmFsdWUgfSk7XG4gICAgICAgIHZhbHVlc1NldC5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG5ld01ldGFGcm9tSW5wdXQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fZnJvbU9wZW5Tb3VyY2UubmV4dCh7XG4gICAgICAgIHZhbHVlczogWy4uLm1ldGEsIC4uLm5ld01ldGFGcm9tSW5wdXRdLFxuICAgICAgICB2YWx1ZXNTZXQ6IHZhbHVlc1NldFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb0N1cnJlbnRWYWx1ZSh2YWx1ZXM6IFRbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFzQXJyYXkodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XG4gICAgY29uc3QgbmV3VmFsdWVBcnJheSA9IFsuLi5jdXJyZW50VmFsdWUsIC4uLnZhbHVlc107XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyB2YWx1ZXMgOiBsYXN0VmFsdWUobmV3VmFsdWVBcnJheSk7IC8vIHBpY2sgbGFzdCB2YWx1ZSwgYXMgdGhlIGxhc3QgdmFsdWUgYWRkZWQgaXMgdGhlIG5ld2VzdCB2YWx1ZS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZFwiPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtY29udGVudFwiPlxuICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtc2VsZWN0XCIgW2lkXT1cImlkXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW211bHRpcGxlXT1cInByb3BzLm11bHRpcGxlXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2Ygbm9uR3JvdXBlZFZhbHVlcyQgfCBhc3luY1wiIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiPlxuICAgICAgICB7eyB2YWx1ZS5sYWJlbCB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPG1hdC1vcHRncm91cCAqbmdGb3I9XCJsZXQgb3B0aW9uR3JvdXAgb2YgZ3JvdXBlZE9wdGlvbnMkIHwgYXN5bmNcIiBbbGFiZWxdPVwib3B0aW9uR3JvdXAubGFiZWxcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIG9wdGlvbkdyb3VwLnZhbHVlc1wiIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiPlxuICAgICAgICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd09wZW5Tb3VyY2VCdXR0b25cIj5cbiAgICAgIDxkYngtYnV0dG9uLXNwYWNlcj48L2RieC1idXR0b24tc3BhY2VyPlxuICAgICAgPGRieC1hY3Rpb24gZGJ4QWN0aW9uVmFsdWUgW2RieEFjdGlvbkhhbmRsZXJdPVwiaGFuZGxlU2VsZWN0T3B0aW9uc1wiIGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtYnV0dG9uXCI+XG4gICAgICAgIDxkYngtYnV0dG9uICNidXR0b24gZGJ4QWN0aW9uQnV0dG9uIFtpY29uT25seV09XCJ0cnVlXCIgW2ljb25dPVwic2VsZWN0QnV0dG9uSWNvblwiPjwvZGJ4LWJ1dHRvbj5cbiAgICAgIDwvZGJ4LWFjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkYngtbG9hZGluZyBjbGFzcz1cImRieC1zb3VyY2Utc2VsZWN0LWZpZWxkLWxvYWRpbmdcIiBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbjwvZGl2PlxuIl19
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWdCLG9CQUFvQixFQUFFLHFCQUFxQixFQUFnQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5UyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hLLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBUyxXQUFXLEVBQWdCLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5TyxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFN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LE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1FBQ2pJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQXhiVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyx3SUFVZixVQUFVLG9EQ2pFekMsaW9DQXFCQTs7NEZEa0NhLGlDQUFpQztrQkFIN0MsU0FBUzs7OEJBY1IsYUFBYTtzQkFEWixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGxvYWRpbmdTdGF0ZUhhc1ZhbHVlLCBsb2FkaW5nU3RhdGVJc0xvYWRpbmcsIExvYWRpbmdTdGF0ZVdpdGhNYXliZVNvVmFsdWUsIHN0YXJ0V2l0aEJlZ2luTG9hZGluZywgU3Vic2NyaXB0aW9uT2JqZWN0LCBzdWNjZXNzUmVzdWx0LCBiZWdpbkxvYWRpbmcsIG1hcExvYWRpbmdTdGF0ZVZhbHVlV2l0aE9wZXJhdG9yLCBsb2FkaW5nU3RhdGVDb250ZXh0LCB2YWx1ZUZyb21Mb2FkaW5nU3RhdGUgLCBXb3JrVXNpbmdDb250ZXh0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgbWVyZ2VNYXAsIHNjYW4sIEJlaGF2aW9yU3ViamVjdCwgdGFwLCBmaXJzdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFkZFRvU2V0Q29weSwgYXNBcnJheSwgY29udmVydE1heWJlVG9BcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIGxhc3RWYWx1ZSwgbWFrZVZhbHVlc0dyb3VwTWFwLCBNYXliZSwgbWVyZ2VBcnJheXMsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIHNldENvbnRhaW5zQWxsVmFsdWVzLCBzZXRzQXJlRXF1aXZhbGVudCwgc29ydEJ5U3RyaW5nRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBTb3VyY2VTZWxlY3RWYWx1ZU1ldGFMb2FkZXIsIFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlciwgU291cmNlU2VsZWN0T3BlbkZ1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlTG9hZGluZ1N0YXRlLCBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWUsIFNvdXJjZVNlbGVjdFZhbHVlLCBTb3VyY2VTZWxlY3REaXNwbGF5RnVuY3Rpb24sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RPcHRpb25zLCBTb3VyY2VTZWxlY3RPcGVuU291cmNlUmVzdWx0IH0gZnJvbSAnLi9zb3VyY2VzZWxlY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBvcGVuIHRoZSBzb3VyY2UgYW5kIHJlcXVlc3QgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblNvdXJjZT86IFNvdXJjZVNlbGVjdE9wZW5GdW5jdGlvbjxNPjtcbiAgLyoqXG4gICAqIExvYWRzIHRoZSBzb3VyY2VzIHRvIGRpc3BsYXkgZW50cmllcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZFNvdXJjZXM/OiBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uPE0+O1xuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gYSBtZXRhIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVSZWFkZXI6IFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlcjxULCBNPjtcbiAgLyoqXG4gICAqIExvYWRzIG1ldGFkYXRhIGZvciB0aGUgaW5wdXQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YUxvYWRlcjogU291cmNlU2VsZWN0VmFsdWVNZXRhTG9hZGVyPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogU2VsZWN0IGJ1dHRvbiBpY29uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RCdXR0b25JY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHNlbGVjdGlvbiBpcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmludGVyZmFjZSBTZWxlY3RGaWVsZE9wZW5Tb3VyY2VNYXA8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdO1xuICByZWFkb25seSB2YWx1ZXNTZXQ6IFNldDxUPjtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIHNlbGVjdCB2aWV3IChtdWx0aSBvciBub3QpXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybVNvdXJjZVNlbGVjdEZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8U291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPj4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jYWNoZU1ldGFTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlTWV0YUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxULCBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPj4+KG5ldyBNYXAoKSk7XG4gIHByaXZhdGUgX2Rpc3BsYXlIYXNoTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8VCwgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+Pj4obmV3IE1hcCgpKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPFRbXT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9mcm9tT3BlblNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VsZWN0RmllbGRPcGVuU291cmNlTWFwPFQsIE0+Pih7IHZhbHVlczogW10sIHZhbHVlc1NldDogbmV3IFNldCgpIH0pO1xuICBwcml2YXRlIF9sb2FkU291cmNlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RMb2FkU291cmNlPE0+W10+Pj4odW5kZWZpbmVkKTtcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYnV0dG9uRWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50Rm9ybUNvbnRyb2xWYWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuY3VycmVudEZvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgYWxsVmFsdWVzRXZlclNlbGVjdGVkJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgc2NhbigoYWNjLCB2YWx1ZXMpID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IFNldDxUPiA9IGFjYztcblxuICAgICAgaWYgKCFzZXRDb250YWluc0FsbFZhbHVlcyhhY2MsIHZhbHVlcykpIHtcbiAgICAgICAgcmVzdWx0ID0gYWRkVG9TZXRDb3B5KGFjYywgdmFsdWVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBuZXcgU2V0PFQ+KCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCh4KSA9PiBBcnJheS5mcm9tKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10+PiA9IHRoaXMuYWxsVmFsdWVzRXZlclNlbGVjdGVkJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkU291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBsb2FkU291cmNlcyQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4+ID0gdGhpcy5fbG9hZFNvdXJjZXMucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHN3aXRjaE1hcCgobG9hZFNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcblxuICAgICAgcmV0dXJuIGxvYWRTb3VyY2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzb3VyY2VzOiBTb3VyY2VTZWxlY3RMb2FkU291cmNlPE0+W10pID0+IHtcbiAgICAgICAgICBjb25zdCBzb3VyY2VPYnM6IE9ic2VydmFibGU8U291cmNlU2VsZWN0TG9hZFNvdXJjZUxvYWRpbmdTdGF0ZTxNPj5bXSA9IHNvdXJjZXMubWFwKCh4KSA9PiB4Lm1ldGEucGlwZShtYXAoKG1ldGFTdGF0ZSkgPT4gKHsgLi4ubWV0YVN0YXRlLCBsYWJlbDogeC5sYWJlbCB9KSkpKTtcblxuICAgICAgICAgIGlmIChzb3VyY2VPYnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoc3VjY2Vzc1Jlc3VsdChbXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChzb3VyY2VPYnMpLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlc1dpdGhWYWx1ZXMgPSB4LmZpbHRlcigoeSkgPT4gbG9hZGluZ1N0YXRlSGFzVmFsdWUoeSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB4LmZpbmRJbmRleChsb2FkaW5nU3RhdGVJc0xvYWRpbmcpICE9PSAtMTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gc3RhdGVzV2l0aFZhbHVlcy5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogeS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiAoeS52YWx1ZSBhcyBNW10pLm1hcCgobWV0YSkgPT4gKHsgbWV0YSwgdmFsdWU6IHZhbHVlUmVhZGVyKG1ldGEpIH0pKVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBmcm9tT3BlblNvdXJjZSQ6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPj4gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBzZXRzQXJlRXF1aXZhbGVudChhLnZhbHVlc1NldCwgYi52YWx1ZXNTZXQpKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIHZhbHVlczogeC52YWx1ZXNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlR3JvdXBzRnJvbVNvdXJjZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlV2l0aE1heWJlU29WYWx1ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZnJvbU9wZW5Tb3VyY2UkLCB0aGlzLmxvYWRTb3VyY2VzJF0pLnBpcGUoXG4gICAgbWFwKChbZnJvbU9wZW5Tb3VyY2VHcm91cCwgbG9hZFNvdXJjZXNdKSA9PiB7XG4gICAgICBjb25zdCBsb2FkU291cmNlc1ZhbHVlID0gbG9hZFNvdXJjZXMudmFsdWUgPz8gW107XG4gICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW2Zyb21PcGVuU291cmNlR3JvdXAsIC4uLmxvYWRTb3VyY2VzVmFsdWVdO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IExvYWRpbmdTdGF0ZVdpdGhNYXliZVNvVmFsdWU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPiA9IHtcbiAgICAgICAgbG9hZGluZzogbG9hZFNvdXJjZXMubG9hZGluZyxcbiAgICAgICAgdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxWYWx1ZUdyb3Vwc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLnNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXNTdGF0ZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXM6IExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPikgPT4ge1xuICAgICAgaWYgKGxvYWRpbmdTdGF0ZUhhc1ZhbHVlKHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlc0Zyb21WYWx1ZXNHcm91cDogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPiA9IHtcbiAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgICAgdmFsdWVzOiBzb3VyY2VTZWxlY3RWYWx1ZXNGcm9tVmFsdWVzLnZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVHcm91cHNGcm9tU291cmNlc1N0YXRlJC5waXBlKFxuICAgICAgICAgIG1hcCgoc291cmNlc1N0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGxHcm91cHM6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXSA9IFt2YWx1ZXNGcm9tVmFsdWVzR3JvdXAsIC4uLnNvdXJjZXNTdGF0ZS52YWx1ZV07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogTG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4gPSB7XG4gICAgICAgICAgICAgIGxvYWRpbmc6IHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXMubG9hZGluZyB8fCBzb3VyY2VzU3RhdGUubG9hZGluZyxcbiAgICAgICAgICAgICAgdmFsdWU6IGFsbEdyb3Vwc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKGJlZ2luTG9hZGluZzxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+KHt9KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxPcHRpb25Hcm91cHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IHRoaXMuYWxsVmFsdWVHcm91cHNTdGF0ZSQucGlwZShcbiAgICBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvcihcbiAgICAgIHN3aXRjaE1hcCgoZ3JvdXBzOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10pID0+IHtcbiAgICAgICAgY29uc3QgYWxsR3JvdXBzUmVkdWNlZEJ5TGFiZWwgPSBtYWtlVmFsdWVzR3JvdXBNYXAoZ3JvdXBzLCAoeCkgPT4geC5sYWJlbCkgYXMgTWFwPHN0cmluZywgU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPjtcblxuICAgICAgICBjb25zdCB2YWx1ZXNFbmNvdW50ZXJlZCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgY29uc3QgYWxsVW5pcXVlVmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdID0gW107XG5cbiAgICAgICAgY29uc3Qgc2ltcGxpZmllZFZhbHVlc0dyb3VwczogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW107XG5cbiAgICAgICAgLy8gc29ydCB0byBwdXQgdGhlIGJsYW5rIGxhYmVsIGZpcnN0XG4gICAgICAgIEFycmF5LmZyb20oYWxsR3JvdXBzUmVkdWNlZEJ5TGFiZWwuZW50cmllcygpKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeVN0cmluZ0Z1bmN0aW9uKCh4KSA9PiB4WzBdKSlcbiAgICAgICAgICAuZm9yRWFjaCgoW2xhYmVsLCBncm91cHNdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcblxuICAgICAgICAgICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgIGdyb3VwLnZhbHVlcy5mb3JFYWNoKChzZWxlY3RWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWVzRW5jb3VudGVyZWQuaGFzKHNlbGVjdFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goc2VsZWN0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgYWxsVW5pcXVlVmFsdWVzLnB1c2goc2VsZWN0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgdmFsdWVzRW5jb3VudGVyZWQuYWRkKHNlbGVjdFZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzaW1wbGlmaWVkVmFsdWVzR3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgIHZhbHVlc1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLmdldERpc3BsYXlWYWx1ZXNGb3JTZWxlY3RWYWx1ZXMoYWxsVW5pcXVlVmFsdWVzKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGlzcGxheVZhbHVlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlc01hcCA9IG5ldyBNYXAoZGlzcGxheVZhbHVlcy5tYXAoKHgpID0+IFt4LnZhbHVlLCB4XSkpO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5R3JvdXBzOiBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdID0gc2ltcGxpZmllZFZhbHVlc0dyb3Vwcy5tYXAoKHZhbHVlR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZmlsdGVyTWF5YmVWYWx1ZXModmFsdWVHcm91cC52YWx1ZXMubWFwKCh4KSA9PiBkaXNwbGF5VmFsdWVzTWFwLmdldCh4LnZhbHVlKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlR3JvdXAubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWVzXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlHcm91cHM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgfSlcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsT3B0aW9uR3JvdXBzJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdPiA9IHRoaXMuYWxsT3B0aW9uR3JvdXBzU3RhdGUkLnBpcGUodmFsdWVGcm9tTG9hZGluZ1N0YXRlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBvcHRpb25zJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RPcHRpb25zPFQsIE0+PiA9IHRoaXMuYWxsT3B0aW9uR3JvdXBzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgeyBpbmNsdWRlZDogZ3JvdXBlZFZhbHVlcywgZXhjbHVkZWQ6IG5vbkdyb3VwZWRHcm91cCB9ID0gc2VwYXJhdGVWYWx1ZXMoeCwgKHkpID0+IEJvb2xlYW4oeS5sYWJlbCkpO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IFNvdXJjZVNlbGVjdE9wdGlvbnM8VCwgTT4gPSB7XG4gICAgICAgIG5vbkdyb3VwZWRWYWx1ZXM6IG5vbkdyb3VwZWRHcm91cFswXT8udmFsdWVzID8/IFtdLFxuICAgICAgICBncm91cGVkVmFsdWVzXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbm9uR3JvdXBlZFZhbHVlcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUobWFwKCh4KSA9PiB4Lm5vbkdyb3VwZWRWYWx1ZXMpKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZE9wdGlvbnMkID0gdGhpcy5vcHRpb25zJC5waXBlKG1hcCgoeCkgPT4geC5ncm91cGVkVmFsdWVzKSk7XG5cbiAgZ2V0IHNvdXJjZVNlbGVjdEZpZWxkKCk6IFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IG9wZW5Tb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMub3BlblNvdXJjZTtcbiAgfVxuXG4gIGdldCBzaG93T3BlblNvdXJjZUJ1dHRvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLm9wZW5Tb3VyY2UpO1xuICB9XG5cbiAgZ2V0IGxvYWRTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxvYWRTb3VyY2VzO1xuICB9XG5cbiAgZ2V0IHZhbHVlUmVhZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZhbHVlUmVhZGVyO1xuICB9XG5cbiAgZ2V0IG1ldGFMb2FkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWV0YUxvYWRlcjtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0QnV0dG9uSWNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3RCdXR0b25JY29uID8/ICdhZGQnO1xuICB9XG5cbiAgZ2V0IG11bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm11bHRpcGxlIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlZnJlc2hEaXNwbGF5VmFsdWVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQ7XG4gIH1cblxuICBsb2FkU291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmdldFNvdXJjZVNlbGVjdFZhbHVlRm9yVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoc291cmNlU2VsZWN0VmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdKSA9PiBzdWNjZXNzUmVzdWx0KHNvdXJjZVNlbGVjdFZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXT4ge1xuICAgIGNvbnN0IHsgdmFsdWVSZWFkZXIgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4gdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKG1ldGFNYXApID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGluZ1Jlc3VsdCA9IHZhbHVlcy5tYXAoKGhhc2gsIGkpID0+IFtpLCBoYXNoLCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT5dKTtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBpbmNsdWRlZDogaGFzTWV0YSxcbiAgICAgICAgICBleGNsdWRlZDogbmVlZHNNZXRhXG4gICAgICAgIH0gPSBzZXBhcmF0ZVZhbHVlcyhtYXBwaW5nUmVzdWx0LCAoeCkgPT4gQm9vbGVhbih4WzJdKSk7XG5cbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPjtcblxuICAgICAgICBpZiAobmVlZHNNZXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBHbyBnZXQgdGhlIG1ldGEgdmFsdWUuXG4gICAgICAgICAgY29uc3QgbWV0YVZhbHVlc09icyA9IHRoaXMubWV0YUxvYWRlcihuZWVkc01ldGEubWFwKCh4KSA9PiB4WzFdKSk7XG5cbiAgICAgICAgICBvYnMgPSBtZXRhVmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChtZXRhUmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhUmVzdWx0c01hcHBpbmc6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBtZXRhUmVzdWx0cy5tYXAoKG1ldGEpID0+ICh7IG1ldGEsIHZhbHVlOiB2YWx1ZVJlYWRlcihtZXRhKSB9KSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChtZXRhUmVzdWx0c01hcHBpbmcubWFwKCh4KSA9PiBbeC52YWx1ZSwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgbWV0YU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIG1ldGFSZXN1bHRzTWFwcGluZy5mb3JFYWNoKCh4KSA9PiBtZXRhTWFwLnNldCh4LnZhbHVlLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoKHgpID0+IHhbMl0gPz8gdmFsdWVJbmRleEhhc2hNYXAuZ2V0KHhbMV0pKTtcblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gZGlzcGxheSB2YWx1ZXMuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdEaXNwbGF5VmFsdWVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGVtXG4gICAgICAgICAgb2JzID0gb2YoaGFzTWV0YS5tYXAoKHgpID0+IHhbMl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclNlbGVjdFZhbHVlcyh2YWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10pID0+IHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChtZXRhTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgeC52YWx1ZV0gYXMgW1NvdXJjZVNlbGVjdFZhbHVlPFQsIE0+LCBUXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT4sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPl0pO1xuXG4gICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcigoeCkgPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiAheFszXSk7XG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuXG4gICAgICAgICAgb2JzID0gZGlzcGxheVZhbHVlc09icy5waXBlKFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgIG1hcCgoZGlzcGxheVJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+LCBUXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB4LnZhbHVlXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChkaXNwbGF5UmVzdWx0c01hcHBpbmcubWFwKChbeCwgaGFzaF0pID0+IFtoYXNoLCB4XSkpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSBtZXRhTWFwLiBObyBuZWVkIHRvIHB1c2ggYW4gdXBkYXRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHNNYXBwaW5nLmZvckVhY2goKFt4LCBoYXNoXSkgPT4gbWV0YU1hcC5zZXQoaGFzaCwgeCkpO1xuXG4gICAgICAgICAgICAgIC8vIFppcCB2YWx1ZXMgYmFjayB0b2dldGhlci5cbiAgICAgICAgICAgICAgY29uc3QgbmV3RGlzcGxheVZhbHVlcyA9IG1hcHBpbmdSZXN1bHQubWFwKCh4KSA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBhbGwgZGlzcGxheSB2YWx1ZXMgYXJlIGhhc2hlZCByZXR1cm4gdGhhdC5cbiAgICAgICAgICBvYnMgPSBvZihoYXNEaXNwbGF5Lm1hcCgoeCkgPT4geFszXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9icztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLmFsbE9wdGlvbkdyb3Vwc1N0YXRlJCB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxvYWRTb3VyY2VzIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5fbG9hZFNvdXJjZXMubmV4dChsb2FkU291cmNlcz8uKCkgfHwgb2YoW10pKTtcblxuICAgIGlmICh0aGlzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5uZXh0KG5ldyBNYXAoKSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG5cbiAgICAvLyBjb3B5IGFsbCB2YWx1ZXMgZnJvbSB0aGUgc291cmNlcyBpbnRvIHRoZSB2YWx1ZXMgaGFzaCBtYXAgdG8gcHJldmVudCByZWxvYWRpbmdcbiAgICB0aGlzLl9jYWNoZU1ldGFTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUdyb3Vwc0Zyb21Tb3VyY2VzU3RhdGUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc3QgaGFzaE1hcCA9IHRoaXMuX3ZhbHVlTWV0YUhhc2hNYXAudmFsdWU7XG4gICAgICB4LnZhbHVlLmZvckVhY2goKHgpID0+IHgudmFsdWVzLmZvckVhY2goKHkpID0+IGhhc2hNYXAuc2V0KHkudmFsdWUsIHkpKSk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlTWV0YUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kaXNwbGF5SGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZnJvbU9wZW5Tb3VyY2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9sb2FkU291cmNlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICByZWFkb25seSBoYW5kbGVTZWxlY3RPcHRpb25zOiBXb3JrVXNpbmdDb250ZXh0PHVua25vd24+ID0gKF8sIGNvbnRleHQpID0+IHtcbiAgICBjb25zdCB7IG9wZW5Tb3VyY2UgfSA9IHRoaXM7XG5cbiAgICBpZiAob3BlblNvdXJjZSkge1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBzb3VyY2VPYnMgPSBvcGVuU291cmNlKHsgb3JpZ2luIH0pO1xuICAgICAgY29udGV4dC5zdGFydFdvcmtpbmdXaXRoT2JzZXJ2YWJsZShcbiAgICAgICAgc291cmNlT2JzLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YXAoKHJlc3VsdDogU291cmNlU2VsZWN0T3BlblNvdXJjZVJlc3VsdDxNPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzVG9BZGQgPSBtZXJnZUFycmF5cyhbcmVzdWx0LnNlbGVjdCwgcmVzdWx0Lm9wdGlvbnNdKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmFkZFRvT3BlblNvdXJjZU1hcCh2YWx1ZXNUb0FkZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQuc2VsZWN0KSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkVG9DdXJyZW50VmFsdWUocmVzdWx0LnNlbGVjdC5tYXAoKHgpID0+IHRoaXMudmFsdWVSZWFkZXIoeCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnJlamVjdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGFkZFRvT3BlblNvdXJjZU1hcChpbnB1dDogTVtdKSB7XG4gICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZhbHVlczogbWV0YSwgdmFsdWVzU2V0OiBpbml0aWFsVmFsdWVzIH0gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS52YWx1ZTtcblxuICAgIGNvbnN0IG5ld01ldGFGcm9tSW5wdXQ6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcbiAgICBjb25zdCB2YWx1ZXNTZXQgPSBuZXcgU2V0KGluaXRpYWxWYWx1ZXMpO1xuXG4gICAgaW5wdXQuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVJlYWRlcih4KTtcblxuICAgICAgaWYgKCF2YWx1ZXNTZXQuaGFzKHZhbHVlKSkge1xuICAgICAgICBuZXdNZXRhRnJvbUlucHV0LnB1c2goeyBtZXRhOiB4LCB2YWx1ZSB9KTtcbiAgICAgICAgdmFsdWVzU2V0LmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobmV3TWV0YUZyb21JbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9mcm9tT3BlblNvdXJjZS5uZXh0KHtcbiAgICAgICAgdmFsdWVzOiBbLi4ubWV0YSwgLi4ubmV3TWV0YUZyb21JbnB1dF0sXG4gICAgICAgIHZhbHVlc1NldDogdmFsdWVzU2V0XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRvQ3VycmVudFZhbHVlKHZhbHVlczogVFtdKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZUFycmF5ID0gWy4uLmN1cnJlbnRWYWx1ZSwgLi4udmFsdWVzXTtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IHZhbHVlcyA6IGxhc3RWYWx1ZShuZXdWYWx1ZUFycmF5KTsgLy8gcGljayBsYXN0IHZhbHVlLCBhcyB0aGUgbGFzdCB2YWx1ZSBhZGRlZCBpcyB0aGUgbmV3ZXN0IHZhbHVlLlxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRieC1zb3VyY2Utc2VsZWN0LWZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1jb250ZW50XCI+XG4gICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1zZWxlY3RcIiBbaWRdPVwiaWRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbbXVsdGlwbGVdPVwicHJvcHMubXVsdGlwbGVcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBub25Hcm91cGVkVmFsdWVzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+XG4gICAgICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8bWF0LW9wdGdyb3VwICpuZ0Zvcj1cImxldCBvcHRpb25Hcm91cCBvZiBncm91cGVkT3B0aW9ucyQgfCBhc3luY1wiIFtsYWJlbF09XCJvcHRpb25Hcm91cC5sYWJlbFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2Ygb3B0aW9uR3JvdXAudmFsdWVzXCIgW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+XG4gICAgICAgICAge3sgdmFsdWUubGFiZWwgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93T3BlblNvdXJjZUJ1dHRvblwiPlxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8ZGJ4LWFjdGlvbiBkYnhBY3Rpb25WYWx1ZSBbZGJ4QWN0aW9uSGFuZGxlcl09XCJoYW5kbGVTZWxlY3RPcHRpb25zXCIgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1idXR0b25cIj5cbiAgICAgICAgPGRieC1idXR0b24gI2J1dHRvbiBkYnhBY3Rpb25CdXR0b24gW2ljb25Pbmx5XT1cInRydWVcIiBbaWNvbl09XCJzZWxlY3RCdXR0b25JY29uXCI+PC9kYngtYnV0dG9uPlxuICAgICAgPC9kYngtYWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRieC1sb2FkaW5nIGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtbG9hZGluZ1wiIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuPC9kaXY+XG4iXX0=