@porscheinformatik/material-addons 14.1.0 → 14.1.1

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.
package/README.md CHANGED
@@ -17,7 +17,7 @@ Material addons requires an already set-up Angular Material project. To do a fre
17
17
  2. Add the stylesheet at the top of your projects from the folder **themes**, for example:
18
18
 
19
19
  ```
20
- @import '~@porscheinformatik/material-addons/themes/pvb';
20
+ @import '@porscheinformatik/material-addons/themes/poa';
21
21
  ```
22
22
 
23
23
  3. To use a component, you need to import the Module of the component in your app.module.ts:
@@ -192,8 +192,10 @@ export class DataTableComponent {
192
192
  }
193
193
  }
194
194
  ngAfterViewInit() {
195
- this.dataSource.paginator = this.paginator;
196
- this.dataSource.sort = this.sort;
195
+ if (!this.useAsync) {
196
+ this.dataSource.paginator = this.paginator;
197
+ this.dataSource.sort = this.sort;
198
+ }
197
199
  }
198
200
  onColumnSettings(definition) {
199
201
  this.showColumnModal = true;
@@ -501,4 +503,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
501
503
  type: ViewChild,
502
504
  args: [MatSort, { static: true }]
503
505
  }] } });
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBR3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVEvRyxNQUFNLE9BQU8sa0JBQWtCO0lBdUo3QixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBdEp4QyxlQUFlO1FBQ04sZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLFFBQVEsQ0FBQztRQUM5Qiw2QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztRQUN0RCxlQUFVLEdBQUcsd0JBQXdCLENBQUM7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U0FBUztzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNKLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBEYXRhVGFibGVBY3Rpb24gfSBmcm9tICcuL2RhdGEtdGFibGUtYWN0aW9uJztcbmltcG9ydCB7IERhdGFUYWJsZUFjdGlvblR5cGUgfSBmcm9tICcuL2RhdGEtdGFibGUtYWN0aW9uLXR5cGUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uc01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbnMtbW9kYWwvZGF0YS10YWJsZS1jb2x1bW5zLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uLCBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uQ2hhbmdlLCBEYXRhVGFibGVEaWFsb2dEYXRhIH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbi1kZWZpbml0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgLy8gVHJhbnNsYXRpb25zXG4gIEBJbnB1dCgpIGZpbHRlckxhYmVsID0gJ0ZpbHRlcic7XG4gIEBJbnB1dCgpIGZpbHRlclBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbnNMYWJlbCA9ICdGaWx0ZXInO1xuICBASW5wdXQoKSBmaWx0ZXJDb2x1bW5zUGxhY2VIb2xkZXIgPSAnRmlsdGVyIGF2YWlsYWJsZSBjb2x1bW5zJztcbiAgQElucHV0KCkgbm9EYXRhVGV4dCA9ICdObyBtYXRjaGluZyBkYXRhIGZvdW5kJztcbiAgQElucHV0KCkgY29sdW1uU2V0dGluZ3NNb2RhbFRpdGxlTGFiZWwgPSAnQ29sdW1uIHNldHRpbmdzJztcbiAgQElucHV0KCkgc2VsZWN0ZWRMYWJlbCA9ICdTZWxlY3RlZCBjb2x1bW5zJztcbiAgQElucHV0KCkgYXZhaWxhYmxlTGFiZWwgPSAnQXZhaWxhYmxlIGNvbHVtbnMnO1xuICBASW5wdXQoKSBzYXZlTGFiZWwgPSAnU2F2ZSc7XG4gIEBJbnB1dCgpIGRlbGV0ZUxhYmVsID0gJ0RlbGV0ZSc7XG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsID0gJ0NhbmNlbCc7XG4gIEBJbnB1dCgpIGluZm9UZXh0TGFiZWwgPSAnRHJhZyBhbmQgZHJvcCBhIGNvbHVtbiB0byBzZWxlY3Qgb3IgcmVvcmRlciBpdC4nO1xuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNV07XG4gIEBJbnB1dCgpIGV4dGVybmFsRmlsdGVyOiBhbnk7XG5cbiAgQElucHV0KCkgYWN0aW9uczogRGF0YVRhYmxlQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgaWRHZW5lcmF0b3I6IGFueTtcbiAgQElucHV0KCkgZGVsZXRlRGVmaW5pdGlvbkFsbG93ZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB1c2VBc3luYyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5ZWRDb2x1bW5zKGNvbHM6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BsYXllZENvbHVtbkRlZmluaXRpb24pIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHMgPyBbLi4uY29sc10gOiBbXTtcbiAgICAgIHRoaXMuY29sdW1uSWRzID0gdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmlkKTtcbiAgICAgIHRoaXMuY29sdW1uSWRzLnVuc2hpZnQodGhpcy5BQ1RJT05fQ09MVU1OX05BTUUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5ZWRDb2x1bW5EZWZpbml0aW9uKGRlZjogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5EZWZpbmlvbiA9IGRlZjtcbiAgICB0aGlzLmNvbHVtbnMgPSBkZWYuZGlzcGxheWVkQ29sdW1ucztcbiAgICB0aGlzLmNvbHVtbklkcyA9IHRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5pZCk7XG4gICAgdGhpcy5jb2x1bW5JZHMudW5zaGlmdCh0aGlzLkFDVElPTl9DT0xVTU5fTkFNRSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgdGFibGVEYXRhKGRhdGE6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVEYXRhTWFwc0FuZFNldERpc3BsYXllZERhdGFTb3VyY2VEYXRhKGRhdGEpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHBhZ2UocGFnZTogUGFnZUV2ZW50KSB7XG4gICAgdGhpcy5wYWdpbmF0b3JQYWdlSW5kZXggPSBwYWdlLnBhZ2VJbmRleDtcbiAgICB0aGlzLnBhZ2luYXRvclBhZ2VTaXplID0gcGFnZS5wYWdlU2l6ZTtcbiAgICB0aGlzLnBhZ2luYXRvckxlbmd0aCA9IHBhZ2UubGVuZ3RoO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNvbHVtbkRlZmluaXRpb25zKGRlZmluaXRpb25zOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uW10pIHtcbiAgICB0aGlzLmVkaXRhYmxlQ29sdW1uRGVmaW5pdGlvbnMgPSBbXTtcbiAgICB0aGlzLnZpZXdhYmxlQ29sdW1uRGVmaW5pdGlvbnMgPSBbXTtcbiAgICB0aGlzLmFsbENvbHVtbkRlZmluaXRpb25zID0gWy4uLmRlZmluaXRpb25zXTtcbiAgICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZGVmaW5pdGlvbnMpIHtcbiAgICAgIGlmIChkZWZpbml0aW9uLmVkaXRhYmxlKSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVDb2x1bW5EZWZpbml0aW9ucy5wdXNoKGRlZmluaXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmluaXRpb24uZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnZpZXdhYmxlQ29sdW1uRGVmaW5pdGlvbnMucHVzaChkZWZpbml0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0UGFnZVNpemUoZGVmYXVsdFNpemU6IG51bWJlcikge1xuICAgIHRoaXMucGFnaW5hdG9yUGFnZVNpemUgPSBkZWZhdWx0U2l6ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBleHRlcm5hbFBhZ2luYXRvcihwYWdpbmF0b3I6IGFueSkge1xuICAgIHRoaXMuZXh0UGFnaW5hdG9yID0gcGFnaW5hdG9yO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHBhZ2luYXRpb25FbmFibGVkKGlzUGFnaW5hdGlvbkVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUGFnaW5hdGlvbkVuYWJsZWQgPSBpc1BhZ2luYXRpb25FbmFibGVkO1xuICAgIHRoaXMudW5zZXRQYWdlU2l6ZUlmTmVjZXNzYXJ5KCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgYWxsQ29sdW1ucyhhbGxDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuYWxsQXZhaWxhYmxlQ29sdW1ucyA9IGFsbENvbHVtbnM7XG4gICAgaWYgKGFsbENvbHVtbnMgJiYgdGhpcy5zaG93Q29sdW1uTW9kYWwpIHtcbiAgICAgIHRoaXMub3BlbkNvbHVtbk1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGZpbHRlckVuYWJsZWQoaXNGaWx0ZXJFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0ZpbHRlckVuYWJsZWQgPSAhdGhpcy51c2VBc3luYyA/IGlzRmlsdGVyRW5hYmxlZCA6IGZhbHNlO1xuICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBmb3JjZU1vZGUobW9kZTogc3RyaW5nKSB7XG4gICAgaWYgKG1vZGUgPT09IHRoaXMuU0lOR0xFIHx8IG1vZGUgPT09IHRoaXMuQkFUQ0ggfHwgbW9kZSA9PT0gdGhpcy5OT05FKSB7XG4gICAgICB0aGlzLl9mb3JjZU1vZGUgPSBtb2RlO1xuICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgIHRoaXMuc2V0QWN0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBzb3J0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlQWN0aW9uPigpO1xuICBAT3V0cHV0KCkgcGFnZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbGxDb2x1bW5zRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjb2x1bW5EZWZpbml0aW9uQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25DaGFuZ2U+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RGVmaW5pdGlvbkNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uPigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydDogTWF0U29ydDtcblxuICByZWFkb25seSBBQ1RJT05fQ09MVU1OX05BTUUgPSAnX19hY3Rpb25fXyc7XG4gIHJlYWRvbmx5IFNJTkdMRSA9IERhdGFUYWJsZUFjdGlvblR5cGUuU0lOR0xFO1xuICByZWFkb25seSBCQVRDSCA9IERhdGFUYWJsZUFjdGlvblR5cGUuQkFUQ0g7XG4gIHJlYWRvbmx5IE5PTkUgPSBEYXRhVGFibGVBY3Rpb25UeXBlLk5PTkU7XG5cbiAgdGFibGVBY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICByb3dBY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICBjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtdO1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBzZWxlY3RlZDogW107XG4gIF9mb3JjZU1vZGU6IHN0cmluZztcbiAgZGlzcGxheWVkRGF0YU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGFjdHVhbERhdGFNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55W10+O1xuICBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUpO1xuICBjb2x1bW5JZHM6IHN0cmluZ1tdO1xuICBhbGxDb2x1bW5EZWZpbml0aW9uczogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbltdID0gW107XG4gIGVkaXRhYmxlQ29sdW1uRGVmaW5pdGlvbnM6IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25bXTtcbiAgdmlld2FibGVDb2x1bW5EZWZpbml0aW9uczogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbltdO1xuICBzZWxlY3RlZENvbHVtbkRlZmluaW9uOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uO1xuICBhbGxBdmFpbGFibGVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXTtcbiAgc2VsZWN0ZWREZWZpbml0aW9uOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uO1xuICBkZWZhdWx0QWN0aW9uOiBEYXRhVGFibGVBY3Rpb247XG4gIGlzRmlsdGVyRW5hYmxlZCA9IGZhbHNlO1xuICBpc1BhZ2luYXRpb25FbmFibGVkID0gZmFsc2U7XG4gIG1vZGUgPSB0aGlzLk5PTkU7XG4gIGlzUm93Q2xpY2thYmxlID0gZmFsc2U7XG4gIHNob3dDb2x1bW5Nb2RhbCA9IGZhbHNlO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgZXh0UGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgcGFnaW5hdG9yTGVuZ3RoID0gMDtcbiAgcGFnaW5hdG9yUGFnZUluZGV4ID0gMDtcbiAgcGFnaW5hdG9yUGFnZVNpemUgPSA1MDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHN0YXRpYyBjb21wYXJlKGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGI6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvcnQ6IFNvcnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHggPSBhW3NvcnQuYWN0aXZlXTtcbiAgICBjb25zdCB5ID0gYltzb3J0LmFjdGl2ZV07XG4gICAgY29uc3QgYXNjZW5kaW5nID0gc29ydC5kaXJlY3Rpb24gPT09ICdhc2MnO1xuICAgIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBEYXRhVGFibGVDb21wb25lbnQuY29tcGFyZU51bWJlcih4LCB5LCBhc2NlbmRpbmcpO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIERhdGFUYWJsZUNvbXBvbmVudC5jb21wYXJlU3RyaW5nKHgsIHksIGFzY2VuZGluZyk7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIERhdGFUYWJsZUNvbXBvbmVudC5jb21wYXJlQm9vbGVhbih4LCB5LCBhc2NlbmRpbmcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gY2Fubm90IGNvbXBhcmUgLT4gcmV0dXJuIGVxdWFsXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlTnVtYmVyKHg6IG51bWJlciwgeTogbnVtYmVyLCBhc2NlbmRpbmc6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBhc2NlbmRpbmcgPyB4IC0geSA6IHkgLSB4O1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVTdHJpbmcoeDogc3RyaW5nLCB5OiBzdHJpbmcsIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGFzY2VuZGluZyA/IHgubG9jYWxlQ29tcGFyZSh5KSA6IHkubG9jYWxlQ29tcGFyZSh4KTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlQm9vbGVhbih4OiBib29sZWFuLCB5OiBib29sZWFuLCBhc2NlbmRpbmc6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGFzY2VuZGluZykge1xuICAgICAgLy8gdHJ1ZSBmaXJzdFxuICAgICAgcmV0dXJuIHggPyAtMSA6IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZhbHNlIGZpcnN0XG4gICAgICByZXR1cm4geCA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgdHJhbnNmb3JtRGF0YSh2YWx1ZTogYW55LCB0cmFuc2Zvcm1lcjogYW55LCB0cmFuc2Zvcm1lclBhcmFtczogYW55KTogYW55IHtcbiAgICBpZiAoIXRyYW5zZm9ybWVyIHx8ICEodHJhbnNmb3JtZXIgaW5zdGFuY2VvZiBGdW5jdGlvbikpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVyKHZhbHVlLCB0cmFuc2Zvcm1lclBhcmFtcyk7XG4gIH1cblxuICBzdGF0aWMgZ2VuZXJhdGVSb3dJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkVjQoKTtcbiAgfVxuXG4gIHN0YXRpYyBpc0NsaWNrT25Sb3dNZW51SWNvbihldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsYXNzTGlzdC5jb250YWlucygnbWF0LWljb24nKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZSA9IHRoaXMuZ2V0VGFibGVNb2RlKCk7XG4gICAgdGhpcy5zZXRBY3Rpb25zKCk7XG4gICAgaWYgKHRoaXMubW9kZSAhPT0gdGhpcy5OT05FKSB7XG4gICAgICB0aGlzLmlzUm93Q2xpY2thYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbiA9IHRoaXMucm93QWN0aW9uc1swXTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICB9XG5cbiAgb25Db2x1bW5TZXR0aW5ncyhkZWZpbml0aW9uPzogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NvbHVtbk1vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbiA9IGRlZmluaXRpb24gPyBkZWZpbml0aW9uIDogdGhpcy5hbGxDb2x1bW5EZWZpbml0aW9uc1swXTtcbiAgICBpZiAodGhpcy5hbGxBdmFpbGFibGVDb2x1bW5zKSB7XG4gICAgICB0aGlzLm9wZW5Db2x1bW5Nb2RhbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBubyBjb21wbGV0ZSBkZWZpbml0aW9ucyBoYXZlIGJlZW4gbG9hZGVkIHlldCBzZW5kIGFuIGV2ZW50IHNvIHRoZSBhcHAgY2FuIGxvYWQgaXRcbiAgICAgIHRoaXMuYWxsQ29sdW1uc0V2ZW50LmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvblZpZXdEZWZpbml0aW9uKGRlZmluaXRpb246IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gICAgdGhpcy52aWV3RGVmaW5pdGlvbkNoYW5nZUV2ZW50LmVtaXQoZGVmaW5pdGlvbik7XG4gIH1cblxuICBpc0N1cnJlbnREZWZpbml0aW9uKGRlZmluaXRpb246IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERlZmluaXRpb24gJiYgdGhpcy5zZWxlY3RlZERlZmluaXRpb24uaWQgPT09IGRlZmluaXRpb24uaWQ7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZCA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCByb3dDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEFsbERhdGFTb3VyY2VSb3dzT2ZDdXJyZW50UGFnZSgpID8gdGhpcy5nZXRBbGxEYXRhU291cmNlUm93c09mQ3VycmVudFBhZ2UoKS5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0QWxsRGF0YVNvdXJjZVJvd3NPZkN1cnJlbnRQYWdlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5fcGFnZURhdGEodGhpcy5kYXRhU291cmNlLmRhdGEpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudChhY3Rpb25UeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5zZWxlY3RlZENvdW50O1xuICAgIGlmIChhY3Rpb25UeXBlICE9PSB0aGlzLkJBVENIIHx8IGNvdW50IDwgMikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gJyAoJyArIGNvdW50ICsgJyknO1xuICB9XG5cbiAgaXNEaXNhYmxlZChhY3Rpb25UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGFjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5TSU5HTEU6XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnQgIT09IDE7XG4gICAgICBjYXNlIHRoaXMuQkFUQ0g6XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnQgPCAxO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uVG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIC8vIGNsZWFyIGFsbCBzZWxlY3Rpb24gZmlyc3RcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgLy8gdG9nZ2xlIGFsbCBjaGVja2JveFxuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSAhdGhpcy5hbGxTZWxlY3RlZDtcbiAgICBpZiAodGhpcy5hbGxTZWxlY3RlZCkge1xuICAgICAgLy8gc2VsZWN0IGFsbCByb3dzIG9mIHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgIHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVJvd3NPZkN1cnJlbnRQYWdlKCkuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdCgnJyArIHJvdy5yb3dJZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKHJvd0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHJvd0lkKTtcbiAgfVxuXG4gIHNldEZpbHRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdmFsdWU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgb25Sb3dDaGVja2JveChldmVudDogTW91c2VFdmVudCwgcm93OiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gbm8gY2xpY2sgZXZlbnQgb24gcm93XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUocm93LnJvd0lkKTtcbiAgfVxuXG4gIG9uUm93RXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogYW55LCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSB0aGlzLkJBVENIOlxuICAgICAgICB0aGlzLm9uUm93Q2hlY2tib3goZXZlbnQsIHJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLlNJTkdMRTpcbiAgICAgICAgLy8gZW1pdCB0aGUgZGVmYXVsdCBhY3Rpb24gaWYgdGhlIHJvdyAobm90IHRoZSBpY29uISkgd2FzIGNsaWNrZWRcbiAgICAgICAgaWYgKCEhYWN0aW9uICYmICFEYXRhVGFibGVDb21wb25lbnQuaXNDbGlja09uUm93TWVudUljb24oZXZlbnQpKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgICAvLyBpZiBJRC1nZW5lcmF0b3IgaXMgcHJvdmlkZWQsIHJldHVybiB0aGUgSUQsIGVsc2UgcmV0dXJuIHRoZSBBQ1RVQUwgZGF0YVxuICAgICAgICAgIHNlbGVjdGVkLnB1c2godGhpcy5pZEdlbmVyYXRvciA/IHJvdy5yb3dJZCA6IHRoaXMuYWN0dWFsRGF0YU1hcC5nZXQocm93LnJvd0lkKSk7XG4gICAgICAgICAgdGhpcy5lbWl0VGFibGVBY3Rpb24oYWN0aW9uLCBzZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBkbyBub3RoaW5nIGlmIG1vZGUgaXMgTk9ORSAob3IgbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uU29ydGluZ0V2ZW50KHNvcnQ6IFNvcnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51c2VBc3luYykge1xuICAgICAgdGhpcy5zb3J0RXZlbnQuZW1pdChzb3J0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbFNvcnQoc29ydCk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlRXZlbnQoZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVzZUFzeW5jKSB7XG4gICAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBvblRhYmxlQWN0aW9uKHRhYmxlQWN0aW9uOiBEYXRhVGFibGVBY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoISF0YWJsZUFjdGlvbikge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBzZWxlY3RlZCBvZiB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkKSB7XG4gICAgICAgIHNlbGVjdGlvbi5wdXNoKHRoaXMuaWRHZW5lcmF0b3IgPyBzZWxlY3RlZCA6IHRoaXMuYWN0dWFsRGF0YU1hcC5nZXQoc2VsZWN0ZWQpKTtcbiAgICAgIH1cbiAgICAgIHRhYmxlQWN0aW9uLnNlbGVjdGVkID0gc2VsZWN0aW9uO1xuICAgICAgdGhpcy5hY3Rpb25FdmVudC5lbWl0KHRhYmxlQWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRUYWJsZUFjdGlvbihhY3Rpb246IERhdGFUYWJsZUFjdGlvbiwgc2VsZWN0ZWQ6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZW1pdEFjdGlvbiA9IHsgLi4uYWN0aW9uIH07XG4gICAgaWYgKGFjdGlvbi50eXBlICE9PSB0aGlzLk5PTkUpIHtcbiAgICAgIGVtaXRBY3Rpb24uc2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWRdO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvbkV2ZW50LmVtaXQoZW1pdEFjdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGlzcGxheWVkRGF0YUVsZW1lbnQocm93SWQ6IHN0cmluZywgYWN0dWFsRGF0YUVsZW1lbnQ6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZGlzcGxheWVkRGF0YUVsZW1lbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBkaXNwbGF5ZWREYXRhRWxlbWVudC5yb3dJZCA9IHJvd0lkO1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxEYXRhRWxlbWVudFtjb2x1bW4uZGF0YVByb3BlcnR5TmFtZV07XG4gICAgICBkaXNwbGF5ZWREYXRhRWxlbWVudFtjb2x1bW4uZGF0YVByb3BlcnR5TmFtZV0gPSBEYXRhVGFibGVDb21wb25lbnQudHJhbnNmb3JtRGF0YShcbiAgICAgICAgYWN0dWFsVmFsdWUsXG4gICAgICAgIGNvbHVtbi50cmFuc2Zvcm1lcixcbiAgICAgICAgY29sdW1uLnRyYW5zZm9ybWVyUGFyYW1zLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpc3BsYXllZERhdGFFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbFNvcnQoc29ydDogU29ydCkge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSBbLi4udGhpcy5kYXRhU291cmNlLmRhdGFdLnNvcnQoKGEsIGIpID0+IERhdGFUYWJsZUNvbXBvbmVudC5jb21wYXJlKGEsIGIsIHNvcnQpKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFsuLi5zb3J0ZWREYXRhXTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnRhYmxlQWN0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubW9kZSAhPT0gYWN0aW9uLmhpZGRlbkluTW9kZSkge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgY2FzZSB0aGlzLlNJTkdMRTpcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuU0lOR0xFKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnRhYmxlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIHRoaXMuQkFUQ0g6XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlICE9PSB0aGlzLlNJTkdMRSkge1xuICAgICAgICAgICAgICB0aGlzLnRhYmxlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEYXRhTWFwc0FuZFNldERpc3BsYXllZERhdGFTb3VyY2VEYXRhKGRhdGE6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZGlzcGxheWVkRGF0YUxpc3QgPSBbXTtcbiAgICB0aGlzLmFjdHVhbERhdGFNYXAuY2xlYXIoKTtcbiAgICB0aGlzLmRpc3BsYXllZERhdGFNYXAuY2xlYXIoKTtcbiAgICBpZiAoZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBkYXRhRW50cnkgb2YgZGF0YSkge1xuICAgICAgICBjb25zdCByb3dJZCA9IHRoaXMuaWRHZW5lcmF0b3IgPyB0aGlzLmlkR2VuZXJhdG9yKGRhdGFFbnRyeSkgOiBEYXRhVGFibGVDb21wb25lbnQuZ2VuZXJhdGVSb3dJZCgpO1xuICAgICAgICB0aGlzLmFjdHVhbERhdGFNYXAuc2V0KHJvd0lkLCBkYXRhRW50cnkpO1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWREYXRhRWxlbWVudCA9IHRoaXMuZ2VuZXJhdGVEaXNwbGF5ZWREYXRhRWxlbWVudChyb3dJZCwgZGF0YUVudHJ5KTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhTWFwLnNldChyb3dJZCwgZGlzcGxheWVkRGF0YUVsZW1lbnQpO1xuICAgICAgICBkaXNwbGF5ZWREYXRhTGlzdC5wdXNoKGRpc3BsYXllZERhdGFFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkaXNwbGF5ZWREYXRhTGlzdDtcbiAgICB0aGlzLnVuc2V0UGFnZVNpemVJZk5lY2Vzc2FyeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ29sdW1uTW9kYWwoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nRGF0YTogRGF0YVRhYmxlRGlhbG9nRGF0YSA9IHtcbiAgICAgIGFsbENvbHVtbnM6IHRoaXMuYWxsQXZhaWxhYmxlQ29sdW1ucyxcbiAgICAgIGRlZmluaXRpb246IHRoaXMuc2VsZWN0ZWREZWZpbml0aW9uLFxuICAgICAgZGVsZXRlRGVmaW5pdGlvbkFsbG93ZWQ6IHRoaXMuZGVsZXRlRGVmaW5pdGlvbkFsbG93ZWQsXG4gICAgICBmaWx0ZXJDb2x1bW5zTGFiZWw6IHRoaXMuZmlsdGVyQ29sdW1uc0xhYmVsLFxuICAgICAgZmlsdGVyQ29sdW1uc1BsYWNlSG9sZGVyOiB0aGlzLmZpbHRlckNvbHVtbnNQbGFjZUhvbGRlcixcbiAgICAgIG5vRGF0YVRleHQ6IHRoaXMubm9EYXRhVGV4dCxcbiAgICAgIHRpdGxlTGFiZWw6IHRoaXMuY29sdW1uU2V0dGluZ3NNb2RhbFRpdGxlTGFiZWwsXG4gICAgICBzZWxlY3RlZExhYmVsOiB0aGlzLnNlbGVjdGVkTGFiZWwsXG4gICAgICBhdmFpbGFibGVMYWJlbDogdGhpcy5hdmFpbGFibGVMYWJlbCxcbiAgICAgIHNhdmVMYWJlbDogdGhpcy5zYXZlTGFiZWwsXG4gICAgICBkZWxldGVMYWJlbDogdGhpcy5kZWxldGVMYWJlbCxcbiAgICAgIGNhbmNlbExhYmVsOiB0aGlzLmNhbmNlbExhYmVsLFxuICAgICAgaW5mb1RleHRMYWJlbDogdGhpcy5pbmZvVGV4dExhYmVsLFxuICAgIH07XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5tYXREaWFsb2cub3BlbihEYXRhVGFibGVDb2x1bW5zTW9kYWxDb21wb25lbnQsIHsgZGF0YTogZGlhbG9nRGF0YSB9KTtcbiAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIC8vIG5vIGV2ZW50IG9uIENBTkNFTFxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmNvbHVtbkRlZmluaXRpb25DaGFuZ2VFdmVudC5lbWl0KHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYmxlTW9kZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9mb3JjZU1vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JjZU1vZGU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFjdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLk5PTkU7XG4gICAgfVxuICAgIGNvbnN0IGRpc3RpbmN0QWN0aW9uVHlwZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IHJvd0FjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgIGRpc3RpbmN0QWN0aW9uVHlwZXMuYWRkKHJvd0FjdGlvbi50eXBlKTtcbiAgICB9XG4gICAgaWYgKGRpc3RpbmN0QWN0aW9uVHlwZXMuaGFzKHRoaXMuQkFUQ0gpKSB7XG4gICAgICByZXR1cm4gdGhpcy5CQVRDSDtcbiAgICB9XG4gICAgaWYgKGRpc3RpbmN0QWN0aW9uVHlwZXMuaGFzKHRoaXMuU0lOR0xFKSkge1xuICAgICAgcmV0dXJuIHRoaXMuU0lOR0xFO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5OT05FO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNldFBhZ2VTaXplSWZOZWNlc3NhcnkoKSB7XG4gICAgaWYgKCF0aGlzLnVzZUFzeW5jICYmICF0aGlzLmlzUGFnaW5hdGlvbkVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRhdGFDb3VudCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhID8gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoIDogMDtcbiAgICAgIHRoaXMucGFnaW5hdG9yUGFnZVNpemUgPSBkYXRhQ291bnQ7XG4gICAgICB0aGlzLnBhZ2luYXRvckxlbmd0aCA9IGRhdGFDb3VudDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWQtZGF0YXRhYmxlLWFjdGlvbi1iYXJcIj5cbiAgPCEtLSBUYWJsZSBhY3Rpb25zOiBkaXNwbGF5ZWQgYmVmb3JlIHRoZSB0YWJsZSAtLT5cbiAgPGRpdiAqbmdJZj1cInRhYmxlQWN0aW9ucz8ubGVuZ3RoXCI+XG4gICAgPG1hZC1vdXRsaW5lLWJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQodGFibGVBY3Rpb24udHlwZSlcIlxuICAgICAgY2xhc3M9XCJ0YWJsZS1hY3Rpb25cIlxuICAgICAgKm5nRm9yPVwibGV0IHRhYmxlQWN0aW9uIG9mIHRhYmxlQWN0aW9uc1wiXG4gICAgICAoY2xpY2spPVwib25UYWJsZUFjdGlvbih0YWJsZUFjdGlvbilcIj5cbiAgICAgIHt7IHRhYmxlQWN0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19IHt7IGdldFNlbGVjdGVkQ291bnQodGFibGVBY3Rpb24udHlwZSkgfX1cbiAgICA8L21hZC1vdXRsaW5lLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIDwhLS0gVGFibGUgZmlsdGVyIC0tPlxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpc0ZpbHRlckVuYWJsZWRcIj5cbiAgICA8bWF0LWxhYmVsPnt7IGZpbHRlckxhYmVsIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXl1cCk9XCJzZXRGaWx0ZXJWYWx1ZSgkZXZlbnQ/LnRhcmdldD8udmFsdWUpXCJcbiAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmaWx0ZXJQbGFjZWhvbGRlciB9fVwiIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuXG48IS0tIFJvdyBhY3Rpb24gbWVudSAtLT5cbjxtYXQtbWVudSAjcm93QWN0aW9uTWVudT1cIm1hdE1lbnVcIj5cbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1lbGVtZW50PVwiZWxlbWVudFwiPlxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHJvd0FjdGlvbiBvZiByb3dBY3Rpb25zXCIgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInJvdy1hY3Rpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93RXZlbnQoJGV2ZW50LCBlbGVtZW50LCByb3dBY3Rpb24pXCI+XG4gICAgICB7eyByb3dBY3Rpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LW1lbnU+XG5cbjwhLS0gZWRpdGFibGUgZGVmaW5pdGlvbiBtZW51IC0tPlxuPG1hdC1tZW51ICNlZGl0YWJsZURlZmluaXRpb25NZW51PVwibWF0TWVudVwiPlxuICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQ+XG4gICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgZGVmaW5pdGlvbiBvZiBlZGl0YWJsZUNvbHVtbkRlZmluaXRpb25zXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwicm93LWFjdGlvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Db2x1bW5TZXR0aW5ncyhkZWZpbml0aW9uKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZS1jb2x1bW4tZGVmaW5pdGlvbic6IGlzQ3VycmVudERlZmluaXRpb24oZGVmaW5pdGlvbil9XCJcbiAgICA+XG4gICAgICB7eyBkZWZpbml0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuXG48IS0tIHZpZXdhYmxlIGRlZmluaXRpb24gbWVudSAtLT5cbjxtYXQtbWVudSAjdmlld2FibGVEZWZpbml0aW9uTWVudT1cIm1hdE1lbnVcIj5cbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50PlxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGRlZmluaXRpb24gb2Ygdmlld2FibGVDb2x1bW5EZWZpbml0aW9uc1wiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBjbGFzcz1cInJvdy1hY3Rpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmlld0RlZmluaXRpb24oZGVmaW5pdGlvbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtY29sdW1uLWRlZmluaXRpb24nOiBpc0N1cnJlbnREZWZpbml0aW9uKGRlZmluaXRpb24pfVwiXG4gICAgPlxuICAgICAge3sgZGVmaW5pdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtbWVudT5cblxuPCEtLSBUYWJsZSAtLT5cbjxkaXYgKm5nSWY9XCJyb3dDb3VudCA+IDA7IGVsc2Ugbm9EYXRhXCIgY2xhc3M9XCJkYXRhdGFibGVcIiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICA8ZGl2IGNsYXNzPVwibWFkLWRhdGF0YWJsZS1zcGlubmVyLXdyYXBwZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNTBcIiBbc3Ryb2tlV2lkdGhdPVwiM1wiPjwvbWF0LXNwaW5uZXI+XG4gIDwvZGl2PlxuXG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0aW5nRXZlbnQoJGV2ZW50KVwiPlxuICAgIDwhLS0gUm93IGFjdGlvbnMgY29sdW1uLS0+XG4gICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIkFDVElPTl9DT0xVTU5fTkFNRVwiPlxuICAgICAgPHRoIHNjb3BlPVwiY29sXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwicm93LWFjdGlvbi1idXR0b25cIj5cbiAgICAgICAgPCEtLSBCQVRDSDogbWFzdGVyIGNoZWNrYm94IC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gQkFUQ0hcIiBjbGFzcz1cIm1hZC1kYXRhdGFibGUtY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZVNlbGVjdEFsbCgpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNJTkdMRSAvIE5PTkU6IG5vdGhpbmcgaW4gaGVhZGVyIHJvdyAtLT5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwicm93LWFjdGlvbi1idXR0b25cIj5cbiAgICAgICAgPCEtLSBCQVRDSDogcm93IGNoZWNrYm94IC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gQkFUQ0hcIiBjbGFzcz1cIm1hZC1kYXRhdGFibGUtY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2hlY2tib3goJGV2ZW50LCBlbGVtZW50LnJvd0lkKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGVsZW1lbnQucm93SWQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNJTkdMRTogcm93IGFjdGlvbiBtZW51IGljb24gLS0+XG4gICAgICAgIDxtYWQtaWNvbi1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09IFNJTkdMRVwiXG4gICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRGF0YV09XCJ7IGVsZW1lbnQ6IGVsZW1lbnQgfVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3dBY3Rpb25NZW51XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICA8L21hZC1pY29uLWJ1dHRvbj5cbiAgICAgICAgPCEtLSBOT05FOiBub3RoaW5nIC0tPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIENvbHVtbnMgd2l0aCBkYXRhIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uaWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaXNTb3J0YWJsZTsgZWxzZSBub1NvcnRcIj5cbiAgICAgICAgPHRoXG4gICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgbWF0LXNvcnQtaGVhZGVyPVwie3sgY29sdW1uLm9yZGVyQnlOYW1lPyBjb2x1bW4ub3JkZXJCeU5hbWUgOiBjb2x1bW4uZGF0YVByb3BlcnR5TmFtZSB9fVwiXG4gICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uLmlzUmlnaHRBbGlnbmVkID8gJ2JlZm9yZScgOiAnYWZ0ZXInXCJcbiAgICAgICAgICBbY2xhc3MudGV4dC1yaWdodF09XCJjb2x1bW4uaXNSaWdodEFsaWduZWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sdW1uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvdGg+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Tb3J0PlxuICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLnRleHQtcmlnaHRdPVwiY29sdW1uLmlzUmlnaHRBbGlnbmVkXCI+XG4gICAgICAgICAge3sgY29sdW1uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvdGg+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbY2xhc3MudGV4dC1yaWdodF09XCJjb2x1bW4uaXNSaWdodEFsaWduZWRcIiBbbmdTd2l0Y2hdPVwiY29sdW1uLnRyYW5zZm9ybWVyXCI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt7IGVsZW1lbnRbY29sdW1uLmRhdGFQcm9wZXJ0eU5hbWVdIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5JZHNcIj48L3RyPlxuICAgIDx0clxuICAgICAgbWF0LXJvd1xuICAgICAgW2NsYXNzLmNsaWNrYWJsZS10YWJsZS1yb3ddPVwiaXNSb3dDbGlja2FibGVcIlxuICAgICAgKGNsaWNrKT1cIm9uUm93RXZlbnQoJGV2ZW50LCByb3cpXCJcbiAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5JZHNcIlxuICAgID48L3RyPlxuICA8L3RhYmxlPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWFkLWRhdGEtdGFibGUtYm90dG9tLWFyZWFcIj5cbiAgPGRpdiBjbGFzcz1cIm1hZC1kYXRhLXRhYmxlLWJvdHRvbS1pbmZvLWFyZWFcIj5cbiAgICA8IS0tIGNvbHVtbiBzZXR0aW5nczogMSBkZWZpbml0aW9uIC0tPlxuICAgIDxtYWQtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwidGhpcy5lZGl0YWJsZUNvbHVtbkRlZmluaXRpb25zPy5sZW5ndGggPT0gMVwiXG4gICAgICAoY2xpY2spPVwib25Db2x1bW5TZXR0aW5ncygpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPnZpZXdfY29sdW1uPC9tYXQtaWNvbj5cbiAgICA8L21hZC1pY29uLWJ1dHRvbj5cbiAgICA8IS0tIGNvbHVtbiBzZXR0aW5nczogbXVsdGlwbGUgZGVmaW5pdGlvbnMgLS0+XG4gICAgPG1hZC1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJ0aGlzLmVkaXRhYmxlQ29sdW1uRGVmaW5pdGlvbnM/Lmxlbmd0aCA+IDBcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZWRpdGFibGVEZWZpbml0aW9uTWVudVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPnZpZXdfY29sdW1uPC9tYXQtaWNvbj5cbiAgICA8L21hZC1pY29uLWJ1dHRvbj5cbiAgICA8IS0tIGNvbHVtbiB2aWV3OiBtdWx0aXBsZSBkZWZpbml0aW9ucyAtLT5cbiAgICA8bWFkLWljb24tYnV0dG9uXG4gICAgICAqbmdJZj1cInRoaXMudmlld2FibGVDb2x1bW5EZWZpbml0aW9ucz8ubGVuZ3RoID4gMFwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ2aWV3YWJsZURlZmluaXRpb25NZW51XCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+cHJldmlldzwvbWF0LWljb24+XG4gICAgPC9tYWQtaWNvbi1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cbiAgPG1hdC1wYWdpbmF0b3JcbiAgICBbc3R5bGUuZGlzcGxheV09XCJpc1BhZ2luYXRpb25FbmFibGVkID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgW2xlbmd0aF09XCJwYWdpbmF0b3JMZW5ndGhcIlxuICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdG9yUGFnZUluZGV4XCJcbiAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yUGFnZVNpemVcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAocGFnZSk9XCJvblBhZ2VFdmVudCgkZXZlbnQpXCJcbiAgICBzaG93Rmlyc3RMYXN0QnV0dG9uc1xuICA+XG4gIDwvbWF0LXBhZ2luYXRvcj5cbjwvZGl2PlxuXG48IS0tIE5vIGRhdGEgYWxlcnQgLS0+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPGRpdiBjbGFzcz1cIm5vRGF0YVRleHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFkLWRhdGF0YWJsZS1zcGlubmVyLXdyYXBwZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiIFtzdHJva2VXaWR0aF09XCIzXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgICB7eyBub0RhdGFUZXh0IH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
506
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBR3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVEvRyxNQUFNLE9BQU8sa0JBQWtCO0lBdUo3QixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBdEp4QyxlQUFlO1FBQ04sZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLFFBQVEsQ0FBQztRQUM5Qiw2QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztRQUN0RCxlQUFVLEdBQUcsd0JBQXdCLENBQUM7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QXBDLE1BQU07Z0JBQ0cseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUVxQyxTQUFTO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0osSUFBSTtzQkFBekMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IERhdGFUYWJsZUFjdGlvbiB9IGZyb20gJy4vZGF0YS10YWJsZS1hY3Rpb24nO1xuaW1wb3J0IHsgRGF0YVRhYmxlQWN0aW9uVHlwZSB9IGZyb20gJy4vZGF0YS10YWJsZS1hY3Rpb24tdHlwZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5zTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1ucy1tb2RhbC9kYXRhLXRhYmxlLWNvbHVtbnMtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24sIERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25DaGFuZ2UsIERhdGFUYWJsZURpYWxvZ0RhdGEgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uLWRlZmluaXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAvLyBUcmFuc2xhdGlvbnNcbiAgQElucHV0KCkgZmlsdGVyTGFiZWwgPSAnRmlsdGVyJztcbiAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgZmlsdGVyQ29sdW1uc0xhYmVsID0gJ0ZpbHRlcic7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbnNQbGFjZUhvbGRlciA9ICdGaWx0ZXIgYXZhaWxhYmxlIGNvbHVtbnMnO1xuICBASW5wdXQoKSBub0RhdGFUZXh0ID0gJ05vIG1hdGNoaW5nIGRhdGEgZm91bmQnO1xuICBASW5wdXQoKSBjb2x1bW5TZXR0aW5nc01vZGFsVGl0bGVMYWJlbCA9ICdDb2x1bW4gc2V0dGluZ3MnO1xuICBASW5wdXQoKSBzZWxlY3RlZExhYmVsID0gJ1NlbGVjdGVkIGNvbHVtbnMnO1xuICBASW5wdXQoKSBhdmFpbGFibGVMYWJlbCA9ICdBdmFpbGFibGUgY29sdW1ucyc7XG4gIEBJbnB1dCgpIHNhdmVMYWJlbCA9ICdTYXZlJztcbiAgQElucHV0KCkgZGVsZXRlTGFiZWwgPSAnRGVsZXRlJztcbiAgQElucHV0KCkgY2FuY2VsTGFiZWwgPSAnQ2FuY2VsJztcbiAgQElucHV0KCkgaW5mb1RleHRMYWJlbCA9ICdEcmFnIGFuZCBkcm9wIGEgY29sdW1uIHRvIHNlbGVjdCBvciByZW9yZGVyIGl0Lic7XG4gIEBJbnB1dCgpIHRhYmxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMTAsIDE1XTtcbiAgQElucHV0KCkgZXh0ZXJuYWxGaWx0ZXI6IGFueTtcblxuICBASW5wdXQoKSBhY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBpZEdlbmVyYXRvcjogYW55O1xuICBASW5wdXQoKSBkZWxldGVEZWZpbml0aW9uQWxsb3dlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVzZUFzeW5jID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGRpc3BsYXllZENvbHVtbnMoY29sczogRGF0YVRhYmxlQ29sdW1uW10pIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheWVkQ29sdW1uRGVmaW5pdGlvbikge1xuICAgICAgdGhpcy5jb2x1bW5zID0gY29scyA/IFsuLi5jb2xzXSA6IFtdO1xuICAgICAgdGhpcy5jb2x1bW5JZHMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uaWQpO1xuICAgICAgdGhpcy5jb2x1bW5JZHMudW5zaGlmdCh0aGlzLkFDVElPTl9DT0xVTU5fTkFNRSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IGRpc3BsYXllZENvbHVtbkRlZmluaXRpb24oZGVmOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkRlZmluaW9uID0gZGVmO1xuICAgIHRoaXMuY29sdW1ucyA9IGRlZi5kaXNwbGF5ZWRDb2x1bW5zO1xuICAgIHRoaXMuY29sdW1uSWRzID0gdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmlkKTtcbiAgICB0aGlzLmNvbHVtbklkcy51bnNoaWZ0KHRoaXMuQUNUSU9OX0NPTFVNTl9OQU1FKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0YWJsZURhdGEoZGF0YTogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZURhdGFNYXBzQW5kU2V0RGlzcGxheWVkRGF0YVNvdXJjZURhdGEoZGF0YSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcGFnZShwYWdlOiBQYWdlRXZlbnQpIHtcbiAgICB0aGlzLnBhZ2luYXRvclBhZ2VJbmRleCA9IHBhZ2UucGFnZUluZGV4O1xuICAgIHRoaXMucGFnaW5hdG9yUGFnZVNpemUgPSBwYWdlLnBhZ2VTaXplO1xuICAgIHRoaXMucGFnaW5hdG9yTGVuZ3RoID0gcGFnZS5sZW5ndGg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgY29sdW1uRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25bXSkge1xuICAgIHRoaXMuZWRpdGFibGVDb2x1bW5EZWZpbml0aW9ucyA9IFtdO1xuICAgIHRoaXMudmlld2FibGVDb2x1bW5EZWZpbml0aW9ucyA9IFtdO1xuICAgIHRoaXMuYWxsQ29sdW1uRGVmaW5pdGlvbnMgPSBbLi4uZGVmaW5pdGlvbnNdO1xuICAgIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBkZWZpbml0aW9ucykge1xuICAgICAgaWYgKGRlZmluaXRpb24uZWRpdGFibGUpIHtcbiAgICAgICAgdGhpcy5lZGl0YWJsZUNvbHVtbkRlZmluaXRpb25zLnB1c2goZGVmaW5pdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5pdGlvbi5kaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudmlld2FibGVDb2x1bW5EZWZpbml0aW9ucy5wdXNoKGRlZmluaXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBsb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gaXNMb2FkaW5nO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRlZmF1bHRQYWdlU2l6ZShkZWZhdWx0U2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA9IGRlZmF1bHRTaXplO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV4dGVybmFsUGFnaW5hdG9yKHBhZ2luYXRvcjogYW55KSB7XG4gICAgdGhpcy5leHRQYWdpbmF0b3IgPSBwYWdpbmF0b3I7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcGFnaW5hdGlvbkVuYWJsZWQoaXNQYWdpbmF0aW9uRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNQYWdpbmF0aW9uRW5hYmxlZCA9IGlzUGFnaW5hdGlvbkVuYWJsZWQ7XG4gICAgdGhpcy51bnNldFBhZ2VTaXplSWZOZWNlc3NhcnkoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBhbGxDb2x1bW5zKGFsbENvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5hbGxBdmFpbGFibGVDb2x1bW5zID0gYWxsQ29sdW1ucztcbiAgICBpZiAoYWxsQ29sdW1ucyAmJiB0aGlzLnNob3dDb2x1bW5Nb2RhbCkge1xuICAgICAgdGhpcy5vcGVuQ29sdW1uTW9kYWwoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZmlsdGVyRW5hYmxlZChpc0ZpbHRlckVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRmlsdGVyRW5hYmxlZCA9ICF0aGlzLnVzZUFzeW5jID8gaXNGaWx0ZXJFbmFibGVkIDogZmFsc2U7XG4gICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGZvcmNlTW9kZShtb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAobW9kZSA9PT0gdGhpcy5TSU5HTEUgfHwgbW9kZSA9PT0gdGhpcy5CQVRDSCB8fCBtb2RlID09PSB0aGlzLk5PTkUpIHtcbiAgICAgIHRoaXMuX2ZvcmNlTW9kZSA9IG1vZGU7XG4gICAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgICAgdGhpcy5zZXRBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIHNvcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVBY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBwYWdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFsbENvbHVtbnNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNvbHVtbkRlZmluaXRpb25DaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbkNoYW5nZT4oKTtcbiAgQE91dHB1dCgpIHZpZXdEZWZpbml0aW9uQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24+KCk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0OiBNYXRTb3J0O1xuXG4gIHJlYWRvbmx5IEFDVElPTl9DT0xVTU5fTkFNRSA9ICdfX2FjdGlvbl9fJztcbiAgcmVhZG9ubHkgU0lOR0xFID0gRGF0YVRhYmxlQWN0aW9uVHlwZS5TSU5HTEU7XG4gIHJlYWRvbmx5IEJBVENIID0gRGF0YVRhYmxlQWN0aW9uVHlwZS5CQVRDSDtcbiAgcmVhZG9ubHkgTk9ORSA9IERhdGFUYWJsZUFjdGlvblR5cGUuTk9ORTtcblxuICB0YWJsZUFjdGlvbnM6IERhdGFUYWJsZUFjdGlvbltdID0gW107XG4gIHJvd0FjdGlvbnM6IERhdGFUYWJsZUFjdGlvbltdID0gW107XG4gIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdID0gW107XG4gIGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIHNlbGVjdGVkOiBbXTtcbiAgX2ZvcmNlTW9kZTogc3RyaW5nO1xuICBkaXNwbGF5ZWREYXRhTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgYWN0dWFsRGF0YU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnlbXT47XG4gIHNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSk7XG4gIGNvbHVtbklkczogc3RyaW5nW107XG4gIGFsbENvbHVtbkRlZmluaXRpb25zOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uW10gPSBbXTtcbiAgZWRpdGFibGVDb2x1bW5EZWZpbml0aW9uczogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbltdO1xuICB2aWV3YWJsZUNvbHVtbkRlZmluaXRpb25zOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uW107XG4gIHNlbGVjdGVkQ29sdW1uRGVmaW5pb246IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb247XG4gIGFsbEF2YWlsYWJsZUNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdO1xuICBzZWxlY3RlZERlZmluaXRpb246IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb247XG4gIGRlZmF1bHRBY3Rpb246IERhdGFUYWJsZUFjdGlvbjtcbiAgaXNGaWx0ZXJFbmFibGVkID0gZmFsc2U7XG4gIGlzUGFnaW5hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgbW9kZSA9IHRoaXMuTk9ORTtcbiAgaXNSb3dDbGlja2FibGUgPSBmYWxzZTtcbiAgc2hvd0NvbHVtbk1vZGFsID0gZmFsc2U7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBleHRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICBwYWdpbmF0b3JMZW5ndGggPSAwO1xuICBwYWdpbmF0b3JQYWdlSW5kZXggPSAwO1xuICBwYWdpbmF0b3JQYWdlU2l6ZSA9IDUwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgc3RhdGljIGNvbXBhcmUoYTogUmVjb3JkPHN0cmluZywgYW55PiwgYjogUmVjb3JkPHN0cmluZywgYW55Piwgc29ydDogU29ydCk6IG51bWJlciB7XG4gICAgY29uc3QgeCA9IGFbc29ydC5hY3RpdmVdO1xuICAgIGNvbnN0IHkgPSBiW3NvcnQuYWN0aXZlXTtcbiAgICBjb25zdCBhc2NlbmRpbmcgPSBzb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIERhdGFUYWJsZUNvbXBvbmVudC5jb21wYXJlTnVtYmVyKHgsIHksIGFzY2VuZGluZyk7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlQ29tcG9uZW50LmNvbXBhcmVTdHJpbmcoeCwgeSwgYXNjZW5kaW5nKTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlQ29tcG9uZW50LmNvbXBhcmVCb29sZWFuKHgsIHksIGFzY2VuZGluZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBjYW5ub3QgY29tcGFyZSAtPiByZXR1cm4gZXF1YWxcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVOdW1iZXIoeDogbnVtYmVyLCB5OiBudW1iZXIsIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGFzY2VuZGluZyA/IHggLSB5IDogeSAtIHg7XG4gIH1cblxuICBzdGF0aWMgY29tcGFyZVN0cmluZyh4OiBzdHJpbmcsIHk6IHN0cmluZywgYXNjZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYXNjZW5kaW5nID8geC5sb2NhbGVDb21wYXJlKHkpIDogeS5sb2NhbGVDb21wYXJlKHgpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVCb29sZWFuKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4sIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAvLyB0cnVlIGZpcnN0XG4gICAgICByZXR1cm4geCA/IC0xIDogMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFsc2UgZmlyc3RcbiAgICAgIHJldHVybiB4ID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyB0cmFuc2Zvcm1EYXRhKHZhbHVlOiBhbnksIHRyYW5zZm9ybWVyOiBhbnksIHRyYW5zZm9ybWVyUGFyYW1zOiBhbnkpOiBhbnkge1xuICAgIGlmICghdHJhbnNmb3JtZXIgfHwgISh0cmFuc2Zvcm1lciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtZXIodmFsdWUsIHRyYW5zZm9ybWVyUGFyYW1zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZW5lcmF0ZVJvd0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV1aWRWNCgpO1xuICB9XG5cbiAgc3RhdGljIGlzQ2xpY2tPblJvd01lbnVJY29uKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudD8udGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uY2xhc3NMaXN0LmNvbnRhaW5zKCdtYXQtaWNvbicpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gdGhpcy5nZXRUYWJsZU1vZGUoKTtcbiAgICB0aGlzLnNldEFjdGlvbnMoKTtcbiAgICBpZiAodGhpcy5tb2RlICE9PSB0aGlzLk5PTkUpIHtcbiAgICAgIHRoaXMuaXNSb3dDbGlja2FibGUgPSB0cnVlO1xuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uID0gdGhpcy5yb3dBY3Rpb25zWzBdO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXNlQXN5bmMpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uU2V0dGluZ3MoZGVmaW5pdGlvbj86IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDb2x1bW5Nb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZERlZmluaXRpb24gPSBkZWZpbml0aW9uID8gZGVmaW5pdGlvbiA6IHRoaXMuYWxsQ29sdW1uRGVmaW5pdGlvbnNbMF07XG4gICAgaWYgKHRoaXMuYWxsQXZhaWxhYmxlQ29sdW1ucykge1xuICAgICAgdGhpcy5vcGVuQ29sdW1uTW9kYWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgbm8gY29tcGxldGUgZGVmaW5pdGlvbnMgaGF2ZSBiZWVuIGxvYWRlZCB5ZXQgc2VuZCBhbiBldmVudCBzbyB0aGUgYXBwIGNhbiBsb2FkIGl0XG4gICAgICB0aGlzLmFsbENvbHVtbnNFdmVudC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25WaWV3RGVmaW5pdGlvbihkZWZpbml0aW9uOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgIHRoaXMudmlld0RlZmluaXRpb25DaGFuZ2VFdmVudC5lbWl0KGRlZmluaXRpb24pO1xuICB9XG5cbiAgaXNDdXJyZW50RGVmaW5pdGlvbihkZWZpbml0aW9uOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREZWZpbml0aW9uICYmIHRoaXMuc2VsZWN0ZWREZWZpbml0aW9uLmlkID09PSBkZWZpbml0aW9uLmlkO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLmxlbmd0aCA6IDA7XG4gIH1cblxuICBnZXQgcm93Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUm93c09mQ3VycmVudFBhZ2UoKSA/IHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVJvd3NPZkN1cnJlbnRQYWdlKCkubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldEFsbERhdGFTb3VyY2VSb3dzT2ZDdXJyZW50UGFnZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZT8uX3BhZ2VEYXRhKHRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkQ291bnQoYWN0aW9uVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMuc2VsZWN0ZWRDb3VudDtcbiAgICBpZiAoYWN0aW9uVHlwZSAhPT0gdGhpcy5CQVRDSCB8fCBjb3VudCA8IDIpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuICcgKCcgKyBjb3VudCArICcpJztcbiAgfVxuXG4gIGlzRGlzYWJsZWQoYWN0aW9uVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIHRoaXMuU0lOR0xFOlxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvdW50ICE9PSAxO1xuICAgICAgY2FzZSB0aGlzLkJBVENIOlxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvdW50IDwgMTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvblRvZ2dsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAvLyBjbGVhciBhbGwgc2VsZWN0aW9uIGZpcnN0XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgIC8vIHRvZ2dsZSBhbGwgY2hlY2tib3hcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gIXRoaXMuYWxsU2VsZWN0ZWQ7XG4gICAgaWYgKHRoaXMuYWxsU2VsZWN0ZWQpIHtcbiAgICAgIC8vIHNlbGVjdCBhbGwgcm93cyBvZiB0aGUgY3VycmVudCBwYWdlXG4gICAgICB0aGlzLmdldEFsbERhdGFTb3VyY2VSb3dzT2ZDdXJyZW50UGFnZSgpLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoJycgKyByb3cucm93SWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNTZWxlY3RlZChyb3dJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChyb3dJZCk7XG4gIH1cblxuICBzZXRGaWx0ZXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9IHZhbHVlPy50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIG9uUm93Q2hlY2tib3goZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIG5vIGNsaWNrIGV2ZW50IG9uIHJvd1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHJvdy5yb3dJZCk7XG4gIH1cblxuICBvblJvd0V2ZW50KGV2ZW50OiBNb3VzZUV2ZW50LCByb3c6IGFueSwgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgdGhpcy5CQVRDSDpcbiAgICAgICAgdGhpcy5vblJvd0NoZWNrYm94KGV2ZW50LCByb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5TSU5HTEU6XG4gICAgICAgIC8vIGVtaXQgdGhlIGRlZmF1bHQgYWN0aW9uIGlmIHRoZSByb3cgKG5vdCB0aGUgaWNvbiEpIHdhcyBjbGlja2VkXG4gICAgICAgIGlmICghIWFjdGlvbiAmJiAhRGF0YVRhYmxlQ29tcG9uZW50LmlzQ2xpY2tPblJvd01lbnVJY29uKGV2ZW50KSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gW107XG4gICAgICAgICAgLy8gaWYgSUQtZ2VuZXJhdG9yIGlzIHByb3ZpZGVkLCByZXR1cm4gdGhlIElELCBlbHNlIHJldHVybiB0aGUgQUNUVUFMIGRhdGFcbiAgICAgICAgICBzZWxlY3RlZC5wdXNoKHRoaXMuaWRHZW5lcmF0b3IgPyByb3cucm93SWQgOiB0aGlzLmFjdHVhbERhdGFNYXAuZ2V0KHJvdy5yb3dJZCkpO1xuICAgICAgICAgIHRoaXMuZW1pdFRhYmxlQWN0aW9uKGFjdGlvbiwgc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gZG8gbm90aGluZyBpZiBtb2RlIGlzIE5PTkUgKG9yIG51bGwpXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBvblNvcnRpbmdFdmVudChzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXNlQXN5bmMpIHtcbiAgICAgIHRoaXMuc29ydEV2ZW50LmVtaXQoc29ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxTb3J0KHNvcnQpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZUV2ZW50KGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51c2VBc3luYykge1xuICAgICAgdGhpcy5wYWdlRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgb25UYWJsZUFjdGlvbih0YWJsZUFjdGlvbjogRGF0YVRhYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEhdGFibGVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbjogYW55W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWQgb2YgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZCkge1xuICAgICAgICBzZWxlY3Rpb24ucHVzaCh0aGlzLmlkR2VuZXJhdG9yID8gc2VsZWN0ZWQgOiB0aGlzLmFjdHVhbERhdGFNYXAuZ2V0KHNlbGVjdGVkKSk7XG4gICAgICB9XG4gICAgICB0YWJsZUFjdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGlvbjtcbiAgICAgIHRoaXMuYWN0aW9uRXZlbnQuZW1pdCh0YWJsZUFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VGFibGVBY3Rpb24oYWN0aW9uOiBEYXRhVGFibGVBY3Rpb24sIHNlbGVjdGVkOiBhbnlbXSk6IHZvaWQge1xuICAgIGNvbnN0IGVtaXRBY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgIGlmIChhY3Rpb24udHlwZSAhPT0gdGhpcy5OT05FKSB7XG4gICAgICBlbWl0QWN0aW9uLnNlbGVjdGVkID0gWy4uLnNlbGVjdGVkXTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25FdmVudC5lbWl0KGVtaXRBY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURpc3BsYXllZERhdGFFbGVtZW50KHJvd0lkOiBzdHJpbmcsIGFjdHVhbERhdGFFbGVtZW50OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGRpc3BsYXllZERhdGFFbGVtZW50OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgZGlzcGxheWVkRGF0YUVsZW1lbnQucm93SWQgPSByb3dJZDtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gYWN0dWFsRGF0YUVsZW1lbnRbY29sdW1uLmRhdGFQcm9wZXJ0eU5hbWVdO1xuICAgICAgZGlzcGxheWVkRGF0YUVsZW1lbnRbY29sdW1uLmRhdGFQcm9wZXJ0eU5hbWVdID0gRGF0YVRhYmxlQ29tcG9uZW50LnRyYW5zZm9ybURhdGEoXG4gICAgICAgIGFjdHVhbFZhbHVlLFxuICAgICAgICBjb2x1bW4udHJhbnNmb3JtZXIsXG4gICAgICAgIGNvbHVtbi50cmFuc2Zvcm1lclBhcmFtcyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkaXNwbGF5ZWREYXRhRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJuYWxTb3J0KHNvcnQ6IFNvcnQpIHtcbiAgICBjb25zdCBzb3J0ZWREYXRhID0gWy4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhXS5zb3J0KChhLCBiKSA9PiBEYXRhVGFibGVDb21wb25lbnQuY29tcGFyZShhLCBiLCBzb3J0KSk7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbLi4uc29ydGVkRGF0YV07XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy50YWJsZUFjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgIGlmICh0aGlzLm1vZGUgIT09IGFjdGlvbi5oaWRkZW5Jbk1vZGUpIHtcbiAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICAgIGNhc2UgdGhpcy5TSU5HTEU6XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSB0aGlzLlNJTkdMRSkge1xuICAgICAgICAgICAgICB0aGlzLnJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSB0aGlzLkJBVENIOlxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gdGhpcy5TSU5HTEUpIHtcbiAgICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMudGFibGVBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGF0YU1hcHNBbmRTZXREaXNwbGF5ZWREYXRhU291cmNlRGF0YShkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIGNvbnN0IGRpc3BsYXllZERhdGFMaXN0ID0gW107XG4gICAgdGhpcy5hY3R1YWxEYXRhTWFwLmNsZWFyKCk7XG4gICAgdGhpcy5kaXNwbGF5ZWREYXRhTWFwLmNsZWFyKCk7XG4gICAgaWYgKGRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZGF0YUVudHJ5IG9mIGRhdGEpIHtcbiAgICAgICAgY29uc3Qgcm93SWQgPSB0aGlzLmlkR2VuZXJhdG9yID8gdGhpcy5pZEdlbmVyYXRvcihkYXRhRW50cnkpIDogRGF0YVRhYmxlQ29tcG9uZW50LmdlbmVyYXRlUm93SWQoKTtcbiAgICAgICAgdGhpcy5hY3R1YWxEYXRhTWFwLnNldChyb3dJZCwgZGF0YUVudHJ5KTtcbiAgICAgICAgY29uc3QgZGlzcGxheWVkRGF0YUVsZW1lbnQgPSB0aGlzLmdlbmVyYXRlRGlzcGxheWVkRGF0YUVsZW1lbnQocm93SWQsIGRhdGFFbnRyeSk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkRGF0YU1hcC5zZXQocm93SWQsIGRpc3BsYXllZERhdGFFbGVtZW50KTtcbiAgICAgICAgZGlzcGxheWVkRGF0YUxpc3QucHVzaChkaXNwbGF5ZWREYXRhRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGlzcGxheWVkRGF0YUxpc3Q7XG4gICAgdGhpcy51bnNldFBhZ2VTaXplSWZOZWNlc3NhcnkoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbHVtbk1vZGFsKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ0RhdGE6IERhdGFUYWJsZURpYWxvZ0RhdGEgPSB7XG4gICAgICBhbGxDb2x1bW5zOiB0aGlzLmFsbEF2YWlsYWJsZUNvbHVtbnMsXG4gICAgICBkZWZpbml0aW9uOiB0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbixcbiAgICAgIGRlbGV0ZURlZmluaXRpb25BbGxvd2VkOiB0aGlzLmRlbGV0ZURlZmluaXRpb25BbGxvd2VkLFxuICAgICAgZmlsdGVyQ29sdW1uc0xhYmVsOiB0aGlzLmZpbHRlckNvbHVtbnNMYWJlbCxcbiAgICAgIGZpbHRlckNvbHVtbnNQbGFjZUhvbGRlcjogdGhpcy5maWx0ZXJDb2x1bW5zUGxhY2VIb2xkZXIsXG4gICAgICBub0RhdGFUZXh0OiB0aGlzLm5vRGF0YVRleHQsXG4gICAgICB0aXRsZUxhYmVsOiB0aGlzLmNvbHVtblNldHRpbmdzTW9kYWxUaXRsZUxhYmVsLFxuICAgICAgc2VsZWN0ZWRMYWJlbDogdGhpcy5zZWxlY3RlZExhYmVsLFxuICAgICAgYXZhaWxhYmxlTGFiZWw6IHRoaXMuYXZhaWxhYmxlTGFiZWwsXG4gICAgICBzYXZlTGFiZWw6IHRoaXMuc2F2ZUxhYmVsLFxuICAgICAgZGVsZXRlTGFiZWw6IHRoaXMuZGVsZXRlTGFiZWwsXG4gICAgICBjYW5jZWxMYWJlbDogdGhpcy5jYW5jZWxMYWJlbCxcbiAgICAgIGluZm9UZXh0TGFiZWw6IHRoaXMuaW5mb1RleHRMYWJlbCxcbiAgICB9O1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMubWF0RGlhbG9nLm9wZW4oRGF0YVRhYmxlQ29sdW1uc01vZGFsQ29tcG9uZW50LCB7IGRhdGE6IGRpYWxvZ0RhdGEgfSk7XG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAvLyBubyBldmVudCBvbiBDQU5DRUxcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZpbml0aW9uQ2hhbmdlRXZlbnQuZW1pdChyZXN1bHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZU1vZGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZm9yY2VNb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9yY2VNb2RlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hY3Rpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5OT05FO1xuICAgIH1cbiAgICBjb25zdCBkaXN0aW5jdEFjdGlvblR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCByb3dBY3Rpb24gb2YgdGhpcy5hY3Rpb25zKSB7XG4gICAgICBkaXN0aW5jdEFjdGlvblR5cGVzLmFkZChyb3dBY3Rpb24udHlwZSk7XG4gICAgfVxuICAgIGlmIChkaXN0aW5jdEFjdGlvblR5cGVzLmhhcyh0aGlzLkJBVENIKSkge1xuICAgICAgcmV0dXJuIHRoaXMuQkFUQ0g7XG4gICAgfVxuICAgIGlmIChkaXN0aW5jdEFjdGlvblR5cGVzLmhhcyh0aGlzLlNJTkdMRSkpIHtcbiAgICAgIHJldHVybiB0aGlzLlNJTkdMRTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuTk9ORTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZXRQYWdlU2l6ZUlmTmVjZXNzYXJ5KCkge1xuICAgIGlmICghdGhpcy51c2VBc3luYyAmJiAhdGhpcy5pc1BhZ2luYXRpb25FbmFibGVkKSB7XG4gICAgICBjb25zdCBkYXRhQ291bnQgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YSA/IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA6IDA7XG4gICAgICB0aGlzLnBhZ2luYXRvclBhZ2VTaXplID0gZGF0YUNvdW50O1xuICAgICAgdGhpcy5wYWdpbmF0b3JMZW5ndGggPSBkYXRhQ291bnQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFkLWRhdGF0YWJsZS1hY3Rpb24tYmFyXCI+XG4gIDwhLS0gVGFibGUgYWN0aW9uczogZGlzcGxheWVkIGJlZm9yZSB0aGUgdGFibGUgLS0+XG4gIDxkaXYgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/Lmxlbmd0aFwiPlxuICAgIDxtYWQtb3V0bGluZS1idXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKHRhYmxlQWN0aW9uLnR5cGUpXCJcbiAgICAgIGNsYXNzPVwidGFibGUtYWN0aW9uXCJcbiAgICAgICpuZ0Zvcj1cImxldCB0YWJsZUFjdGlvbiBvZiB0YWJsZUFjdGlvbnNcIlxuICAgICAgKGNsaWNrKT1cIm9uVGFibGVBY3Rpb24odGFibGVBY3Rpb24pXCI+XG4gICAgICB7eyB0YWJsZUFjdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fSB7eyBnZXRTZWxlY3RlZENvdW50KHRhYmxlQWN0aW9uLnR5cGUpIH19XG4gICAgPC9tYWQtb3V0bGluZS1idXR0b24+XG4gIDwvZGl2PlxuICA8IS0tIFRhYmxlIGZpbHRlciAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiaXNGaWx0ZXJFbmFibGVkXCI+XG4gICAgPG1hdC1sYWJlbD57eyBmaWx0ZXJMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXApPVwic2V0RmlsdGVyVmFsdWUoJGV2ZW50Py50YXJnZXQ/LnZhbHVlKVwiXG4gICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgZmlsdGVyUGxhY2Vob2xkZXIgfX1cIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cblxuPCEtLSBSb3cgYWN0aW9uIG1lbnUgLS0+XG48bWF0LW1lbnUgI3Jvd0FjdGlvbk1lbnU9XCJtYXRNZW51XCI+XG4gIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtZWxlbWVudD1cImVsZW1lbnRcIj5cbiAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCByb3dBY3Rpb24gb2Ygcm93QWN0aW9uc1wiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJyb3ctYWN0aW9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJvd0V2ZW50KCRldmVudCwgZWxlbWVudCwgcm93QWN0aW9uKVwiPlxuICAgICAge3sgcm93QWN0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuXG48IS0tIGVkaXRhYmxlIGRlZmluaXRpb24gbWVudSAtLT5cbjxtYXQtbWVudSAjZWRpdGFibGVEZWZpbml0aW9uTWVudT1cIm1hdE1lbnVcIj5cbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50PlxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGRlZmluaXRpb24gb2YgZWRpdGFibGVDb2x1bW5EZWZpbml0aW9uc1wiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBjbGFzcz1cInJvdy1hY3Rpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uU2V0dGluZ3MoZGVmaW5pdGlvbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtY29sdW1uLWRlZmluaXRpb24nOiBpc0N1cnJlbnREZWZpbml0aW9uKGRlZmluaXRpb24pfVwiXG4gICAgPlxuICAgICAge3sgZGVmaW5pdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtbWVudT5cblxuPCEtLSB2aWV3YWJsZSBkZWZpbml0aW9uIG1lbnUgLS0+XG48bWF0LW1lbnUgI3ZpZXdhYmxlRGVmaW5pdGlvbk1lbnU9XCJtYXRNZW51XCI+XG4gIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudD5cbiAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBkZWZpbml0aW9uIG9mIHZpZXdhYmxlQ29sdW1uRGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJyb3ctYWN0aW9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblZpZXdEZWZpbml0aW9uKGRlZmluaXRpb24pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLWNvbHVtbi1kZWZpbml0aW9uJzogaXNDdXJyZW50RGVmaW5pdGlvbihkZWZpbml0aW9uKX1cIlxuICAgID5cbiAgICAgIHt7IGRlZmluaXRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LW1lbnU+XG5cbjwhLS0gVGFibGUgLS0+XG48ZGl2ICpuZ0lmPVwicm93Q291bnQgPiAwOyBlbHNlIG5vRGF0YVwiIGNsYXNzPVwiZGF0YXRhYmxlXCIgW2NsYXNzXT1cInRhYmxlQ2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cIm1hZC1kYXRhdGFibGUtc3Bpbm5lci13cmFwcGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjUwXCIgW3N0cm9rZVdpZHRoXT1cIjNcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cblxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0IChtYXRTb3J0Q2hhbmdlKT1cIm9uU29ydGluZ0V2ZW50KCRldmVudClcIj5cbiAgICA8IS0tIFJvdyBhY3Rpb25zIGNvbHVtbi0tPlxuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJBQ1RJT05fQ09MVU1OX05BTUVcIj5cbiAgICAgIDx0aCBzY29wZT1cImNvbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cInJvdy1hY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgIDwhLS0gQkFUQ0g6IG1hc3RlciBjaGVja2JveCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09IEJBVENIXCIgY2xhc3M9XCJtYWQtZGF0YXRhYmxlLWNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVTZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBTSU5HTEUgLyBOT05FOiBub3RoaW5nIGluIGhlYWRlciByb3cgLS0+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBjbGFzcz1cInJvdy1hY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgIDwhLS0gQkFUQ0g6IHJvdyBjaGVja2JveCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09IEJBVENIXCIgY2xhc3M9XCJtYWQtZGF0YXRhYmxlLWNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NoZWNrYm94KCRldmVudCwgZWxlbWVudC5yb3dJZClcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChlbGVtZW50LnJvd0lkKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBTSU5HTEU6IHJvdyBhY3Rpb24gbWVudSBpY29uIC0tPlxuICAgICAgICA8bWFkLWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJtb2RlID09PSBTSU5HTEVcIlxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckRhdGFdPVwieyBlbGVtZW50OiBlbGVtZW50IH1cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwicm93QWN0aW9uTWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYWQtaWNvbi1idXR0b24+XG4gICAgICAgIDwhLS0gTk9ORTogbm90aGluZyAtLT5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBDb2x1bW5zIHdpdGggZGF0YSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmlkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmlzU29ydGFibGU7IGVsc2Ugbm9Tb3J0XCI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlcj1cInt7IGNvbHVtbi5vcmRlckJ5TmFtZT8gY29sdW1uLm9yZGVyQnlOYW1lIDogY29sdW1uLmRhdGFQcm9wZXJ0eU5hbWUgfX1cIlxuICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi5pc1JpZ2h0QWxpZ25lZCA/ICdiZWZvcmUnIDogJ2FmdGVyJ1wiXG4gICAgICAgICAgW2NsYXNzLnRleHQtcmlnaHRdPVwiY29sdW1uLmlzUmlnaHRBbGlnbmVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vU29ydD5cbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy50ZXh0LXJpZ2h0XT1cImNvbHVtbi5pc1JpZ2h0QWxpZ25lZFwiPlxuICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgW2NsYXNzLnRleHQtcmlnaHRdPVwiY29sdW1uLmlzUmlnaHRBbGlnbmVkXCIgW25nU3dpdGNoXT1cImNvbHVtbi50cmFuc2Zvcm1lclwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7eyBlbGVtZW50W2NvbHVtbi5kYXRhUHJvcGVydHlOYW1lXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzXCI+PC90cj5cbiAgICA8dHJcbiAgICAgIG1hdC1yb3dcbiAgICAgIFtjbGFzcy5jbGlja2FibGUtdGFibGUtcm93XT1cImlzUm93Q2xpY2thYmxlXCJcbiAgICAgIChjbGljayk9XCJvblJvd0V2ZW50KCRldmVudCwgcm93KVwiXG4gICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzXCJcbiAgICA+PC90cj5cbiAgPC90YWJsZT5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1hZC1kYXRhLXRhYmxlLWJvdHRvbS1hcmVhXCI+XG4gIDxkaXYgY2xhc3M9XCJtYWQtZGF0YS10YWJsZS1ib3R0b20taW5mby1hcmVhXCI+XG4gICAgPCEtLSBjb2x1bW4gc2V0dGluZ3M6IDEgZGVmaW5pdGlvbiAtLT5cbiAgICA8bWFkLWljb24tYnV0dG9uXG4gICAgICAqbmdJZj1cInRoaXMuZWRpdGFibGVDb2x1bW5EZWZpbml0aW9ucz8ubGVuZ3RoID09IDFcIlxuICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uU2V0dGluZ3MoKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj52aWV3X2NvbHVtbjwvbWF0LWljb24+XG4gICAgPC9tYWQtaWNvbi1idXR0b24+XG4gICAgPCEtLSBjb2x1bW4gc2V0dGluZ3M6IG11bHRpcGxlIGRlZmluaXRpb25zIC0tPlxuICAgIDxtYWQtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwidGhpcy5lZGl0YWJsZUNvbHVtbkRlZmluaXRpb25zPy5sZW5ndGggPiAwXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImVkaXRhYmxlRGVmaW5pdGlvbk1lbnVcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj52aWV3X2NvbHVtbjwvbWF0LWljb24+XG4gICAgPC9tYWQtaWNvbi1idXR0b24+XG4gICAgPCEtLSBjb2x1bW4gdmlldzogbXVsdGlwbGUgZGVmaW5pdGlvbnMgLS0+XG4gICAgPG1hZC1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJ0aGlzLnZpZXdhYmxlQ29sdW1uRGVmaW5pdGlvbnM/Lmxlbmd0aCA+IDBcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidmlld2FibGVEZWZpbml0aW9uTWVudVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPnByZXZpZXc8L21hdC1pY29uPlxuICAgIDwvbWFkLWljb24tYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gIDxtYXQtcGFnaW5hdG9yXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQYWdpbmF0aW9uRW5hYmxlZCA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yTGVuZ3RoXCJcbiAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRvclBhZ2VJbmRleFwiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2luYXRvclBhZ2VTaXplXCJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgKHBhZ2UpPVwib25QYWdlRXZlbnQoJGV2ZW50KVwiXG4gICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnNcbiAgPlxuICA8L21hdC1wYWdpbmF0b3I+XG48L2Rpdj5cblxuPCEtLSBObyBkYXRhIGFsZXJ0IC0tPlxuPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gIDxkaXYgY2xhc3M9XCJub0RhdGFUZXh0XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1hZC1kYXRhdGFibGUtc3Bpbm5lci13cmFwcGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNTBcIiBbc3Ryb2tlV2lkdGhdPVwiM1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAge3sgbm9EYXRhVGV4dCB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -2032,8 +2032,10 @@ class DataTableComponent {
2032
2032
  }
2033
2033
  }
2034
2034
  ngAfterViewInit() {
2035
- this.dataSource.paginator = this.paginator;
2036
- this.dataSource.sort = this.sort;
2035
+ if (!this.useAsync) {
2036
+ this.dataSource.paginator = this.paginator;
2037
+ this.dataSource.sort = this.sort;
2038
+ }
2037
2039
  }
2038
2040
  onColumnSettings(definition) {
2039
2041
  this.showColumnModal = true;