@arsedizioni/ars-utils 18.2.2 → 18.2.3

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.
@@ -97,6 +97,12 @@ export class SelectDialogComponent {
97
97
  this.doFilter(this.dialogData.filter);
98
98
  }
99
99
  }
100
+ /**
101
+ * Mark for check
102
+ */
103
+ markForCheck() {
104
+ this.changeDetector.markForCheck();
105
+ }
100
106
  /**
101
107
  * Check if every element are selected
102
108
  */
@@ -159,7 +165,6 @@ export class SelectDialogComponent {
159
165
  this.selectionMasterIndeterminate.set(!this.isAllSelected() && this.hasSelection());
160
166
  this.selectionMasterChecked.set(this.hasSelection());
161
167
  this.updateSelectionInfo();
162
- this.changeDetector.markForCheck();
163
168
  }
164
169
  /**
165
170
  * Update selection info
@@ -213,7 +218,6 @@ export class SelectDialogComponent {
213
218
  showFilterOptions() {
214
219
  if (this.lookupOptions) {
215
220
  this.lookupOptions.emit();
216
- this.changeDetector.markForCheck();
217
221
  }
218
222
  }
219
223
  /**
@@ -227,7 +231,6 @@ export class SelectDialogComponent {
227
231
  if (this.dialogData.canLookup) {
228
232
  if (!e || e.keyCode === 13) {
229
233
  this.lookup.emit({ items: this.dialogData.items, filter: this.filterText });
230
- this.changeDetector.markForCheck();
231
234
  }
232
235
  }
233
236
  }
@@ -371,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
371
374
  }], filter: [{
372
375
  type: Output
373
376
  }] } });
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFN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O3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nVGl0bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlclwiO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSwgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU2VhcmNoRmlsdGVyUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdERpYWxvZ0FwcGVuZCxcclxuICBTZWxlY3REaWFsb2dEYXRhLFxyXG4gIFNlbGVjdERpYWxvZ0RlbGV0ZSxcclxuICBTZWxlY3REaWFsb2dMb29rdXAsXHJcbiAgU2VsZWN0RGlhbG9nUmVzdWx0LFxyXG4gIFNlbGVjdGFibGVJdGVtLFxyXG59IGZyb20gXCIuLi8uLi9kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tIFwiQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXhcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9zZWxlY3QtZGlhbG9nLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICBGbGV4TW9kdWxlLFxyXG4gICAgRXh0ZW5kZWRNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdE9wdGlvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIE1hdExpc3RNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxyXG4gICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICBTZWFyY2hGaWx0ZXJQaXBlLFxyXG4gICAgU2FmZUh0bWxQaXBlXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoXCJzZWxlY3Rpb25cIikgc2VsZWN0aW9uITogTWF0U2VsZWN0aW9uTGlzdDtcclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFNlbGVjdERpYWxvZ0NvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBTZWxlY3REaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBhcHBlYXJhbmNlOiAnb3V0bGluZScsIHRpdGxlOiAnU2VsZXppb25hJyB9O1xyXG5cclxuICBAT3V0cHV0KCkgZG9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0RGlhbG9nUmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcclxuICBAT3V0cHV0KCkgdmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0YWJsZUl0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIGFwcGVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0RGlhbG9nQXBwZW5kPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdERpYWxvZ0RlbGV0ZT4oKTtcclxuICBAT3V0cHV0KCkgbG9va3VwID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dMb29rdXA+KCk7XHJcbiAgQE91dHB1dCgpIGxvb2t1cE9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByb3RlY3RlZCBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuVmlldyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkFwcGVuZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkRlbGV0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhblBhZ2luYXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLy8gSGFuZGxlIHN1Ym1pdCBidXR0b24gYWN0aXZpdHlcclxuICBwcm90ZWN0ZWQgb2tEaXNhYmxlZCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgLy8gVXNlZCBmb3IgYXJyYXkgZmlsdGVyaW5nXHJcbiAgcHJvdGVjdGVkIGZpbHRlclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJvdGVjdGVkIGZpbHRlck9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJPcHRpb25zSW5mbzogc3RyaW5nID0gXCJUdXR0b1wiO1xyXG5cclxuICAvLyBVc2VkIHRvIHNpbmNyb25pemUgbG9va3VwIGZpZWxkcyBhbmQgcGFyYW1zXHJcbiAgcHJvdGVjdGVkIGxvb2t1cEZpZWxkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgbG9va3VwUGFyYW1zOiBhbnk7XHJcblxyXG5cclxuICAvLyBVc2VkIHRvIGRpc3BsYXkgc2VsZWN0ZWQgZWxlbWVudHNcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uSW5mbzogc3RyaW5nID0gXCJcIjtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1hc3RlckNoZWNrZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS50aXRsZSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEudGl0bGUgPSAnU2VsZXppb25hJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubXVsdGkgJiYgIXRoaXMuZGlhbG9nRGF0YS5pdGVtcykge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVsdGkgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSBcIk9rXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbkFwcGVuZC5zZXQodGhpcy5kaWFsb2dEYXRhLmNhbkFwcGVuZCk7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhbkxvb2t1cCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHMgJiYgdGhpcy5kaWFsb2dEYXRhLmxvb2t1cEZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5sb29rdXBGaWVsZCA9IHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHNbMF0udmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLmRpYWxvZ0RhdGEuZmlsdGVycztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKSB7XHJcbiAgICAgICAgdGhpcy5jYW5QYWdpbmF0ZS5zZXQodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKTtcclxuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5wYWdlU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID0gMTAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KHRoaXMuZGlhbG9nRGF0YS5tdXN0U2VsZWN0KTtcclxuXHJcbiAgICAvLyBBcHBseSBmaWx0ZXIgaWYgZXhpc3RzXHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmZpbHRlciB8fCB0aGlzLmRpYWxvZ0RhdGEubG9va3VwT25Jbml0KSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBldmVyeSBlbGVtZW50IGFyZSBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucyAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA9PT0gdGhpcy5kaWFsb2dEYXRhLml0ZW1zLmxlbmd0aFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBleGlzdHMgYSBzZWxlY3Rpb25cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucyAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXN0ZXIgc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXN0ZXJTZWxlY3Rpb25Ub2dnbGUoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5jaGVja2VkKVxyXG4gICAgICAvLyBEZXNlbGVjdCBpZiBub3QgYWxsc2VsZWN0ZWQgc28gdGhhdCB0b2dnbGUgbWFrZXMgdGhlIHJpZ2h0IGNob2ljZVxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RBbGwoKTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJDaGVja2VkID0gYXJncy5jaGVja2VkO1xyXG4gICAgdGhpcy5va0Rpc2FibGVkLnNldChcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLm11c3RTZWxlY3QgJiZcclxuICAgICAgKCF0aGlzLnNlbGVjdGlvbiB8fCB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAwKSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkluZm8oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBzZWxlY3Rpb24vZGVzZWxlY3Rpb24gb2YgYW4gaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5tdWx0aSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdEFsbCgpO1xyXG4gICAgICBpZiAoZS5vcHRpb25zPy5sZW5ndGggPiAwKVxyXG4gICAgICAgIGUub3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub2tEaXNhYmxlZC5zZXQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5va0Rpc2FibGVkLnNldChcclxuICAgICAgICB0aGlzLmRpYWxvZ0RhdGEubXVzdFNlbGVjdCAmJlxyXG4gICAgICAgICghdGhpcy5zZWxlY3Rpb24gfHxcclxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDApKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgZWRpdG9yc1xyXG4gICAgdGhpcy5jYW5BcHBlbmQuc2V0KHRoaXMuZGlhbG9nRGF0YS5jYW5BcHBlbmQpO1xyXG4gICAgdGhpcy5jYW5FZGl0LnNldChcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmNhbkVkaXQgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA9PT0gMSk7XHJcbiAgICB0aGlzLmNhblZpZXcuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuY2FuVmlldyAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbiAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAxKTtcclxuICAgIHRoaXMuY2FuRGVsZXRlLnNldChcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmNhbkRlbGV0ZSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbiAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID4gMCk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUuc2V0KFxyXG4gICAgICAhdGhpcy5pc0FsbFNlbGVjdGVkKCkgJiYgdGhpcy5oYXNTZWxlY3Rpb24oKSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckNoZWNrZWQuc2V0KHRoaXMuaGFzU2VsZWN0aW9uKCkpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25JbmZvKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JbmZvKCkge1xyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5kaWFsb2dEYXRhLm11bHRpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5mbyA9XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCArXHJcbiAgICAgICAgXCIgLyBcIiArXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24ub3B0aW9ucy5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkluZm8gPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgY3VycmVudCBzZWxlY3Rpb25cclxuICAgKi9cclxuICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJDaGVja2VkLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25JbmZvID0gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1Ym1pdCBzZWxlY3Rpb25cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb2soKSB7XHJcbiAgICBpZiAoIXRoaXMub2tEaXNhYmxlZCgpKSB7XHJcbiAgICAgIC8vIE11bHRpIHNlbGVjdGlvblxyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goZWxlbWVudC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmRvbmUuZW1pdCh7IHNlbGVjdGVkSXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBmaWx0ZXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2xlYXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmZpbHRlclRleHQgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBmaWx0ZXIgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzaG93RmlsdGVyT3B0aW9ucygpIHtcclxuICAgIGlmICh0aGlzLmxvb2t1cE9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5sb29rdXBPcHRpb25zLmVtaXQoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlclxyXG4gICAqIEBwYXJhbSB0ZXh0IDogdGhlIHN0cmluZyB0byBmaWx0ZXIgdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9GaWx0ZXIodGV4dDogc3RyaW5nID0gbnVsbCwgZTogYW55ID0gbnVsbCkge1xyXG4gICAgaWYgKHRleHQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwKSB7XHJcbiAgICAgIGlmICghZSB8fCBlLmtleUNvZGUgPT09IDEzKSB7XHJcbiAgICAgICAgdGhpcy5sb29rdXAuZW1pdCh7IGl0ZW1zOiB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMsIGZpbHRlcjogdGhpcy5maWx0ZXJUZXh0IH0pO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlciB1c2luZyBmaWx0ZXIgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBmaWx0ZXJPUHRpb24gOiB0aGUgY3VycmVudCBmaWx0ZXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9GaWx0ZXJCeU9wdGlvbnMoZmlsdGVyT3B0aW9uOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXIuZW1pdCh7XHJcbiAgICAgICAgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyxcclxuICAgICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVyVGV4dCxcclxuICAgICAgICBmaWx0ZXJPcHRpb246IGZpbHRlck9wdGlvbixcclxuICAgICAgICBvd25lcjogdGhpcyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXIuIFRoaXMgaXMgYWNjZXNzaWJsZSBmcm9tIHB1YmxpY1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgOiB0aGUgb2JqZWN0IHdpdGggY3VycmVudCBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgZG9Mb29rdXAocGFyYW1zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwKSB7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICB0aGlzLmxvb2t1cFBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICAgIHRoaXMubG9va3VwLmVtaXQoeyBpdGVtczogdGhpcy5kaWFsb2dEYXRhLml0ZW1zLCBwYXJhbXM6IHRoaXMubG9va3VwUGFyYW1zLCBvd25lcjogdGhpcyB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbG9va3VwIHBhZ2luYXRyb1xyXG4gICAqIEBwYXJhbSB0b3RhbCA6IHRoZSBuZXcgdG90YWwgaXRlbXNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlTG9va3VwUGFnaW5hdG9yKHRvdGFsOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmNhblBhZ2luYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gdG90YWwgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBcHBseSBmaWx0ZXJcclxuICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGRvTG9va3VwUGFnZShlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5QYWdpbmF0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gZS5wYWdlSW5kZXggKiAodGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID8/IDApO1xyXG4gICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgcGFyYW1zOiB0aGlzLmxvb2t1cFBhcmFtcywgb3duZXI6IHRoaXMgfSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBlbmRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9BcHBlbmQoKSB7XHJcbiAgICB0aGlzLmFwcGVuZC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyB9IGFzIFNlbGVjdERpYWxvZ0FwcGVuZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0VkaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkKXtcclxuICAgICAgdGhpcy5lZGl0LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkWzBdLnZhbHVlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZpZXdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9WaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnZpZXcuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWRbMF0udmFsdWUpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvRGVsZXRlKCkge1xyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGVsZW1lbnQudmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRlbGV0ZS5lbWl0KHtcclxuICAgICAgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyxcclxuICAgICAgc2VsZWN0ZWRJdGVtczogc2VsZWN0ZWRJdGVtcyxcclxuICAgIH0gYXMgU2VsZWN0RGlhbG9nRGVsZXRlKTtcclxuICAgIHRoaXMuY2FuRGVsZXRlLnNldChmYWxzZSk7XHJcbiAgICBcclxuICB9XHJcbn1cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3tkaWFsb2dEYXRhLnRpdGxlfX08L2gyPlxyXG48ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4XCI+XHJcbiAgQGlmIChkaWFsb2dEYXRhLmRlc2NyaXB0aW9uKSB7XHJcbiAgPGRpdiBjbGFzcz1cInNlbGVjdGZpbGUtZGVzY3JpcHRpb25cIiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZGVzY3JpcHRpb24gfCBzYWZlSHRtbFwiPjwvZGl2PlxyXG4gIH1cclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMjBweFwiIGZ4RmlsbD5cclxuICAgICAgQGlmICghZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT0nd2lkdGg6MTAwJScgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2RrRm9jdXNJbml0aWFsIChrZXl1cC5FbnRlcik9XCJkb0ZpbHRlcigpXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgdGl0bGU9XCJ7e2RpYWxvZ0RhdGEuY2FuTG9va3VwID8gJ0RpZ2l0YSBpbCB0ZXN0byBlIHByZW1pIGludmlvJyA6ICdEaWdpdGEgaWwgdGVzdG8nfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlclRleHRcIj5cclxuICAgICAgICAgIEBpZiAoZmlsdGVyVGV4dCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuY2FuTG9va3VwV2l0aE9wdGlvbnMgJiYgZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgZGlhbG9nRGF0YS5sb29rdXBGaWVsZHMpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9J3dpZHRoOjEwMCUnIFthcHBlYXJhbmNlXT1cImRpYWxvZ0RhdGEuYXBwZWFyYW5jZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q29tZS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwibG9va3VwRmllbGRcIj5cclxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgZGlhbG9nRGF0YS5sb29rdXBGaWVsZHM7IHRyYWNrIGZpZWxkKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmaWVsZC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZmllbGQubmFtZX19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBhcmlhLWxhYmVsPVwiUmljZXJjYVwiIChjbGljayk9XCJzaG93RmlsdGVyT3B0aW9ucygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5SaWNlcmNhXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cIndoaXRlLXNwYWNlOm5vd3JhcFwiPlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiRmlsdHJhXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRmlsdHJhJ1wiXHJcbiAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUZpbHRlclwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmZpbHRlcl9hbHQ8L21hdC1pY29uPiB7e2ZpbHRlck9wdGlvbnNJbmZvfX0gPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPlxyXG4gICAgICAgICAgICBhcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUZpbHRlcj1cIm1hdE1lbnVcIiBjbGFzcz1cIm1hdC1tZW51LTMwMFwiPlxyXG4gICAgICAgICAgQGZvciAoZiBvZiBmaWx0ZXJPcHRpb25zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChmLmdyb3VwTmFtZSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZTpzbWFsbDsgcGFkZGluZzogMnB4IDRweDsnPjxpPjxiPnt7Zi5ncm91cE5hbWV9fTwvYj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghZi5ncm91cE5hbWUgJiYgIWYuZGl2aWRlcikge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb0ZpbHRlckJ5T3B0aW9ucyhmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICBAaWYgKGYucmFkaW8gJiYgZi52YWx1ZSkge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmctbGVmdDo0MHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj57e2YuaWNvbn19PC9tYXQtaWNvbj4ge3tmLnRpdGxlfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGNhbkVkaXQoKSB8fCBjYW5BcHBlbmQoKSB8fCBjYW5WaWV3KCkgfHwgY2FuRGVsZXRlKCkpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6bm93cmFwXCI+XHJcbiAgICAgICAgQGlmIChjYW5BcHBlbmQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvQXBwZW5kKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiQWdnaXVuZ2lcIiBtYXRUb29sdGlwPVwiQWdnaXVuZ2lcIj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9FZGl0KClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiTW9kaWZpY2FcIiBtYXRUb29sdGlwPVwiTW9kaWZpY2FcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5WaWV3KCkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvVmlldygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gYXJpYS1sYWJlbD1cIk1vc3RyYVwiIG1hdFRvb2x0aXA9XCJNb3N0cmFcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5EZWxldGUoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9EZWxldGUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFbGltaW5hXCIgbWF0VG9vbHRpcD1cIkVsaW1pbmFcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoKGRpYWxvZ0RhdGEubXVsdGkgfHwgZGlhbG9nRGF0YS5oZWFkZXIpICYmIGRpYWxvZ0RhdGEuaXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmFseW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTBweDtcIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCI3MnB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4O1wiPlxyXG4gICAgICAgIEBpZiAoZGlhbG9nRGF0YS5tdWx0aSkge1xyXG4gICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJTZWxlY3Rpb25Ub2dnbGUoJGV2ZW50KSA6IG51bGxcIlxyXG4gICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZSgpXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uTWFzdGVyQ2hlY2tlZCgpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlbGV6aW9uYS9kZXNlbGV6aW9uYSB0dXR0bydcIiBtYXRUb29sdGlwPVwiU2VsZXppb25hL2Rlc2VsZXppb25hIHR1dHRvXCI+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAoZGlhbG9nRGF0YS5oZWFkZXIpIHtcclxuICAgICAgICA8ZGl2ICBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuaGVhZGVyIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgKCFkaWFsb2dEYXRhLml0ZW1zIHx8IGRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoID09IDApKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPjxpPlxyXG4gICAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlKSB7XHJcbiAgICAgICAgPHNwYW4+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48YnI+RXNlZ3VpIHVuYSBudW92YSByaWNlcmNhIG8gbW9kaWZpY2EgcXVlbGxhXHJcbiAgICAgICAgICBlc2lzdGVudGUuXHJcbiAgICAgICAgICBAaWYgKGRpYWxvZ0RhdGEubWF4SXRlbXMgPiAwKSB7XHJcbiAgICAgICAgICA8c3Bhbj5TYXJhbm5vIG1vc3RyYXRpIGFsIG1hc3NpbW8ge3tkaWFsb2dEYXRhLm1heEl0ZW1zfX0gZWxlbWVudGkuPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI3NlbGVjdGlvbiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCIgZGVuc2UgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcj1cInRydWVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiAoZGlhbG9nRGF0YS5pdGVtcyB8IHNlYXJjaDogKCFkaWFsb2dEYXRhLmNhbkxvb2t1cCA/IGZpbHRlclRleHQgOiAnJykpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgIDxtYXQtbGlzdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIiBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiaXRlbS50ZW1wbGF0ZSB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OjIwcHhcIj5cclxuICAgICAgICBAaWYgKHNlbGVjdGlvbkluZm8pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsXCI+c2VsZXppb25lOiA8L3NwYW4+PHNwYW4gY2xhc3M9XCJib2xkXCI+e3tzZWxlY3Rpb25JbmZvfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAoY2FuUGFnaW5hdGUpIHtcclxuICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiIWRpYWxvZ0RhdGEuaXRlbXMgfHwgZGlhbG9nRGF0YS5pdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cImRpYWxvZ0RhdGEucGFnZVNpemVcIiBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChwYWdlKT1cImRvTG9va3VwUGFnZSgkZXZlbnQpXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiICBbZGlzYWJsZWRdPVwib2tEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3tkaWFsb2dEYXRhLm11c3RTZWxlY3QgPyBkaWFsb2dEYXRhLm9rQ2FwdGlvbiA6ICdDaGl1ZGknfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGRpYWxvZ0RhdGEubXVzdFNlbGVjdCkge1xyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBjZGtGb2N1c0luaXRpYWwgIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuPkFubnVsbGE8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFN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TUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlciwgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlLCBNYXRTZWxlY3Rpb25MaXN0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xpc3RcIjtcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlLCBTZWFyY2hGaWx0ZXJQaXBlLCBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgU2VsZWN0RGlhbG9nQXBwZW5kLFxyXG4gIFNlbGVjdERpYWxvZ0RhdGEsXHJcbiAgU2VsZWN0RGlhbG9nRGVsZXRlLFxyXG4gIFNlbGVjdERpYWxvZ0xvb2t1cCxcclxuICBTZWxlY3REaWFsb2dSZXN1bHQsXHJcbiAgU2VsZWN0YWJsZUl0ZW0sXHJcbn0gZnJvbSBcIi4uLy4uL2RlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gXCJAbmdicmFja2V0L25neC1sYXlvdXQvZmxleFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWxlY3QtZGlhbG9nLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3NlbGVjdC1kaWFsb2cuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0TGlzdE1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIFNlYXJjaEZpbHRlclBpcGUsXHJcbiAgICBTYWZlSHRtbFBpcGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdGlvblwiKSBzZWxlY3Rpb24hOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8U2VsZWN0RGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnIH07XHJcblxyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcclxuICBAT3V0cHV0KCkgYXBwZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dBcHBlbmQ+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0RGlhbG9nRGVsZXRlPigpO1xyXG4gIEBPdXRwdXQoKSBsb29rdXAgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdERpYWxvZ0xvb2t1cD4oKTtcclxuICBAT3V0cHV0KCkgbG9va3VwT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIGNhbkVkaXQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBjYW5WaWV3ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuQXBwZW5kID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuRGVsZXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuUGFnaW5hdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvLyBIYW5kbGUgc3VibWl0IGJ1dHRvbiBhY3Rpdml0eVxyXG4gIHByb3RlY3RlZCBva0Rpc2FibGVkID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICAvLyBVc2VkIGZvciBhcnJheSBmaWx0ZXJpbmdcclxuICBwcm90ZWN0ZWQgZmlsdGVyVGV4dDogc3RyaW5nID0gXCJcIjtcclxuICBwcm90ZWN0ZWQgZmlsdGVyT3B0aW9uczogYW55ID0gW107XHJcbiAgcHJvdGVjdGVkIGZpbHRlck9wdGlvbnNJbmZvOiBzdHJpbmcgPSBcIlR1dHRvXCI7XHJcblxyXG4gIC8vIFVzZWQgdG8gc2luY3Jvbml6ZSBsb29rdXAgZmllbGRzIGFuZCBwYXJhbXNcclxuICBwcm90ZWN0ZWQgbG9va3VwRmllbGQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBsb29rdXBQYXJhbXM6IGFueTtcclxuXHJcblxyXG4gIC8vIFVzZWQgdG8gZGlzcGxheSBzZWxlY3RlZCBlbGVtZW50c1xyXG4gIHByb3RlY3RlZCBzZWxlY3Rpb25JbmZvOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByb3RlY3RlZCBzZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTWFzdGVyQ2hlY2tlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEuYXBwZWFyYW5jZSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuYXBwZWFyYW5jZSA9ICdvdXRsaW5lJztcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLnRpdGxlKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS50aXRsZSA9ICdTZWxlemlvbmEnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tdWx0aSAmJiAhdGhpcy5kaWFsb2dEYXRhLml0ZW1zKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5tdWx0aSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24pIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLm9rQ2FwdGlvbiA9IFwiT2tcIjtcclxuICAgIH1cclxuICAgIHRoaXMuY2FuQXBwZW5kLnNldCh0aGlzLmRpYWxvZ0RhdGEuY2FuQXBwZW5kKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5pdGVtcyA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmxvb2t1cEZpZWxkcyAmJiB0aGlzLmRpYWxvZ0RhdGEubG9va3VwRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmxvb2t1cEZpZWxkID0gdGhpcy5kaWFsb2dEYXRhLmxvb2t1cEZpZWxkc1swXS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhbkZpbHRlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9IHRoaXMuZGlhbG9nRGF0YS5maWx0ZXJzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuUGFnaW5hdGUpIHtcclxuICAgICAgICB0aGlzLmNhblBhZ2luYXRlLnNldCh0aGlzLmRpYWxvZ0RhdGEuY2FuUGFnaW5hdGUpO1xyXG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEucGFnZVNpemUgPSAxMDBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMub2tEaXNhYmxlZC5zZXQodGhpcy5kaWFsb2dEYXRhLm11c3RTZWxlY3QpO1xyXG5cclxuICAgIC8vIEFwcGx5IGZpbHRlciBpZiBleGlzdHNcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuZmlsdGVyIHx8IHRoaXMuZGlhbG9nRGF0YS5sb29rdXBPbkluaXQpIHtcclxuICAgICAgdGhpcy5kb0ZpbHRlcih0aGlzLmRpYWxvZ0RhdGEuZmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgZm9yIGNoZWNrXHJcbiAgICovXHJcbiAgbWFya0ZvckNoZWNrKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGV2ZXJ5IGVsZW1lbnQgYXJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGV4aXN0cyBhIHNlbGVjdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzU2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID4gMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hc3RlciBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hc3RlclNlbGVjdGlvblRvZ2dsZShhcmdzOiBhbnkpIHtcclxuICAgIGlmIChhcmdzLmNoZWNrZWQpXHJcbiAgICAgIC8vIERlc2VsZWN0IGlmIG5vdCBhbGxzZWxlY3RlZCBzbyB0aGF0IHRvZ2dsZSBtYWtlcyB0aGUgcmlnaHQgY2hvaWNlXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckNoZWNrZWQgPSBhcmdzLmNoZWNrZWQ7XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVzdFNlbGVjdCAmJlxyXG4gICAgICAoIXRoaXMuc2VsZWN0aW9uIHx8IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDApKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiBhbiBpdGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNlbGVjdChlOiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLm11bHRpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0QWxsKCk7XHJcbiAgICAgIGlmIChlLm9wdGlvbnM/Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgZS5vcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5va0Rpc2FibGVkLnNldChmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KFxyXG4gICAgICAgIHRoaXMuZGlhbG9nRGF0YS5tdXN0U2VsZWN0ICYmXHJcbiAgICAgICAgKCF0aGlzLnNlbGVjdGlvbiB8fFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBlZGl0b3JzXHJcbiAgICB0aGlzLmNhbkFwcGVuZC5zZXQodGhpcy5kaWFsb2dEYXRhLmNhbkFwcGVuZCk7XHJcbiAgICB0aGlzLmNhbkVkaXQuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuY2FuRWRpdCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbiAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAxKTtcclxuICAgIHRoaXMuY2FuVmlldy5zZXQoXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5jYW5WaWV3ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDEpO1xyXG4gICAgdGhpcy5jYW5EZWxldGUuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuY2FuRGVsZXRlICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPiAwKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZS5zZXQoXHJcbiAgICAgICF0aGlzLmlzQWxsU2VsZWN0ZWQoKSAmJiB0aGlzLmhhc1NlbGVjdGlvbigpKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVyQ2hlY2tlZC5zZXQodGhpcy5oYXNTZWxlY3Rpb24oKSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkluZm8oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBzZWxlY3Rpb24gaW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uSW5mbygpIHtcclxuICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gaW5mb1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuZGlhbG9nRGF0YS5tdWx0aSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkluZm8gPVxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggK1xyXG4gICAgICAgIFwiIC8gXCIgK1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLm9wdGlvbnMubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25JbmZvID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVyQ2hlY2tlZC5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uSW5mbyA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9rKCkge1xyXG4gICAgaWYgKCF0aGlzLm9rRGlzYWJsZWQoKSkge1xyXG4gICAgICAvLyBNdWx0aSBzZWxlY3Rpb25cclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGVsZW1lbnQudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gXCJcIjtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGZpbHRlciBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dGaWx0ZXJPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMubG9va3VwT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmxvb2t1cE9wdGlvbnMuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgZmlsdGVyXHJcbiAgICogQHBhcmFtIHRleHQgOiB0aGUgc3RyaW5nIHRvIGZpbHRlciB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsLCBlOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkge1xyXG4gICAgICB0aGlzLmZpbHRlclRleHQgPSB0ZXh0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXApIHtcclxuICAgICAgaWYgKCFlIHx8IGUua2V5Q29kZSA9PT0gMTMpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgZmlsdGVyOiB0aGlzLmZpbHRlclRleHQgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlciB1c2luZyBmaWx0ZXIgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBmaWx0ZXJPUHRpb24gOiB0aGUgY3VycmVudCBmaWx0ZXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9GaWx0ZXJCeU9wdGlvbnMoZmlsdGVyT3B0aW9uOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXIuZW1pdCh7XHJcbiAgICAgICAgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyxcclxuICAgICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVyVGV4dCxcclxuICAgICAgICBmaWx0ZXJPcHRpb246IGZpbHRlck9wdGlvbixcclxuICAgICAgICBvd25lcjogdGhpcyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXIuIFRoaXMgaXMgYWNjZXNzaWJsZSBmcm9tIHB1YmxpY1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgOiB0aGUgb2JqZWN0IHdpdGggY3VycmVudCBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgZG9Mb29rdXAocGFyYW1zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwKSB7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICB0aGlzLmxvb2t1cFBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICAgIHRoaXMubG9va3VwLmVtaXQoeyBpdGVtczogdGhpcy5kaWFsb2dEYXRhLml0ZW1zLCBwYXJhbXM6IHRoaXMubG9va3VwUGFyYW1zLCBvd25lcjogdGhpcyB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbG9va3VwIHBhZ2luYXRyb1xyXG4gICAqIEBwYXJhbSB0b3RhbCA6IHRoZSBuZXcgdG90YWwgaXRlbXNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlTG9va3VwUGFnaW5hdG9yKHRvdGFsOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmNhblBhZ2luYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gdG90YWwgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBcHBseSBmaWx0ZXJcclxuICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGRvTG9va3VwUGFnZShlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5QYWdpbmF0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gZS5wYWdlSW5kZXggKiAodGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID8/IDApO1xyXG4gICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgcGFyYW1zOiB0aGlzLmxvb2t1cFBhcmFtcywgb3duZXI6IHRoaXMgfSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBlbmRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9BcHBlbmQoKSB7XHJcbiAgICB0aGlzLmFwcGVuZC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyB9IGFzIFNlbGVjdERpYWxvZ0FwcGVuZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0VkaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkKXtcclxuICAgICAgdGhpcy5lZGl0LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkWzBdLnZhbHVlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZpZXdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9WaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnZpZXcuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWRbMF0udmFsdWUpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvRGVsZXRlKCkge1xyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGVsZW1lbnQudmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRlbGV0ZS5lbWl0KHtcclxuICAgICAgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcyxcclxuICAgICAgc2VsZWN0ZWRJdGVtczogc2VsZWN0ZWRJdGVtcyxcclxuICAgIH0gYXMgU2VsZWN0RGlhbG9nRGVsZXRlKTtcclxuICAgIHRoaXMuY2FuRGVsZXRlLnNldChmYWxzZSk7XHJcbiAgICBcclxuICB9XHJcbn1cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3tkaWFsb2dEYXRhLnRpdGxlfX08L2gyPlxyXG48ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4XCI+XHJcbiAgQGlmIChkaWFsb2dEYXRhLmRlc2NyaXB0aW9uKSB7XHJcbiAgPGRpdiBjbGFzcz1cInNlbGVjdGZpbGUtZGVzY3JpcHRpb25cIiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZGVzY3JpcHRpb24gfCBzYWZlSHRtbFwiPjwvZGl2PlxyXG4gIH1cclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMjBweFwiIGZ4RmlsbD5cclxuICAgICAgQGlmICghZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT0nd2lkdGg6MTAwJScgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2RrRm9jdXNJbml0aWFsIChrZXl1cC5FbnRlcik9XCJkb0ZpbHRlcigpXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgdGl0bGU9XCJ7e2RpYWxvZ0RhdGEuY2FuTG9va3VwID8gJ0RpZ2l0YSBpbCB0ZXN0byBlIHByZW1pIGludmlvJyA6ICdEaWdpdGEgaWwgdGVzdG8nfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlclRleHRcIj5cclxuICAgICAgICAgIEBpZiAoZmlsdGVyVGV4dCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuY2FuTG9va3VwV2l0aE9wdGlvbnMgJiYgZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgZGlhbG9nRGF0YS5sb29rdXBGaWVsZHMpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9J3dpZHRoOjEwMCUnIFthcHBlYXJhbmNlXT1cImRpYWxvZ0RhdGEuYXBwZWFyYW5jZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q29tZS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwibG9va3VwRmllbGRcIj5cclxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgZGlhbG9nRGF0YS5sb29rdXBGaWVsZHM7IHRyYWNrIGZpZWxkKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmaWVsZC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZmllbGQubmFtZX19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBhcmlhLWxhYmVsPVwiUmljZXJjYVwiIChjbGljayk9XCJzaG93RmlsdGVyT3B0aW9ucygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5SaWNlcmNhXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cIndoaXRlLXNwYWNlOm5vd3JhcFwiPlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiRmlsdHJhXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRmlsdHJhJ1wiXHJcbiAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUZpbHRlclwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmZpbHRlcl9hbHQ8L21hdC1pY29uPiB7e2ZpbHRlck9wdGlvbnNJbmZvfX0gPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPlxyXG4gICAgICAgICAgICBhcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUZpbHRlcj1cIm1hdE1lbnVcIiBjbGFzcz1cIm1hdC1tZW51LTMwMFwiPlxyXG4gICAgICAgICAgQGZvciAoZiBvZiBmaWx0ZXJPcHRpb25zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChmLmdyb3VwTmFtZSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZTpzbWFsbDsgcGFkZGluZzogMnB4IDRweDsnPjxpPjxiPnt7Zi5ncm91cE5hbWV9fTwvYj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghZi5ncm91cE5hbWUgJiYgIWYuZGl2aWRlcikge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb0ZpbHRlckJ5T3B0aW9ucyhmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICBAaWYgKGYucmFkaW8gJiYgZi52YWx1ZSkge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmctbGVmdDo0MHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj57e2YuaWNvbn19PC9tYXQtaWNvbj4ge3tmLnRpdGxlfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGNhbkVkaXQoKSB8fCBjYW5BcHBlbmQoKSB8fCBjYW5WaWV3KCkgfHwgY2FuRGVsZXRlKCkpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6bm93cmFwXCI+XHJcbiAgICAgICAgQGlmIChjYW5BcHBlbmQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvQXBwZW5kKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiQWdnaXVuZ2lcIiBtYXRUb29sdGlwPVwiQWdnaXVuZ2lcIj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9FZGl0KClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiTW9kaWZpY2FcIiBtYXRUb29sdGlwPVwiTW9kaWZpY2FcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5WaWV3KCkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvVmlldygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gYXJpYS1sYWJlbD1cIk1vc3RyYVwiIG1hdFRvb2x0aXA9XCJNb3N0cmFcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5EZWxldGUoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9EZWxldGUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFbGltaW5hXCIgbWF0VG9vbHRpcD1cIkVsaW1pbmFcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoKGRpYWxvZ0RhdGEubXVsdGkgfHwgZGlhbG9nRGF0YS5oZWFkZXIpICYmIGRpYWxvZ0RhdGEuaXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmFseW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTBweDtcIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCI3MnB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4O1wiPlxyXG4gICAgICAgIEBpZiAoZGlhbG9nRGF0YS5tdWx0aSkge1xyXG4gICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJTZWxlY3Rpb25Ub2dnbGUoJGV2ZW50KSA6IG51bGxcIlxyXG4gICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZSgpXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uTWFzdGVyQ2hlY2tlZCgpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlbGV6aW9uYS9kZXNlbGV6aW9uYSB0dXR0bydcIiBtYXRUb29sdGlwPVwiU2VsZXppb25hL2Rlc2VsZXppb25hIHR1dHRvXCI+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAoZGlhbG9nRGF0YS5oZWFkZXIpIHtcclxuICAgICAgICA8ZGl2ICBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuaGVhZGVyIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgKCFkaWFsb2dEYXRhLml0ZW1zIHx8IGRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoID09IDApKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPjxpPlxyXG4gICAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlKSB7XHJcbiAgICAgICAgPHNwYW4+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48YnI+RXNlZ3VpIHVuYSBudW92YSByaWNlcmNhIG8gbW9kaWZpY2EgcXVlbGxhXHJcbiAgICAgICAgICBlc2lzdGVudGUuXHJcbiAgICAgICAgICBAaWYgKGRpYWxvZ0RhdGEubWF4SXRlbXMgPiAwKSB7XHJcbiAgICAgICAgICA8c3Bhbj5TYXJhbm5vIG1vc3RyYXRpIGFsIG1hc3NpbW8ge3tkaWFsb2dEYXRhLm1heEl0ZW1zfX0gZWxlbWVudGkuPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI3NlbGVjdGlvbiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCIgZGVuc2UgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcj1cInRydWVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiAoZGlhbG9nRGF0YS5pdGVtcyB8IHNlYXJjaDogKCFkaWFsb2dEYXRhLmNhbkxvb2t1cCA/IGZpbHRlclRleHQgOiAnJykpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgIDxtYXQtbGlzdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIiBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiaXRlbS50ZW1wbGF0ZSB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OjIwcHhcIj5cclxuICAgICAgICBAaWYgKHNlbGVjdGlvbkluZm8pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsXCI+c2VsZXppb25lOiA8L3NwYW4+PHNwYW4gY2xhc3M9XCJib2xkXCI+e3tzZWxlY3Rpb25JbmZvfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAoY2FuUGFnaW5hdGUpIHtcclxuICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiIWRpYWxvZ0RhdGEuaXRlbXMgfHwgZGlhbG9nRGF0YS5pdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cImRpYWxvZ0RhdGEucGFnZVNpemVcIiBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChwYWdlKT1cImRvTG9va3VwUGFnZSgkZXZlbnQpXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiICBbZGlzYWJsZWRdPVwib2tEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3tkaWFsb2dEYXRhLm11c3RTZWxlY3QgPyBkaWFsb2dEYXRhLm9rQ2FwdGlvbiA6ICdDaGl1ZGknfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGRpYWxvZ0RhdGEubXVzdFNlbGVjdCkge1xyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBjZGtGb2N1c0luaXRpYWwgIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuPkFubnVsbGE8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -724,6 +724,12 @@ class SelectDialogComponent {
724
724
  this.doFilter(this.dialogData.filter);
725
725
  }
726
726
  }
727
+ /**
728
+ * Mark for check
729
+ */
730
+ markForCheck() {
731
+ this.changeDetector.markForCheck();
732
+ }
727
733
  /**
728
734
  * Check if every element are selected
729
735
  */
@@ -786,7 +792,6 @@ class SelectDialogComponent {
786
792
  this.selectionMasterIndeterminate.set(!this.isAllSelected() && this.hasSelection());
787
793
  this.selectionMasterChecked.set(this.hasSelection());
788
794
  this.updateSelectionInfo();
789
- this.changeDetector.markForCheck();
790
795
  }
791
796
  /**
792
797
  * Update selection info
@@ -840,7 +845,6 @@ class SelectDialogComponent {
840
845
  showFilterOptions() {
841
846
  if (this.lookupOptions) {
842
847
  this.lookupOptions.emit();
843
- this.changeDetector.markForCheck();
844
848
  }
845
849
  }
846
850
  /**
@@ -854,7 +858,6 @@ class SelectDialogComponent {
854
858
  if (this.dialogData.canLookup) {
855
859
  if (!e || e.keyCode === 13) {
856
860
  this.lookup.emit({ items: this.dialogData.items, filter: this.filterText });
857
- this.changeDetector.markForCheck();
858
861
  }
859
862
  }
860
863
  }