principal-dashboard-lib-v2 0.0.11 → 0.0.13

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.
@@ -11,7 +11,7 @@ export class ChartheaderComponent {
11
11
  this.isChartView = true;
12
12
  }
13
13
  ngOnInit() {
14
- this.libVersion = "0.0.19";
14
+ this.libVersion = "0.0.13";
15
15
  // this.myIcon = document.getElementById('myIconImg');
16
16
  // this.changeChatType()
17
17
  }
@@ -46,4 +46,4 @@ ChartheaderComponent.decorators = [
46
46
  ChartheaderComponent.ctorParameters = () => [
47
47
  { type: PrincipalDashboardLibV2Service }
48
48
  ];
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscXdCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlIH0gZnJvbSAnYW5ndWxhci1nb29nbGUtY2hhcnRzJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbmRlY2xhcmUgbGV0IHJlcXVpcmU6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0aGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRoZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydGhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIFxyXG4gIC8vdmFyaWFibGVzXHJcbiAgbXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XHJcbiAgaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgbXlJY29uOiBhbnk7XHJcbiAgbGliVmVyc2lvbjphbnk7XHJcbiAgaXNDaGFydFZpZXc9dHJ1ZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpYlZlcnNpb24gPSBcIjAuMC4xOVwiO1xyXG4gICAgLy8gdGhpcy5teUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlJY29uSW1nJyk7XHJcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXHJcbiAgfVxyXG4gIGNoYW5nZUNoYXRUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnRWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xyXG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlVXNlcigpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscXdCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlIH0gZnJvbSAnYW5ndWxhci1nb29nbGUtY2hhcnRzJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbmRlY2xhcmUgbGV0IHJlcXVpcmU6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0aGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRoZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydGhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIFxyXG4gIC8vdmFyaWFibGVzXHJcbiAgbXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XHJcbiAgaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgbXlJY29uOiBhbnk7XHJcbiAgbGliVmVyc2lvbjphbnk7XHJcbiAgaXNDaGFydFZpZXc9dHJ1ZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpYlZlcnNpb24gPSBcIjAuMC4xM1wiO1xyXG4gICAgLy8gdGhpcy5teUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlJY29uSW1nJyk7XHJcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXHJcbiAgfVxyXG4gIGNoYW5nZUNoYXRUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnRWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xyXG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlVXNlcigpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -109,7 +109,7 @@ export class ChartviewComponent {
109
109
  labels.removeChild(labels.lastChild);
110
110
  }
111
111
  this.chartDataTable = this.myChartDataMatrix;
112
- // console.log("this.myChartDataMatrix",this.myChartDataMatrix);
112
+ console.log("this.myChartDataMatrix", this.myChartDataMatrix);
113
113
  (this.myChartOptions = {
114
114
  tooltip: {
115
115
  trigger: 'none',
@@ -348,4 +348,4 @@ ChartviewComponent.ctorParameters = () => [
348
348
  ChartviewComponent.propDecorators = {
349
349
  data: [{ type: Input }]
350
350
  };
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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LFlBQVksSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM1RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNwRixJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM5RDtJQUVILENBQUM7SUFFQSxvQkFBb0I7UUFDbEIsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFFM0QsSUFBSSxhQUFhLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNqQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzRCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2hELGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0I7UUFDQSxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUNELFdBQVc7UUFDVCxpQ0FBaUM7SUFDbkMsQ0FBQzs7O1lBdFhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsaStFQUF5Qzs7YUFFMUM7OztZQUxRLDhCQUE4Qjs7O21CQU9wQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlLCBHb29nbGVDaGFydENvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItZ29vZ2xlLWNoYXJ0cyc7XHJcbmltcG9ydCB7IGVsZW1lbnQgfSBmcm9tICdwcm90cmFjdG9yJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0dmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0dmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnR2aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydHZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHNldCBkYXRhKHJlczogYW55KSB7XHJcbiAgICBpZihyZXMhPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMubG9hZENoYXJ0KHJlcyk7XHJcbiAgICB9XHJcbiAgICAgIFxyXG4gIH1cclxuICBjaGFydHZpZXc6YW55O1xyXG4gIG15RGF0YUxpc3Q6YW55O1xyXG4gIGNoYXJ0RGF0YVRhYmxlOmFueTtcclxuICBteUNoYXJ0T3B0aW9uczogYW55O1xyXG4gIEFsbHJvd0hlaWdodDogYW55O1xyXG4gIG15WG1sRGF0YTogYW55O1xyXG4gIGN1cnJlbnRkYXRhTGlzdDphbnk7XHJcbiAgcmVzb3VyY2VEYXRhTGlzdDphbnk7XHJcbiAgYWxsZGF0YUxpc3Q6YW55O1xyXG4gIHNlbGVjdGVkVXNlckRhdGE6YW55O1xyXG4gIHJvd0VsZW1lbnRzOmFueTtcclxuIFxyXG4gIGluc3RhbGxlZENsYXNzcm9vbXM6IGFueTtcclxuICBjdXJyZW50Um9vbXM6IGFueTtcclxuICB0b3RhbFVzZXJzID0gMDtcclxuICBlbGlnaWJsZVVzZXJzID0gMDtcclxuICBjdXJyZW50VXNlcnMgPSAwO1xyXG4gIG15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIG15Q2hhcnR3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICogMC44ODtcclxuICBteUNoYXJ0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gIGN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XHJcbiAgYWxsTGlzdCA9IFwiQWxsIFVzZXJzXCI7XHJcbiAgaXNBbGxVc2VycyA9IGZhbHNlO1xyXG4gIGlzVXNlcldpc2UgPSBmYWxzZTtcclxuICBhbGx1c2VyTGlzdDogYW55O1xyXG4gIG15Q2hhcnREYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgXHJcbiAgdG90YWxDaGFydERhdGFNYXRyaXggID0gbmV3IEFycmF5KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7IH1cclxuXHJcbiAgbG9hZENoYXJ0KHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCcgSU4gLS0+IDggbG9hZENoYXJ0Jyk7XHJcbiAgICB0aGlzLnRvdGFsVXNlcnMgPSAwO1xyXG4gICAgdGhpcy5lbGlnaWJsZVVzZXJzID0gMDtcclxuICAgIHRoaXMuY3VycmVudFVzZXJzID0gMDtcclxuICAgIHRoaXMubXlDaGFydFR5cGUgPSBDaGFydFR5cGUuVGltZWxpbmU7XHJcbiAgICB0aGlzLm15Q2hhcnR3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICogMC44ODtcclxuICAgIHRoaXMubXlDaGFydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgVXNlcnNcIjtcclxuICAgIHRoaXMuYWxsTGlzdCA9IFwiQWxsIFVzZXJzXCI7XHJcbiAgICB0aGlzLmlzQWxsVXNlcnMgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCA9W107XHJcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ICA9W107XHJcblxyXG4gICAgdGhpcy5jaGFydHZpZXcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGQtY2hhcnR2aWV3Jyk7XHJcbiAgICB0aGlzLm15RGF0YUxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGQteG1sRGF0YScpO1xyXG4gICAgLy8gbGV0IHBhcnNlID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgaWYocmVzcG9uc2Upe1xyXG4gICAgICB0aGlzLm15WG1sRGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLm15WG1sRGF0YSl7XHJcbiAgICAgIHRoaXMuY3VycmVudGRhdGFMaXN0ID0gdGhpcy5wZFNlcnZpY2UuZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKHRoaXMubXlYbWxEYXRhKTtcclxuICAgICAgdGhpcy5hbGx1c2VyTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmFsbFVzZXJDaGFydERhdGEoKTtcclxuICAgICAgdGhpcy5yZXNvdXJjZURhdGFMaXN0ID0gdGhpcy5wZFNlcnZpY2UuZ2VuYXJhdGVSZXNvdXJzZVJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XHJcbiAgICAgIHRoaXMudG90YWxVc2VycyA9IHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJzTWV0YWRhdGEubGVuZ3RoO1xyXG4gICAgICB0aGlzLmZpbmRDdXJyZW50VXNlckNvdW50KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDaGFydFR5cGUoZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5wZFNlcnZpY2UuaXNVc2VyV2lzZV9kYXRhLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGFUeXBlKGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblJlc2l6ZVdpbmRvdy5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgb25SZXNpemVXaW5kb3coZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5teUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7IC8vc2V0IGFuIGFwcHJvcHJpYXRlICBmYWN0b3JcclxuICB9XHJcbiAgbXlDaGFydFJlYWR5KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEaXZmb3JUb3RhbER1cmFydGlvbigpO1xyXG4gICAgdGhpcy5zZXRIZWlnaHRvZkRpdmZvclRvdGFsRHVyYXJ0aW9uKCk7XHJcbiAgICAgIC8vIHRoaXMucmVtb3ZlQmxhbmtFbnRyeUJhcigpO1xyXG4gIH1cclxuICB1cGRhdGVDaGFydFR5cGUoZGF0YVR5cGU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY2hhcnR2aWV3ICE9IG51bGwgJiYgdGhpcy5jaGFydHZpZXcgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChkYXRhVHlwZSA9PSBDaGFydFR5cGUuVGFibGUpIHtcclxuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hhcnR2aWV3LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZURhdGFUeXBlKGRhdGFUeXBlOiBhbnkpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGRhdGFUeXBlO1xyXG4gICAgaWYgKHRoaXMubXlYbWxEYXRhKSB7XHJcbiAgICAgIGlmKHRoaXMuaXNVc2VyV2lzZSl7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xyXG4gICAgICAgIHRoaXMuYWxsTGlzdCA9IFwiQWxsIFVzZXJzXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgICAgICAgIHRoaXMudXNlcldpc2VBbGxEYXRhKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQ3VycmVudERhdGEoKTtcclxuICAgICAgICB9IFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBSb29tc1wiO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgUm9vbXNcIjtcclxuICAgICAgICBpZih0aGlzLmlzQWxsVXNlcnMpe1xyXG4gICAgICAgICAgdGhpcy5jbGFzc1Jvb21XaXNlQWxsRGF0YSgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5jbGFzc1Jvb21XaXNlQ3VycmVudERhdGEoKTtcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZUNoYXJ0KCkge1xyXG4gICAgbGV0IGxhYmVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbHMnKTtcclxuICAgIHdoaWxlIChsYWJlbHMuZmlyc3RDaGlsZCkge1xyXG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYXJ0RGF0YVRhYmxlID0gdGhpcy5teUNoYXJ0RGF0YU1hdHJpeDtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGhpcy5teUNoYXJ0RGF0YU1hdHJpeFwiLHRoaXMubXlDaGFydERhdGFNYXRyaXgpO1xyXG4gICAgXHJcbiAgXHJcbiAgICAodGhpcy5teUNoYXJ0T3B0aW9ucyA9IHtcclxuICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgIHRyaWdnZXI6ICdub25lJyxcclxuICAgICAgfSxcclxuICAgICAgY29sb3JzOiBbJyNmZjdmMGUnLCAnIzJjYTAyYycsICcjOGM1NjRiJywgJyNkNjI3MjgnLCAnI2JjYmQyMicsICcjMTdiZWNmJ10sXHJcbiAgICAgIHRpbWVsaW5lOiB7XHJcbiAgICAgICAgY29sb3JCeVJvd0xhYmVsOiB0cnVlLFxyXG4gICAgICAgIGJhckxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRTaXplOiA3LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIGhBeGlzOiB7XHJcbiAgICAgICAgZm9ybWF0OiAnSEg6bW0gYScsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB0aGlzLkFsbHJvd0hlaWdodCArIDEwMDsvL3RvIHNldCBwZXJmZWN0IGhlaWdodCBvZiBjaGFydCBcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgY2FsdWxhdGVUb3RhbER1cmF0aW9uKGRldGFpbFZpZXdNYXRyaXg6YW55KSB7XHJcbiAgICAgXHJcbiAgICBsZXQgaWRfZHVyYXRpb25BcnJheTtcclxuICAgIGxldCBpZF9kdXJhdGlvbk1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgaWRfZHVyYXRpb25NYXRyaXggPSBbXTtcclxuICAgIHRoaXMudG90YWxDaGFydERhdGFNYXRyaXggPSBbXTtcclxuICAgIGlmICh0aGlzLmlzVXNlcldpc2UpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcclxuICAgICAgICAgIG5hbWU6IGRldGFpbFZpZXdNYXRyaXhbaV0udXNlck5hbWUsXHJcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoZGV0YWlsVmlld01hdHJpeFtpXS5kdXJhdGlvbiksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZF9kdXJhdGlvbk1hdHJpeC5wdXNoKGlkX2R1cmF0aW9uQXJyYXkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRldGFpbFZpZXdNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZF9kdXJhdGlvbkFycmF5ID0ge1xyXG4gICAgICAgICAgbmFtZTogZGV0YWlsVmlld01hdHJpeFtpXS50ZXJtaW5hbExvY2F0aW9uLFxyXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWRfZHVyYXRpb25NYXRyaXgucHVzaChpZF9kdXJhdGlvbkFycmF5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4ID0gWy4uLm5ldyBTZXQoaWRfZHVyYXRpb25NYXRyaXgpXTtcclxuICAgIFxyXG4gICAgaWRfZHVyYXRpb25NYXRyaXguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAob2JqW2l0ZW0ubmFtZV0pIHtcclxuICAgICAgICBvYmpbaXRlbS5uYW1lXS52YWx1ZSA9IG9ialtpdGVtLm5hbWVdLnZhbHVlICsgaXRlbS52YWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgb2JqW2l0ZW0ubmFtZV0gPSBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCB2YWx1ZXNBcnIgPSBPYmplY3QudmFsdWVzKG9iaik7XHJcbiAgIFxyXG4gICAgbGV0IG15QXJyYXkgPSBuZXcgQXJyYXkoKTtcclxuICAgIG15QXJyYXkgPSBbXTtcclxuICAgIHZhbHVlc0Fyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbXlBcnJheS5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgIGZvciAobGV0IGkgPSAwOyBpIDwgbXlBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdG90YWxkdXJhdGlvblBlclJvdyA9IFt0aGlzLnRpbWVDb252ZXJ0KG15QXJyYXlbaV0pLnRvU3RyaW5nKCkgKyAnIGhycyddO1xyXG4gICAgICAvLyBsZXQgdG90YWxDaGFydFJvd0RhdGFBcnJheSA9IFt0b3RhbGR1cmF0aW9uUGVyUm93XTtcclxuICAgICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5wdXNoKHRvdGFsZHVyYXRpb25QZXJSb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuICB0aW1lQ29udmVydChuOiBhbnkpIHtcclxuICAgIHZhciBudW0gPSBNYXRoLmZsb29yKG4pO1xyXG4gICAgdmFyIGhvdXJzID0gbnVtIC8gNjA7XHJcbiAgICB2YXIgcmhvdXJzID0gTWF0aC5mbG9vcihob3Vycyk7XHJcbiAgICB2YXIgbWludXRlcyA9IChob3VycyAtIHJob3VycykgKiA2MDtcclxuICAgIHZhciBybWludXRlcyA9IE1hdGgucm91bmQobWludXRlcyk7XHJcbiAgICByZXR1cm4gcmhvdXJzICsgJzonICsgcm1pbnV0ZXM7XHJcbiAgfVxyXG4gIHJlbW92ZUJsYW5rRW50cnlCYXIoKSB7XHJcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XHJcbiAgICB2YXIgZWwgPSBjaGFydERpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInJlY3RcIik7ICAgICAgLy9nZXQgYWxsIHRoZSBkZXNjZW5kYW50IHJlY3QgZWxlbWVudCBpbnNpZGUgdGhlIGNvbnRhaW5lciAgICAgIFxyXG4gICAgdmFyIHdpZHRoID0gMTAwMDAwMDAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgYSBsYXJnZSBpbml0aWFsIHZhbHVlIHRvIHdpZHRoXHJcbiAgICB2YXIgZWxUb1JlbSA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VsZW1lbnQgd291bGQgYmUgYWRkZWQgdG8gdGhpcyBhcnJheSBmb3IgcmVtb3ZhbFxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9vcGluZyBvdmVyIGFsbCB0aGUgcmVjdCBlbGVtZW50IG9mIGNvbnRhaW5lclxyXG4gICAgICB2YXIgY3dpZHRoID0gcGFyc2VJbnQoZWxbaV0uZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpOy8vZ2V0dGluZyB0aGUgd2lkdGggb2YgaXRoIGVsZW1lbnRcclxuICAgICAgaWYgKGN3aWR0aCA8IHdpZHRoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgY3VycmVudCBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB3aWR0aCB0aGVuIHRoaXMgaXMgbWluLiB3aWR0aCBhbmQgaXRoIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWRcclxuICAgICAgICBlbFRvUmVtID0gW2VsW2ldXTtcclxuICAgICAgICB3aWR0aCA9IGN3aWR0aDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXR0aW5nIHRoZSB3aWR0aCB3aXRoIG1pbiB3aWR0aFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGN3aWR0aCA9PSB3aWR0aCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGN1cnJlbnQgZWxlbWVudCB3aWR0aCBpcyBlcXVhbCB0byBwcmV2aW91cyB3aWR0aCB0aGVuIG1vcmUgdGhhdCBvbmUgZWxlbWVudCB3b3VsZCBiZSByZW1vdmVkXHJcbiAgICAgICAgZWxUb1JlbS5wdXNoKGVsW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbFRvUmVtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vIG5vdyBpdGVyYXRlIEpVU1QgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZVxyXG4gICAgICBlbFRvUmVtW2ldLnNldEF0dHJpYnV0ZShcImZpbGxcIiwgXCJub25lXCIpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgY3JlYXRlRGl2Zm9yVG90YWxEdXJhcnRpb24oKSB7XHJcbiAgICBsZXQgcm93TGFiZWxzID0gW107XHJcbiAgICB0aGlzLnJvd0VsZW1lbnRzID0gW107XHJcbiAgICB2YXIgbGFiZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhYmVscycpO1xyXG4gICAgd2hpbGUgKGxhYmVscy5maXJzdENoaWxkKSB7XHJcbiAgICAgIGxhYmVscy5yZW1vdmVDaGlsZChsYWJlbHMubGFzdENoaWxkKTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgdGVhbSA9IHRoaXMudG90YWxDaGFydERhdGFNYXRyaXhbaV1bMF07XHJcbiAgICAgIHJvd0xhYmVscy5wdXNoKHRlYW0pO1xyXG4gICAgICB2YXIgbGFiZWwgPSBsYWJlbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgIGxhYmVsLnN0eWxlWydib3JkZXItYm90dG9tJ10gPSAnMXB4IHNvbGlkICNiN2I3YjcnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsnZm9udC1mYW1pbHknXSA9ICdBcmlhbCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWydmb250LXNpemUnXSA9ICcxM3B4JztcclxuICAgICAgbGFiZWwuc3R5bGVbJ3RleHQtYWxpZ24nXSA9ICdsZWZ0JztcclxuICAgICAgbGFiZWwuc3R5bGVbJ3BhZGRpbmctbGVmdCddID0gJzhweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSAnOHB4JztcclxuICAgICAgbGFiZWwuc3R5bGUucG9zaXRpb24gPSAnaW5oZXJpdCc7XHJcbiAgICAgIGlmIChpICUgMikge1xyXG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2U2ZTZlNic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGFiZWwuc3R5bGVbJ2JhY2tncm91bmQtY29sb3InXSA9ICcjZmZmZmZmJztcclxuICAgICAgfVxyXG4gICAgICBsYWJlbC5pbm5lckhUTUwgPSB0ZWFtO1xyXG4gICAgICB0aGlzLnJvd0VsZW1lbnRzLnB1c2gobGFiZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRIZWlnaHRvZkRpdmZvclRvdGFsRHVyYXJ0aW9uKCkge1xyXG4gICBcclxuICAgIHRoaXMuQWxscm93SGVpZ2h0ID0gMDtcclxuICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215VGltZUxpbmUnKTtcclxuICAgIGxldCByb3dzID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3JlY3QnKTtcclxuICAgIGxldCByb3dJbmRleCA9IC0xO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICByb3dJbmRleCsrO1xyXG4gICAgICBpZiAocm93SW5kZXggPCB0aGlzLnJvd0VsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCByb3dIZWlnaHQgPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuQWxscm93SGVpZ2h0ICs9IHBhcnNlRmxvYXQocm93c1tpXS5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpKTtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudENlbGwgPSB0aGlzLnJvd0VsZW1lbnRzW3Jvd0luZGV4XTtcclxuICAgICAgICBpZiAoY3VycmVudENlbGwpIHtcclxuICAgICAgICAgIGN1cnJlbnRDZWxsLnN0eWxlLmhlaWdodCA9IHJvd0hlaWdodDtcclxuICAgICAgICAgIGN1cnJlbnRDZWxsLnN0eWxlLmxpbmVIZWlnaHQgPSByb3dIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdFJvd0RhdGEoZXZlbnQ6IGFueSkge1xyXG4gICBjb25zdCB7IHJvdywgY29sdW1uIH0gPSBldmVudC5zZWxlY3Rpb25bMF07IFxyXG4gICBpZih0aGlzLmlzQWxsVXNlcnMpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xyXG4gICAgXHJcbiAgIH1lbHNle1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xyXG4gIFxyXG4gICAgXHJcbiAgIH1cclxuICAvLyAgY29uc29sZS5sb2coXCJ0aGlzLnNlbGVjdGVkVXNlckRhdGFcIix0aGlzLnNlbGVjdGVkVXNlckRhdGEpO1xyXG4gICAgdGhpcy5wZFNlcnZpY2UuZGV0YWlsZWR2aWV3RGF0YS5uZXh0KHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSk7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICAvLyBhbGx1c2VyTGlzdFxyXG4gIH1cclxuICBzaG93QWxsVXNlcigpIHtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmlzQWxsVXNlcnMubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuaXNBbGxVc2VycyA9IHRydWU7XHJcbiAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xyXG4gICAgICB0aGlzLnVzZXJXaXNlQWxsRGF0YSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2hvd0N1cnJlbnRVc2VyKCkge1xyXG4gICAgdGhpcy5pc0FsbFVzZXJzID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQoZmFsc2UpO1xyXG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcclxuICAgICB0aGlzLnVzZXJXaXNlQ3VycmVudERhdGEoKTtcclxuICAgIH1lbHNle1xyXG4gICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gdXNlcldpc2VDdXJyZW50RGF0YSgpe1xyXG4gXHJcbiAgIGxldCBjaGFydERhdGFVc2VyV2lzZSA9IHRoaXMucGRTZXJ2aWNlLnVzZXJXaXNlQ2hhcnREYXRhKCk7XHJcbiAgLy8gIGNvbnNvbGUubG9nKFwiY2hhcnREYXRhVXNlcldpc2VcIixjaGFydERhdGFVc2VyV2lzZSk7XHJcbiAgICBcclxuICAgaWYoY2hhcnREYXRhVXNlcldpc2UubGVuZ3RoPjApe1xyXG4gICAgdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCA9Y2hhcnREYXRhVXNlcldpc2U7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICBpZih0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEubGVuZ3RoPjApe1xyXG4gICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhKTtcclxuICAgIH1cclxuICAgfSAgXHJcbiB9XHJcbiB1c2VyV2lzZUFsbERhdGEoKXtcclxuICAgIGxldCBjaGFydERhdGFVc2VyV2lzZSA9IHRoaXMuYWxsdXNlckxpc3QuZm9yQ2hhcnREYXRhO1xyXG4gICAgaWYoY2hhcnREYXRhVXNlcldpc2UubGVuZ3RoPjApe1xyXG4gICAgdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCA9Y2hhcnREYXRhVXNlcldpc2U7XHJcbiAgICBcclxuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuYWxsdXNlckxpc3QuZm9yZHVyYXRpb25UYWJsZSk7XHJcbiAgICB9XHJcbiAgIFxyXG4gfVxyXG4gY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCl7XHJcbiAgIGxldCBjbGFzc1Jvb21kYXRhID0gdGhpcy5wZFNlcnZpY2UuY2xhc3NSb29tV2lzZUNoYXJ0RGF0YSgpO1xyXG4gIC8vICBjb25zb2xlLmxvZyhcImNsYXNzUm9vbWRhdGFcIixjbGFzc1Jvb21kYXRhKTtcclxuICAgaWYoY2xhc3NSb29tZGF0YSAmJiBjbGFzc1Jvb21kYXRhLmxlbmd0aD4wKXtcclxuICAgIFxyXG4gICAgIFxyXG4gICAgdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCA9Y2xhc3NSb29tZGF0YTsgICAgXHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICBpZih0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEubGVuZ3RoPjApe1xyXG4gICAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbih0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEpO1xyXG4gICAgfVxyXG4gICB9IFxyXG4gfVxyXG4gXHJcbiBjbGFzc1Jvb21XaXNlQWxsRGF0YSgpe1xyXG4gICBsZXQgYWxsY2xhc3NSb29tTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmFsbFJvb21zRGF0YSgpO1xyXG4gICBpZihhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YSAmJiBhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YS5sZW5ndGggPiAwKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPSBhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YTtcclxuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcclxuICAgfVxyXG4gICBpZihhbGxjbGFzc1Jvb21MaXN0LmZvcmR1cmF0aW9uVGFibGUgJiYgYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlLmxlbmd0aCA+IDApe1xyXG4gICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24oYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlKTtcclxuICAgfVxyXG4gICBcclxuIH1cclxuXHJcbiAgZmluZEN1cnJlbnRVc2VyQ291bnQoKXtcclxuICAgIGxldCB1c2VyQ29uc29sZURhdGEgPSB0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGE7XHJcbiAgIFxyXG4gICAgbGV0IHVzZXJOYW1lQXJyYXkgPSBuZXcgQXJyYXkoKTtcclxuICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICBjb25zdCBlbGVtZW50ID0gdXNlckNvbnNvbGVEYXRhW2luZGV4XS51c2VyTmFtZTtcclxuICAgICB1c2VyTmFtZUFycmF5LnB1c2goZWxlbWVudCk7XHJcbiAgIH1cclxuICAgIGxldCB1bmlxdWVVc2VyTmFtZSA9IFsuLi5uZXcgU2V0KHVzZXJOYW1lQXJyYXkpXTtcclxuICAgIHRoaXMuY3VycmVudFVzZXJzID0gdW5pcXVlVXNlck5hbWUubGVuZ3RoO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCduZ09uRGVzdHJveSA+PicpO1xyXG4gIH1cclxufVxyXG4iXX0=
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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dCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0VHlwZSwgR29vZ2xlQ2hhcnRDb21wb25lbnQgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xyXG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAncHJvdHJhY3Rvcic7XHJcbmltcG9ydCB7IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZSB9IGZyb20gJy4uL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jaGFydHZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydHZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0dmlldy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcnR2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBzZXQgZGF0YShyZXM6IGFueSkge1xyXG4gICAgaWYocmVzIT09IG51bGwpe1xyXG4gICAgICB0aGlzLmxvYWRDaGFydChyZXMpO1xyXG4gICAgfVxyXG4gICAgICBcclxuICB9XHJcbiAgY2hhcnR2aWV3OmFueTtcclxuICBteURhdGFMaXN0OmFueTtcclxuICBjaGFydERhdGFUYWJsZTphbnk7XHJcbiAgbXlDaGFydE9wdGlvbnM6IGFueTtcclxuICBBbGxyb3dIZWlnaHQ6IGFueTtcclxuICBteVhtbERhdGE6IGFueTtcclxuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xyXG4gIHJlc291cmNlRGF0YUxpc3Q6YW55O1xyXG4gIGFsbGRhdGFMaXN0OmFueTtcclxuICBzZWxlY3RlZFVzZXJEYXRhOmFueTtcclxuICByb3dFbGVtZW50czphbnk7XHJcbiBcclxuICBpbnN0YWxsZWRDbGFzc3Jvb21zOiBhbnk7XHJcbiAgY3VycmVudFJvb21zOiBhbnk7XHJcbiAgdG90YWxVc2VycyA9IDA7XHJcbiAgZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgY3VycmVudFVzZXJzID0gMDtcclxuICBteUNoYXJ0VHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcclxuICBteUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgbXlDaGFydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICBjdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xyXG4gIGFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gIGlzQWxsVXNlcnMgPSBmYWxzZTtcclxuICBpc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgYWxsdXNlckxpc3Q6IGFueTtcclxuICBteUNoYXJ0RGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gIFxyXG4gIHRvdGFsQ2hhcnREYXRhTWF0cml4ICA9IG5ldyBBcnJheSgpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIGxvYWRDaGFydChyZXNwb25zZTogYW55KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnIElOIC0tPiA4IGxvYWRDaGFydCcpO1xyXG4gICAgdGhpcy50b3RhbFVzZXJzID0gMDtcclxuICAgIHRoaXMuZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IDA7XHJcbiAgICB0aGlzLm15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgdGhpcy5teUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XHJcbiAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgdGhpcy5pc0FsbFVzZXJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBmYWxzZTtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPVtdO1xyXG4gICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeCAgPVtdO1xyXG5cclxuICAgIHRoaXMuY2hhcnR2aWV3ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLWNoYXJ0dmlldycpO1xyXG4gICAgdGhpcy5teURhdGFMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLXhtbERhdGEnKTtcclxuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGlmKHJlc3BvbnNlKXtcclxuICAgICAgdGhpcy5teVhtbERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYodGhpcy5teVhtbERhdGEpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRkYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XHJcbiAgICAgIHRoaXMuYWxsdXNlckxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxVc2VyQ2hhcnREYXRhKCk7XHJcbiAgICAgIHRoaXMucmVzb3VyY2VEYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xyXG4gICAgICB0aGlzLnRvdGFsVXNlcnMgPSB0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2Vyc01ldGFkYXRhLmxlbmd0aDtcclxuICAgICAgdGhpcy5maW5kQ3VycmVudFVzZXJDb3VudCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wZFNlcnZpY2UuY2hhcnRUeXBlLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hhcnRUeXBlKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhVHlwZShkYXRhKTtcclxuICAgIH0pO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemVXaW5kb3cuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG4gIG9uUmVzaXplV2luZG93KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubXlDaGFydHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjg4OyAvL3NldCBhbiBhcHByb3ByaWF0ZSAgZmFjdG9yXHJcbiAgfVxyXG4gIG15Q2hhcnRSZWFkeSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGl2Zm9yVG90YWxEdXJhcnRpb24oKTtcclxuICAgIHRoaXMuc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpO1xyXG4gICAgICAvLyB0aGlzLnJlbW92ZUJsYW5rRW50cnlCYXIoKTtcclxuICB9XHJcbiAgdXBkYXRlQ2hhcnRUeXBlKGRhdGFUeXBlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNoYXJ0dmlldyAhPSBudWxsICYmIHRoaXMuY2hhcnR2aWV3ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoZGF0YVR5cGUgPT0gQ2hhcnRUeXBlLlRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydHZpZXcuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVEYXRhVHlwZShkYXRhVHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBkYXRhVHlwZTtcclxuICAgIGlmICh0aGlzLm15WG1sRGF0YSkge1xyXG4gICAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XHJcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQWxsRGF0YSgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hbGxMaXN0ID0gXCJBbGwgUm9vbXNcIjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFJvb21zXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVDaGFydCgpIHtcclxuICAgIGxldCBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XHJcbiAgICB3aGlsZSAobGFiZWxzLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgbGFiZWxzLnJlbW92ZUNoaWxkKGxhYmVscy5sYXN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFydERhdGFUYWJsZSA9IHRoaXMubXlDaGFydERhdGFNYXRyaXg7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMubXlDaGFydERhdGFNYXRyaXhcIix0aGlzLm15Q2hhcnREYXRhTWF0cml4KTtcclxuICAgIFxyXG4gIFxyXG4gICAgKHRoaXMubXlDaGFydE9wdGlvbnMgPSB7XHJcbiAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICB0cmlnZ2VyOiAnbm9uZScsXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbG9yczogWycjZmY3ZjBlJywgJyMyY2EwMmMnLCAnIzhjNTY0YicsICcjZDYyNzI4JywgJyNiY2JkMjInLCAnIzE3YmVjZiddLFxyXG4gICAgICB0aW1lbGluZToge1xyXG4gICAgICAgIGNvbG9yQnlSb3dMYWJlbDogdHJ1ZSxcclxuICAgICAgICBiYXJMYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICBmb250U2l6ZTogNyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBoQXhpczoge1xyXG4gICAgICAgIGZvcm1hdDogJ0hIOm1tIGEnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5teUNoYXJ0SGVpZ2h0ID0gdGhpcy5BbGxyb3dIZWlnaHQgKyAxMDA7Ly90byBzZXQgcGVyZmVjdCBoZWlnaHQgb2YgY2hhcnQgXHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGNhbHVsYXRlVG90YWxEdXJhdGlvbihkZXRhaWxWaWV3TWF0cml4OmFueSkge1xyXG4gICAgIFxyXG4gICAgbGV0IGlkX2R1cmF0aW9uQXJyYXk7XHJcbiAgICBsZXQgaWRfZHVyYXRpb25NYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4ID0gW107XHJcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ID0gW107XHJcbiAgICBpZiAodGhpcy5pc1VzZXJXaXNlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsVmlld01hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlkX2R1cmF0aW9uQXJyYXkgPSB7XHJcbiAgICAgICAgICBuYW1lOiBkZXRhaWxWaWV3TWF0cml4W2ldLnVzZXJOYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWRfZHVyYXRpb25NYXRyaXgucHVzaChpZF9kdXJhdGlvbkFycmF5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcclxuICAgICAgICAgIG5hbWU6IGRldGFpbFZpZXdNYXRyaXhbaV0udGVybWluYWxMb2NhdGlvbixcclxuICAgICAgICAgIHZhbHVlOiBwYXJzZUludChkZXRhaWxWaWV3TWF0cml4W2ldLmR1cmF0aW9uKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlkX2R1cmF0aW9uTWF0cml4LnB1c2goaWRfZHVyYXRpb25BcnJheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICBpZF9kdXJhdGlvbk1hdHJpeCA9IFsuLi5uZXcgU2V0KGlkX2R1cmF0aW9uTWF0cml4KV07XHJcbiAgICBcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKG9ialtpdGVtLm5hbWVdKSB7XHJcbiAgICAgICAgb2JqW2l0ZW0ubmFtZV0udmFsdWUgPSBvYmpbaXRlbS5uYW1lXS52YWx1ZSArIGl0ZW0udmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIG9ialtpdGVtLm5hbWVdID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgdmFsdWVzQXJyID0gT2JqZWN0LnZhbHVlcyhvYmopO1xyXG4gICBcclxuICAgIGxldCBteUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgICBteUFycmF5ID0gW107XHJcbiAgICB2YWx1ZXNBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIG15QXJyYXkucHVzaChpdGVtLnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICBmb3IgKGxldCBpID0gMDsgaSA8IG15QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRvdGFsZHVyYXRpb25QZXJSb3cgPSBbdGhpcy50aW1lQ29udmVydChteUFycmF5W2ldKS50b1N0cmluZygpICsgJyBocnMnXTtcclxuICAgICAgLy8gbGV0IHRvdGFsQ2hhcnRSb3dEYXRhQXJyYXkgPSBbdG90YWxkdXJhdGlvblBlclJvd107XHJcbiAgICAgIHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgucHVzaCh0b3RhbGR1cmF0aW9uUGVyUm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgdGltZUNvbnZlcnQobjogYW55KSB7XHJcbiAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihuKTtcclxuICAgIHZhciBob3VycyA9IG51bSAvIDYwO1xyXG4gICAgdmFyIHJob3VycyA9IE1hdGguZmxvb3IoaG91cnMpO1xyXG4gICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByaG91cnMpICogNjA7XHJcbiAgICB2YXIgcm1pbnV0ZXMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMpO1xyXG4gICAgcmV0dXJuIHJob3VycyArICc6JyArIHJtaW51dGVzO1xyXG4gIH1cclxuICByZW1vdmVCbGFua0VudHJ5QmFyKCkge1xyXG4gICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlUaW1lTGluZScpO1xyXG4gICAgdmFyIGVsID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJyZWN0XCIpOyAgICAgIC8vZ2V0IGFsbCB0aGUgZGVzY2VuZGFudCByZWN0IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgICAgICBcclxuICAgIHZhciB3aWR0aCA9IDEwMDAwMDAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IGEgbGFyZ2UgaW5pdGlhbCB2YWx1ZSB0byB3aWR0aFxyXG4gICAgdmFyIGVsVG9SZW0gPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lbGVtZW50IHdvdWxkIGJlIGFkZGVkIHRvIHRoaXMgYXJyYXkgZm9yIHJlbW92YWxcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvb3Bpbmcgb3ZlciBhbGwgdGhlIHJlY3QgZWxlbWVudCBvZiBjb250YWluZXJcclxuICAgICAgdmFyIGN3aWR0aCA9IHBhcnNlSW50KGVsW2ldLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTsvL2dldHRpbmcgdGhlIHdpZHRoIG9mIGl0aCBlbGVtZW50XHJcbiAgICAgIGlmIChjd2lkdGggPCB3aWR0aCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGN1cnJlbnQgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gcHJldmlvdXMgd2lkdGggdGhlbiB0aGlzIGlzIG1pbi4gd2lkdGggYW5kIGl0aCBlbGVtZW50IHNob3VsZCBiZSByZW1vdmVkXHJcbiAgICAgICAgZWxUb1JlbSA9IFtlbFtpXV07XHJcbiAgICAgICAgd2lkdGggPSBjd2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0dGluZyB0aGUgd2lkdGggd2l0aCBtaW4gd2lkdGhcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjd2lkdGggPT0gd2lkdGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBjdXJyZW50IGVsZW1lbnQgd2lkdGggaXMgZXF1YWwgdG8gcHJldmlvdXMgd2lkdGggdGhlbiBtb3JlIHRoYXQgb25lIGVsZW1lbnQgd291bGQgYmUgcmVtb3ZlZFxyXG4gICAgICAgIGVsVG9SZW0ucHVzaChlbFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxUb1JlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyBub3cgaXRlcmF0ZSBKVVNUIHRoZSBlbGVtZW50cyB0byByZW1vdmVcclxuICAgICAgZWxUb1JlbVtpXS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZURpdmZvclRvdGFsRHVyYXJ0aW9uKCkge1xyXG4gICAgbGV0IHJvd0xhYmVscyA9IFtdO1xyXG4gICAgdGhpcy5yb3dFbGVtZW50cyA9IFtdO1xyXG4gICAgdmFyIGxhYmVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbHMnKTtcclxuICAgIHdoaWxlIChsYWJlbHMuZmlyc3RDaGlsZCkge1xyXG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHRlYW0gPSB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4W2ldWzBdO1xyXG4gICAgICByb3dMYWJlbHMucHVzaCh0ZWFtKTtcclxuICAgICAgdmFyIGxhYmVsID0gbGFiZWxzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcclxuICAgICBsYWJlbC5zdHlsZVsnYm9yZGVyLWJvdHRvbSddID0gJzFweCBzb2xpZCAjYjdiN2I3JztcclxuICAgICAgbGFiZWwuc3R5bGVbJ2ZvbnQtZmFtaWx5J10gPSAnQXJpYWwnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsnZm9udC1zaXplJ10gPSAnMTNweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWyd0ZXh0LWFsaWduJ10gPSAnbGVmdCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLWxlZnQnXSA9ICc4cHgnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsncGFkZGluZy1yaWdodCddID0gJzhweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlLnBvc2l0aW9uID0gJ2luaGVyaXQnO1xyXG4gICAgICBpZiAoaSAlIDIpIHtcclxuICAgICAgICBsYWJlbC5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJyNlNmU2ZTYnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2ZmZmZmZic7XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwuaW5uZXJIVE1MID0gdGVhbTtcclxuICAgICAgdGhpcy5yb3dFbGVtZW50cy5wdXNoKGxhYmVsKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpIHtcclxuICAgXHJcbiAgICB0aGlzLkFsbHJvd0hlaWdodCA9IDA7XHJcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XHJcbiAgICBsZXQgcm93cyA9IGNoYXJ0RGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdyZWN0Jyk7XHJcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcm93SW5kZXgrKztcclxuICAgICAgaWYgKHJvd0luZGV4IDwgdGhpcy5yb3dFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcm93SGVpZ2h0ID0gcGFyc2VGbG9hdChyb3dzW2ldLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykpICsgJ3B4JztcclxuICAgICAgICB0aGlzLkFsbHJvd0hlaWdodCArPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDZWxsID0gdGhpcy5yb3dFbGVtZW50c1tyb3dJbmRleF07XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5oZWlnaHQgPSByb3dIZWlnaHQ7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5saW5lSGVpZ2h0ID0gcm93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RSb3dEYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZXZlbnQuc2VsZWN0aW9uWzBdOyBcclxuICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5hbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICAgIFxyXG4gICB9ZWxzZXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICBcclxuICAgIFxyXG4gICB9XHJcbiAgLy8gIGNvbnNvbGUubG9nKFwidGhpcy5zZWxlY3RlZFVzZXJEYXRhXCIsdGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmRldGFpbGVkdmlld0RhdGEubmV4dCh0aGlzLnNlbGVjdGVkVXNlckRhdGEpO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgLy8gYWxsdXNlckxpc3RcclxuICB9XHJcbiAgc2hvd0FsbFVzZXIoKSB7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmlzQWxsVXNlcnMgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcclxuICAgICAgdGhpcy51c2VyV2lzZUFsbERhdGEoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmNsYXNzUm9vbVdpc2VBbGxEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dDdXJyZW50VXNlcigpIHtcclxuICAgIHRoaXMuaXNBbGxVc2VycyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZFNlcnZpY2UuaXNBbGxVc2Vycy5uZXh0KGZhbHNlKTtcclxuICAgIGlmKHRoaXMuaXNVc2VyV2lzZSl7XHJcbiAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICB0aGlzLmNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuIHVzZXJXaXNlQ3VycmVudERhdGEoKXtcclxuIFxyXG4gICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLnBkU2VydmljZS51c2VyV2lzZUNoYXJ0RGF0YSgpO1xyXG4gIC8vICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlXCIsY2hhcnREYXRhVXNlcldpc2UpO1xyXG4gICAgXHJcbiAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICB9XHJcbiAgIH0gIFxyXG4gfVxyXG4gdXNlcldpc2VBbGxEYXRhKCl7XHJcbiAgICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLmFsbHVzZXJMaXN0LmZvckNoYXJ0RGF0YTtcclxuICAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbih0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUpO1xyXG4gICAgfVxyXG4gICBcclxuIH1cclxuIGNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpe1xyXG4gICBsZXQgY2xhc3NSb29tZGF0YSA9IHRoaXMucGRTZXJ2aWNlLmNsYXNzUm9vbVdpc2VDaGFydERhdGEoKTtcclxuICAvLyAgY29uc29sZS5sb2coXCJjbGFzc1Jvb21kYXRhXCIsY2xhc3NSb29tZGF0YSk7XHJcbiAgIGlmKGNsYXNzUm9vbWRhdGEgJiYgY2xhc3NSb29tZGF0YS5sZW5ndGg+MCl7XHJcbiAgICBcclxuICAgICBcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNsYXNzUm9vbWRhdGE7ICAgIFxyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhKTtcclxuICAgIH1cclxuICAgfSBcclxuIH1cclxuIFxyXG4gY2xhc3NSb29tV2lzZUFsbERhdGEoKXtcclxuICAgbGV0IGFsbGNsYXNzUm9vbUxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxSb29tc0RhdGEoKTtcclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEgJiYgYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEubGVuZ3RoID4gMCl7XHJcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID0gYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGE7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgIH1cclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlICYmIGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZS5sZW5ndGggPiAwKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZSk7XHJcbiAgIH1cclxuICAgXHJcbiB9XHJcblxyXG4gIGZpbmRDdXJyZW50VXNlckNvdW50KCl7XHJcbiAgICBsZXQgdXNlckNvbnNvbGVEYXRhID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhO1xyXG4gICBcclxuICAgIGxldCB1c2VyTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgY29uc3QgZWxlbWVudCA9IHVzZXJDb25zb2xlRGF0YVtpbmRleF0udXNlck5hbWU7XHJcbiAgICAgdXNlck5hbWVBcnJheS5wdXNoKGVsZW1lbnQpO1xyXG4gICB9XHJcbiAgICBsZXQgdW5pcXVlVXNlck5hbWUgPSBbLi4ubmV3IFNldCh1c2VyTmFtZUFycmF5KV07XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IHVuaXF1ZVVzZXJOYW1lLmxlbmd0aDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3kgPj4nKTtcclxuICB9XHJcbn1cclxuIl19
@@ -207,7 +207,9 @@ export class PrincipalDashboardLibV2Service {
207
207
  }
208
208
  //----------//location
209
209
  if (schoolTerminal[i].metadata !== undefined) {
210
- location = schoolTerminal[i].metadata; // get name of user w.r.t. ID
210
+ let metadataJSON = JSON.parse(schoolTerminal[i].metadata);
211
+ location = metadataJSON.location; // get name of user w.r.t. ID
212
+ console.log("metadataJSON", location);
211
213
  }
212
214
  else {
213
215
  location = '';
@@ -303,9 +305,14 @@ export class PrincipalDashboardLibV2Service {
303
305
  }
304
306
  //----------// terminalIP and terminalLocation
305
307
  for (let i = 0; i < schoolTerminalMatrix.length; i++) {
308
+ console.log("schoolTerminalMatrix[i]", schoolTerminalMatrix[i]);
309
+ console.log("schoolTerminalMatrix[i].terminalKey", terminalIP, schoolTerminalMatrix[i].terminalKey);
306
310
  if (terminalIP === schoolTerminalMatrix[i].terminalKey) {
307
- // console.log("schoolTerminalMatrix[i].terminalKey",terminalIP,schoolTerminalMatrix[i]);
308
311
  terminalLocation = schoolTerminalMatrix[i].location;
312
+ break;
313
+ }
314
+ else {
315
+ terminalLocation = "location";
309
316
  }
310
317
  }
311
318
  let userData = {
@@ -349,9 +356,9 @@ export class PrincipalDashboardLibV2Service {
349
356
  let dataTableforChart = new Array();
350
357
  dataTableforChart = [];
351
358
  if (this.userConsoleData) {
352
- // console.log("this.userConsoleData",this.userConsoleData);
359
+ console.log("this.userConsoleData", this.userConsoleData);
353
360
  for (let i = 0; i < this.userConsoleData.length; i++) {
354
- let userData = [this.userConsoleData[i].terminalLocation, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
361
+ let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
355
362
  dataTableforChart.push(userData);
356
363
  }
357
364
  }
@@ -661,4 +668,4 @@ PrincipalDashboardLibV2Service.decorators = [
661
668
  },] }
662
669
  ];
663
670
  PrincipalDashboardLibV2Service.ctorParameters = () => [];
664
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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O2dCQUNFLElBQUksRUFBRSxjQUFjO2dCQUNwQixPQUFPLEVBQUUsUUFBUTthQUNsQjtZQUNEO2dCQUNFLElBQUksRUFBRSxjQUFjO2dCQUNwQixPQUFPLEVBQUUsUUFBUTthQUNsQjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUVGLENBQUM7UUFDRixJQUFJLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDdkIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7Z0JBQ3RCLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUV0QixDQUFDOzs7O1lBcnFCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZSB7XHJcbnB1YmxpYyByZXNvdXJlTWV0YURhdGE6YW55O1xyXG5wdWJsaWMgdXNlcnNNZXRhRGF0YTphbnk7XHJcbnB1YmxpYyBzY2hvb2xUZXJtaW5hbERhdGE6YW55O1xyXG5wdWJsaWMgdXNlckNvbnNvbGVEYXRhOmFueTtcclxuXHJcbnB1YmxpYyBpc1Jlc291cmVNZXRhRGF0YVJlYWR5ID0gbmV3IFJlcGxheVN1YmplY3QoKTtcclxucHVibGljIGlzUmVzb3VyZU1ldGFEYXRhUmVhZHkkID0gdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxucHVibGljIGlzVXNlclJlcWl1cmVkRGF0YVJlYWR5ID0gbmV3IFJlcGxheVN1YmplY3QoKTtcclxucHVibGljIGlzVXNlclJlcWl1cmVkRGF0YVJlYWR5JCA9IHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gcHVibGljIG15Y2hhcnRUeXBlOiBhbnkgPSAnJztcclxuICBwdWJsaWMgZGF0YVR5cGU6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyB1c2VyQWxsRGF0YTogYW55ID0gJyc7XHJcbiAgcHVibGljIHVzZXJNZXRhZGF0YTogYW55ID0ge3VzZXJEZXRhaWxzOltdLHJlc291cmNlRGV0YWlsczpbXX07XHJcbiAgcHVibGljIHJlc291cmVNZXRhZGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gIHB1YmxpYyB1c2VyRGV0YWlsT2JqZWN0OiBhbnkgPSB7fTtcclxuICBwdWJsaWMgdXNlcmxpc3Q6YW55ID0gZmFsc2U7XHJcbiAgcHVibGljIG15RW5kVGltZSA6YW55O1xyXG4gXHJcbiAgLy9mb3IgY2hhbmdlIGNoYXJ0IFR5cGVcclxuICBwdWJsaWMgY2hhcnRUeXBlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLm15Y2hhcnRUeXBlKTtcclxuICBwdWJsaWMgY2hhcnRUeXBlJCA9IHRoaXMuY2hhcnRUeXBlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vZm9yIGNoYW5nZSB1c2VyV2lzZSBUbyBjbGFzc1Jvb20gd2lzZSBvciB2aWNlIHZlcnNhXHJcbiAgcHVibGljIGlzVXNlcldpc2VfZGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XHJcbiAgcHVibGljIGlzVXNlcldpc2VfZGF0YSQgPSB0aGlzLmlzVXNlcldpc2VfZGF0YS5hc09ic2VydmFibGUoKTtcclxuICAvLyBmb3IgYWxsIHVzZXIgYW5kIGN1cnJlbnQgdXNlciBpbmZvcm1hdGlvblxyXG4gIHB1YmxpYyBpc0FsbFVzZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnVzZXJsaXN0KTtcclxuICBwdWJsaWMgaXNBbGxVc2VycyQgPSB0aGlzLmlzQWxsVXNlcnMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy9mb3IgZ2V0IGRldGFpbHMgb2Ygc2VsZWN0ZWQgdXNlclxyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnVzZXJNZXRhZGF0YSk7XHJcbiAgcHVibGljIGRldGFpbGVkdmlld0RhdGEkID0gdGhpcy5kZXRhaWxlZHZpZXdEYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuIFxyXG4gIGdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEoZGF0YTogYW55KTogYW55IHtcclxuICAgIHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5uZXh0KGZhbHNlKTtcclxuICAgIGxldCByZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICBcclxuICAgICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcclxuICAgICAgICBsZXQgcmVzb3VzZUlEOiBhbnk7XHJcbiAgICAgICAgbGV0IHRpdGxlOiBhbnk7XHJcbiAgICAgICAgbGV0IHN1YmplY3Q6IGFueTtcclxuICAgICAgICBsZXQgZ3JhZGU6IGFueTtcclxuICAgICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgICAgbGV0IHR5cGU6IGFueTtcclxuICAgICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YSA9IGRhdGEucmVzb3VyY2VzTWV0YWRhdGEucmVzb3VyY2VNZXRhZGF0YTtcclxuICAgICAgIFxyXG4gICAgICAgIGlmKHJlc291cmNlTWV0YWRhdGEhPSB1bmRlZmluZWQgJiYgcmVzb3VyY2VNZXRhZGF0YS5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VNZXRhZGF0YS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9yZXNvdXNlSURcclxuICAgICAgICAgICAgcmVzb3VzZUlEID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5yZXNvdXJjZUlkO1xyXG4gICAgICAgICAgICAvLy0tLS0tLS0tLS0vL3N1YmplY3RcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5zdWJqZWN0LnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgc3ViamVjdCA9IHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0ID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9ncmFkZVxyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5ncmFkZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5ncmFkZS50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5ncmFkZS50aXRsZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JhZGUgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy9jaGFwdGVyXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhW2ldLmNoYXB0ZXIudGl0bGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjaGFwdGVyID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZWFjaGluZ3BvaW50XHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQudGl0bGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3R5cGVcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnR5cGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdHlwZSA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhW2ldLnR5cGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHR5cGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90aXRsZVxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRpdGxlID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50aXRsZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRpdGxlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VzZUlEOnJlc291c2VJRCxcclxuICAgICAgICAgICAgICBzdWJqZWN0OnN1YmplY3QsXHJcbiAgICAgICAgICAgICAgZ3JhZGU6Z3JhZGUsXHJcbiAgICAgICAgICAgICAgY2hhcHRlcjpjaGFwdGVyLFxyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQ6dGVhY2hpbmdwb2ludCxcclxuICAgICAgICAgICAgICB0eXBlOnR5cGUsXHJcbiAgICAgICAgICAgICAgdGl0bGU6dGl0bGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXNvdXJjZU1ldGFkYXRhTWF0cml4LnB1c2gocmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNvdXJlTWV0YURhdGEgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xyXG4gICAgICAgICAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIC8vIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xyXG4gIH1cclxuICBnZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEoZGF0YTogYW55KTogYW55IHtcclxuICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dChmYWxzZSk7XHJcbiAgICBsZXQgdXNlcnNNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBzY2hvb2xUZXJtaW5hbE1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHVzZXJDb25zb2xlTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICBpZihkYXRhICYmIGRhdGEgIT09IG51bGwpe1xyXG4gICAgICBsZXQgdXNlckNvbnNvbGUgPSBkYXRhLnVzZXJzQ29uc29sZS51c2VyQ29uc29sZTtcclxuICAgICAgbGV0IHVzZXJzTWV0YWRhdGEgPSBkYXRhLnVzZXJzTWV0YWRhdGEudXNlck1ldGFkYXRhO1xyXG4gICAgICBsZXQgc2Nob29sVGVybWluYWwgPSBkYXRhLnNjaG9vbFRlcm1pbmFscy5zY2hvb2xUZXJtaW5hbDtcclxuICAgICAgXHJcbiAgICAgIGlmKHVzZXJzTWV0YWRhdGEhPSBudWxsICYmIHVzZXJzTWV0YWRhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2Vyc01ldGFkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgdXNlcklkOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlck5hbWU6IGFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6IGFueTtcclxuICAgICAgICAgIGxldCBsaXN0T2ZVc2VyOmFueSA9IHt9XHJcbiAgICAgICAgICBpZiAodXNlcnNNZXRhZGF0YVtpXS51c2VySWQhPVwiXCIpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlcnNNZXRhZGF0YVtpXS51c2VySWQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdXNlck5hbWUgPSB1c2Vyc01ldGFkYXRhW2ldLmZ1bGxOYW1lIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdXNlck5hbWUgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICBpZiAodXNlcnNNZXRhZGF0YVtpXS51c2VyU3ViamVjdHMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9IHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIGxpc3RPZlVzZXIgPSB7XHJcbiAgICAgICAgICAgICAgdXNlcklkOnVzZXJJZCwgXHJcbiAgICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsIFxyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5wdXNoKGxpc3RPZlVzZXIpOyAgICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSBvZiBhbGwgdXNlcnNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2Vyc01ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlck5hbWUgPT09IGVsZW1lbnQudXNlck5hbWUpIHtcclxuICAgICAgICAgICAgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZC5wdXNoKHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0pOyAgLy9hcnJheSBvZiBzYW1lIG5hbWUgdXNlcnNcclxuICAgICAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5zcGxpY2UoaSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhlIHNhbWUgbmFtZSB1c2VycyBmcm9tIHVzZXJtZXRhZGF0YU1hdHJpeFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIGNvbnN0IHJhbmRvbU51bWJlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAvLyByYW5kb21OdW1iZXIuaW5uZXJIVE1MID0gaS50b1N0cmluZygpO1xyXG4gICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0udXNlck5hbWUgPSB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lICsgXCIgXCIgKyBpO1xyXG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaCh1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldKTsgICAgICAgICAgICAvL2FkZGluZyBzYW1lIG5hbWUgdXNlcnMgaW4gdXNlcm1ldGFkYXRhTWF0cml4IHdpdGggc29tZSByYW5kb20gY2hhcmF0b3JzXHJcbiAgICAgICAgdGhpcy51c2Vyc01ldGFEYXRhID0gdXNlcnNNZXRhZGF0YU1hdHJpeDtcclxuICAgICAgfVxyXG4gICAgICBpZihzY2hvb2xUZXJtaW5hbCAhPSBudWxsICYmIHNjaG9vbFRlcm1pbmFsLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBzY2hvb2xJZDphbnk7XHJcbiAgICAgICAgICBsZXQgdGVybWluYWxLZXk6YW55O1xyXG4gICAgICAgICAgbGV0IHRlcm1pbmFsVHlwZTphbnk7XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb246YW55O1xyXG4gICAgICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsRGF0YTphbnkgPSB7fTtcclxuICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy9zY2hvb2xJZFxyXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnNjaG9vbElkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgc2Nob29sSWQgPSBzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2Nob29sSWQgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVybWluYWxLZXlcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbEtleSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsS2V5ID0gc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsS2V5ID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsVHlwZVxyXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsVHlwZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsVHlwZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVybWluYWxUeXBlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy9sb2NhdGlvblxyXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSBzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xyXG4gICAgICAgICAgc2Nob29sSWQ6c2Nob29sSWQsXHJcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcclxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXHJcbiAgICAgICAgICBsb2NhdGlvbjpsb2NhdGlvblxyXG4gICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcclxuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRFM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOmFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6YW55O1xyXG4gICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlcklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlcklkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBzdGFydFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIER1cmF0aW9uXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcyA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VyQ29uc29sZVJlc291cmNlcyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgaWYgKHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2U7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUCBhbmQgdGVybWluYWxMb2NhdGlvblxyXG4gICAgICAgICBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRlcm1pbmFsSVAgPT09IHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldLnRlcm1pbmFsS2V5KSB7XHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0pO1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS5sb2NhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHVzZXJEYXRhID0ge1xyXG4gICAgICAgICAgICB1c2VySWQ6dXNlcklkLFxyXG4gICAgICAgICAgICB1c2VyTmFtZTp1c2VyTmFtZSxcclxuICAgICAgICAgICAgc3RhcnRUaW1lOm5ldyBEYXRlKHN0YXJ0VGltZSksXHJcbiAgICAgICAgICAgIGVuZFRpbWU6bmV3IERhdGUoZW5kVGltZSksXHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVA6dGVybWluYWxJUCxcclxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhOnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSxcclxuICAgICAgICAgICAgZHVyYXRpb246ZHVyYXRpb24sXHJcbiAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb246dGVybWluYWxMb2NhdGlvbixcclxuICAgICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdXNlckNvbnNvbGVNYXRyaXgucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlTWF0cml4O1xyXG4gICAgICAgICAgdGhpcy5pc1VzZXJSZXFpdXJlZERhdGFSZWFkeS5uZXh0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICB9XHJcbiAgICB9XHJcbiAgLy8gY29uc29sZS5sb2codXNlcnNNZXRhZGF0YU1hdHJpeCxzY2hvb2xUZXJtaW5hbE1hdHJpeCx1c2VyQ29uc29sZU1hdHJpeCk7XHJcbiAgICAgcmV0dXJuIHtcclxuICAgICAgdXNlcnNNZXRhZGF0YTp1c2Vyc01ldGFkYXRhTWF0cml4LFxyXG4gICAgICBzY2hvb2xUZXJtaW5hbERhdGE6c2Nob29sVGVybWluYWxNYXRyaXgsXHJcbiAgICAgIHVzZXJDb25zb2xlRGF0YTogdXNlckNvbnNvbGVNYXRyaXhcclxuICAgIH1cclxuICB9XHJcbiAgdXNlcldpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS51c2VyTmFtZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICB9XHJcbiAgY2xhc3NSb29tV2lzZUNoYXJ0RGF0YSgpe1xyXG4gICAgbGV0IGRhdGFUYWJsZWZvckNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEpe1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcInRoaXMudXNlckNvbnNvbGVEYXRhXCIsdGhpcy51c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICBcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbix0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICAgIFxyXG4gIH1cclxuICBhbGxVc2VyQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID1uZXcgQXJyYXkoKTtcclxuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcclxuICAgICAgbGV0IGluQWN0aXZldXNlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICBsZXQgbXlJRDogYW55O1xyXG4gICAgICBsZXQgQWxsdXNlckRldGFpbHMgPW5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2luZGV4XSlcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG15SUQgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlcklkO1xyXG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XHJcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZDpteUlELFxyXG4gICAgICAgICAgdXNlck5hbWU6aW5BY3RpdmV1c2VyTmFtZSxcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICB9O1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcclxuICAgICAgICAgIGVuZFRpbWU6XCJcIixcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXHJcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaChteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7Zm9yQ2hhcnREYXRhOmRhdGFUYWJsZWZvckNoYXJ0LGZvcmR1cmF0aW9uVGFibGU6QWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0fVxyXG4gIH1cclxuICBhbGxSb29tc0RhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcclxuICAgIGFsbFJvb21zRGV0YWlscyA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpe1xyXG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcclxuICAgICAgbGV0IGluQWN0aXZlQ2xhc3NSb29tOiBhbnk7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbExvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBteUNoYXJ0Um93RGF0YSA9IHtcclxuICAgICAgICAgIHVzZXJJZDpcIlwiLFxyXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOmluQWN0aXZlQ2xhc3NSb29tLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOlwiXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFtpbkFjdGl2ZUNsYXNzUm9vbSxuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksbmV3IERhdGUodGhpcy5teUVuZFRpbWUpXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XHJcbiAgfVxyXG4gIGRhdGFGb3JUYWJsZVZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPHVzZXJDb25zb2xlTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVR5cGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gIFxyXG5cclxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lIFxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIGR1cmF0aW9uXHJcbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xyXG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcclxuICAgICBcclxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcblxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XHJcbiAgfVxyXG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcclxuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gW107XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XHJcbiAgXHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJTdWJqZWN0cztcclxuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXHJcbiAgICAgIGlmICgodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gdW5kZWZpbmVkJiZ1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgY3VycmVudERhdGUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0TW9udGgoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmR1cmF0aW9uKTtcclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXHJcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xyXG5cclxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxyXG4gICAgICBcclxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPXJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICAgXHJcbiAgICAgIFxyXG4gICAgcmV0dXJuIHt1c2VyRGV0YWlsczpkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXgscmVzb3VyY2VEZXRhaWxzOmRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXh9O1xyXG4gIH1cclxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxyXG4gICBnZXREaXNwbGF5dHlwZVZhbHVlKGtleTogYW55KSB7XHJcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInRwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUb3BpY1wiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIndoaXRlYm9hcmRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY01lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2Fzc2V0X3ByaW50XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXHJcbiAgICAgIH0sXHJcblxyXG4gICAgXTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBrZXk7XHJcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xyXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHZhbHVlLmRpc3BsYXk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
671
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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Q0FBQzs7OztZQTNxQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2Uge1xyXG5wdWJsaWMgcmVzb3VyZU1ldGFEYXRhOmFueTtcclxucHVibGljIHVzZXJzTWV0YURhdGE6YW55O1xyXG5wdWJsaWMgc2Nob29sVGVybWluYWxEYXRhOmFueTtcclxucHVibGljIHVzZXJDb25zb2xlRGF0YTphbnk7XHJcblxyXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1Jlc291cmVNZXRhRGF0YVJlYWR5JCA9IHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcclxuXHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSQgPSB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuIHB1YmxpYyBteWNoYXJ0VHlwZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGFUeXBlOiBhbnkgPSAnJztcclxuICBwdWJsaWMgdXNlckFsbERhdGE6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyB1c2VyTWV0YWRhdGE6IGFueSA9IHt1c2VyRGV0YWlsczpbXSxyZXNvdXJjZURldGFpbHM6W119O1xyXG4gIHB1YmxpYyByZXNvdXJlTWV0YWRhdGEgPSBuZXcgQXJyYXkoKTtcclxuICBwdWJsaWMgdXNlckRldGFpbE9iamVjdDogYW55ID0ge307XHJcbiAgcHVibGljIHVzZXJsaXN0OmFueSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBteUVuZFRpbWUgOmFueTtcclxuIFxyXG4gIC8vZm9yIGNoYW5nZSBjaGFydCBUeXBlXHJcbiAgcHVibGljIGNoYXJ0VHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5teWNoYXJ0VHlwZSk7XHJcbiAgcHVibGljIGNoYXJ0VHlwZSQgPSB0aGlzLmNoYXJ0VHlwZS5hc09ic2VydmFibGUoKTtcclxuICAvL2ZvciBjaGFuZ2UgdXNlcldpc2UgVG8gY2xhc3NSb29tIHdpc2Ugb3IgdmljZSB2ZXJzYVxyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEkID0gdGhpcy5pc1VzZXJXaXNlX2RhdGEuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy8gZm9yIGFsbCB1c2VyIGFuZCBjdXJyZW50IHVzZXIgaW5mb3JtYXRpb25cclxuICBwdWJsaWMgaXNBbGxVc2VycyA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VybGlzdCk7XHJcbiAgcHVibGljIGlzQWxsVXNlcnMkID0gdGhpcy5pc0FsbFVzZXJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vZm9yIGdldCBkZXRhaWxzIG9mIHNlbGVjdGVkIHVzZXJcclxuICBwdWJsaWMgZGV0YWlsZWR2aWV3RGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VyTWV0YWRhdGEpO1xyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhJCA9IHRoaXMuZGV0YWlsZWR2aWV3RGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiBcclxuICBnZW5hcmF0ZVJlc291cnNlUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dChmYWxzZSk7XHJcbiAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgXHJcbiAgICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XHJcbiAgICAgICAgbGV0IHJlc291c2VJRDogYW55O1xyXG4gICAgICAgIGxldCB0aXRsZTogYW55O1xyXG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgICAgbGV0IGdyYWRlOiBhbnk7XHJcbiAgICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xyXG4gICAgICAgIGxldCB0eXBlOiBhbnk7XHJcbiAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGEgPSBkYXRhLnJlc291cmNlc01ldGFkYXRhLnJlc291cmNlTWV0YWRhdGE7XHJcbiAgICAgICBcclxuICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhIT0gdW5kZWZpbmVkICYmIHJlc291cmNlTWV0YWRhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGEubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vcmVzb3VzZUlEXHJcbiAgICAgICAgICAgIHJlc291c2VJRCA9IHJlc291cmNlTWV0YWRhdGFbaV0ucmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9zdWJqZWN0XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vZ3JhZGVcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vY2hhcHRlclxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVhY2hpbmdwb2ludFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90eXBlXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHR5cGUgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0eXBlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGl0bGVcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aXRsZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0ge1xyXG4gICAgICAgICAgICAgIHJlc291c2VJRDpyZXNvdXNlSUQsXHJcbiAgICAgICAgICAgICAgc3ViamVjdDpzdWJqZWN0LFxyXG4gICAgICAgICAgICAgIGdyYWRlOmdyYWRlLFxyXG4gICAgICAgICAgICAgIGNoYXB0ZXI6Y2hhcHRlcixcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50OnRlYWNoaW5ncG9pbnQsXHJcbiAgICAgICAgICAgICAgdHlwZTp0eXBlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOnRpdGxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5wdXNoKHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICAgICAgICAgICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAvLyB0aGlzLnJlc291cmVNZXRhRGF0YSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICB9XHJcbiAgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xyXG4gICAgbGV0IHVzZXJzTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgc2Nob29sVGVybWluYWxNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VyQ29uc29sZU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcclxuICAgICAgbGV0IHVzZXJDb25zb2xlID0gZGF0YS51c2Vyc0NvbnNvbGUudXNlckNvbnNvbGU7XHJcbiAgICAgIGxldCB1c2Vyc01ldGFkYXRhID0gZGF0YS51c2Vyc01ldGFkYXRhLnVzZXJNZXRhZGF0YTtcclxuICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsID0gZGF0YS5zY2hvb2xUZXJtaW5hbHMuc2Nob29sVGVybWluYWw7XHJcbiAgICAgIFxyXG4gICAgICBpZih1c2Vyc01ldGFkYXRhIT0gbnVsbCAmJiB1c2Vyc01ldGFkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XHJcbiAgICAgICAgICBsZXQgbGlzdE9mVXNlcjphbnkgPSB7fVxyXG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlcklkIT1cIlwiKSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9IHVzZXJzTWV0YWRhdGFbaV0udXNlcklkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICBsaXN0T2ZVc2VyID0ge1xyXG4gICAgICAgICAgICAgIHVzZXJJZDp1c2VySWQsIFxyXG4gICAgICAgICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLCBcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaChsaXN0T2ZVc2VyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgb2YgYWxsIHVzZXJzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJOYW1lID09PSBlbGVtZW50LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQucHVzaCh1c2Vyc01ldGFkYXRhTWF0cml4W2ldKTsgIC8vYXJyYXkgb2Ygc2FtZSBuYW1lIHVzZXJzXHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguc3BsaWNlKGksIDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoZSBzYW1lIG5hbWUgdXNlcnMgZnJvbSB1c2VybWV0YWRhdGFNYXRyaXhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBjb25zdCByYW5kb21OdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgLy8gcmFuZG9tTnVtYmVyLmlubmVySFRNTCA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lID0gdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSArIFwiIFwiICsgaTtcclxuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnB1c2godXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXSk7ICAgICAgICAgICAgLy9hZGRpbmcgc2FtZSBuYW1lIHVzZXJzIGluIHVzZXJtZXRhZGF0YU1hdHJpeCB3aXRoIHNvbWUgcmFuZG9tIGNoYXJhdG9yc1xyXG4gICAgICAgIHRoaXMudXNlcnNNZXRhRGF0YSA9IHVzZXJzTWV0YWRhdGFNYXRyaXg7XHJcbiAgICAgIH1cclxuICAgICAgaWYoc2Nob29sVGVybWluYWwgIT0gbnVsbCAmJiBzY2hvb2xUZXJtaW5hbC5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgc2Nob29sSWQ6YW55O1xyXG4gICAgICAgICAgbGV0IHRlcm1pbmFsS2V5OmFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbFR5cGU6YW55O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uOmFueTtcclxuICAgICAgICAgIGxldCBzY2hvb2xUZXJtaW5hbERhdGE6YW55ID0ge307XHJcbiAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc2Nob29sSWRcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsS2V5XHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbFR5cGVcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vbG9jYXRpb25cclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXRhZGF0YUpTT04gPSBKU09OLnBhcnNlKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gbWV0YWRhdGFKU09OLmxvY2F0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWV0YWRhdGFKU09OXCIsbG9jYXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xyXG4gICAgICAgICAgc2Nob29sSWQ6c2Nob29sSWQsXHJcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcclxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXHJcbiAgICAgICAgICBsb2NhdGlvbjpsb2NhdGlvblxyXG4gICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcclxuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRFM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOmFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6YW55O1xyXG4gICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlcklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlcklkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBzdGFydFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIER1cmF0aW9uXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcyA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VyQ29uc29sZVJlc291cmNlcyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgaWYgKHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2U7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUCBhbmQgdGVybWluYWxMb2NhdGlvblxyXG4gICAgICAgICBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXVwiLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpO1xyXG4gICAgICAgICAgICBpZiAodGVybWluYWxJUCA9PT0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpIHtcclxuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBcImxvY2F0aW9uXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgdXNlcklkOnVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZShzdGFydFRpbWUpLFxyXG4gICAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKGVuZFRpbWUpLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbElQOnRlcm1pbmFsSVAsXHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXHJcbiAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVzZXJDb25zb2xlTWF0cml4LnB1c2godXNlckRhdGEpO1xyXG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcclxuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfVxyXG4gIC8vIGNvbnNvbGUubG9nKHVzZXJzTWV0YWRhdGFNYXRyaXgsc2Nob29sVGVybWluYWxNYXRyaXgsdXNlckNvbnNvbGVNYXRyaXgpO1xyXG4gICAgIHJldHVybiB7XHJcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcclxuICAgICAgc2Nob29sVGVybWluYWxEYXRhOnNjaG9vbFRlcm1pbmFsTWF0cml4LFxyXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XHJcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgfVxyXG4gIGNsYXNzUm9vbVdpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnVzZXJDb25zb2xlRGF0YVwiLHRoaXMudXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxJUCx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICAgIFxyXG4gIH1cclxuICBhbGxVc2VyQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID1uZXcgQXJyYXkoKTtcclxuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcclxuICAgICAgbGV0IGluQWN0aXZldXNlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICBsZXQgbXlJRDogYW55O1xyXG4gICAgICBsZXQgQWxsdXNlckRldGFpbHMgPW5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2luZGV4XSlcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG15SUQgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlcklkO1xyXG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XHJcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZDpteUlELFxyXG4gICAgICAgICAgdXNlck5hbWU6aW5BY3RpdmV1c2VyTmFtZSxcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICB9O1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcclxuICAgICAgICAgIGVuZFRpbWU6XCJcIixcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXHJcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaChteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7Zm9yQ2hhcnREYXRhOmRhdGFUYWJsZWZvckNoYXJ0LGZvcmR1cmF0aW9uVGFibGU6QWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0fVxyXG4gIH1cclxuICBhbGxSb29tc0RhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcclxuICAgIGFsbFJvb21zRGV0YWlscyA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpe1xyXG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcclxuICAgICAgbGV0IGluQWN0aXZlQ2xhc3NSb29tOiBhbnk7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbExvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBteUNoYXJ0Um93RGF0YSA9IHtcclxuICAgICAgICAgIHVzZXJJZDpcIlwiLFxyXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOmluQWN0aXZlQ2xhc3NSb29tLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOlwiXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFtpbkFjdGl2ZUNsYXNzUm9vbSxuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksbmV3IERhdGUodGhpcy5teUVuZFRpbWUpXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XHJcbiAgfVxyXG4gIGRhdGFGb3JUYWJsZVZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPHVzZXJDb25zb2xlTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVR5cGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gIFxyXG5cclxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lIFxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIGR1cmF0aW9uXHJcbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xyXG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcclxuICAgICBcclxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcblxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XHJcbiAgfVxyXG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcclxuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gW107XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XHJcbiAgXHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJTdWJqZWN0cztcclxuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXHJcbiAgICAgIGlmICgodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gdW5kZWZpbmVkJiZ1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgY3VycmVudERhdGUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0TW9udGgoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmR1cmF0aW9uKTtcclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXHJcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xyXG5cclxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxyXG4gICAgICBcclxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPXJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICAgXHJcbiAgICAgIFxyXG4gICAgcmV0dXJuIHt1c2VyRGV0YWlsczpkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXgscmVzb3VyY2VEZXRhaWxzOmRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXh9O1xyXG4gIH1cclxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxyXG4gICBnZXREaXNwbGF5dHlwZVZhbHVlKGtleTogYW55KSB7XHJcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInRwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUb3BpY1wiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIndoaXRlYm9hcmRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY01lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2Fzc2V0X3ByaW50XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXHJcbiAgICAgIH0sXHJcblxyXG4gICAgXTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBrZXk7XHJcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xyXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHZhbHVlLmRpc3BsYXk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -212,7 +212,9 @@ class PrincipalDashboardLibV2Service {
212
212
  }
213
213
  //----------//location
214
214
  if (schoolTerminal[i].metadata !== undefined) {
215
- location = schoolTerminal[i].metadata; // get name of user w.r.t. ID
215
+ let metadataJSON = JSON.parse(schoolTerminal[i].metadata);
216
+ location = metadataJSON.location; // get name of user w.r.t. ID
217
+ console.log("metadataJSON", location);
216
218
  }
217
219
  else {
218
220
  location = '';
@@ -308,9 +310,14 @@ class PrincipalDashboardLibV2Service {
308
310
  }
309
311
  //----------// terminalIP and terminalLocation
310
312
  for (let i = 0; i < schoolTerminalMatrix.length; i++) {
313
+ console.log("schoolTerminalMatrix[i]", schoolTerminalMatrix[i]);
314
+ console.log("schoolTerminalMatrix[i].terminalKey", terminalIP, schoolTerminalMatrix[i].terminalKey);
311
315
  if (terminalIP === schoolTerminalMatrix[i].terminalKey) {
312
- // console.log("schoolTerminalMatrix[i].terminalKey",terminalIP,schoolTerminalMatrix[i]);
313
316
  terminalLocation = schoolTerminalMatrix[i].location;
317
+ break;
318
+ }
319
+ else {
320
+ terminalLocation = "location";
314
321
  }
315
322
  }
316
323
  let userData = {
@@ -354,9 +361,9 @@ class PrincipalDashboardLibV2Service {
354
361
  let dataTableforChart = new Array();
355
362
  dataTableforChart = [];
356
363
  if (this.userConsoleData) {
357
- // console.log("this.userConsoleData",this.userConsoleData);
364
+ console.log("this.userConsoleData", this.userConsoleData);
358
365
  for (let i = 0; i < this.userConsoleData.length; i++) {
359
- let userData = [this.userConsoleData[i].terminalLocation, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
366
+ let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
360
367
  dataTableforChart.push(userData);
361
368
  }
362
369
  }
@@ -712,7 +719,7 @@ class ChartheaderComponent {
712
719
  this.isChartView = true;
713
720
  }
714
721
  ngOnInit() {
715
- this.libVersion = "0.0.19";
722
+ this.libVersion = "0.0.13";
716
723
  // this.myIcon = document.getElementById('myIconImg');
717
724
  // this.changeChatType()
718
725
  }
@@ -856,7 +863,7 @@ class ChartviewComponent {
856
863
  labels.removeChild(labels.lastChild);
857
864
  }
858
865
  this.chartDataTable = this.myChartDataMatrix;
859
- // console.log("this.myChartDataMatrix",this.myChartDataMatrix);
866
+ console.log("this.myChartDataMatrix", this.myChartDataMatrix);
860
867
  (this.myChartOptions = {
861
868
  tooltip: {
862
869
  trigger: 'none',