principal-dashboard-lib-v2 0.0.21 → 0.0.22

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.21";
14
+ this.libVersion = "0.0.22";
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsNnVCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydFR5cGUgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jaGFydGhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydGhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0aGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxuICApIHt9XG4gIFxuICAvL3ZhcmlhYmxlc1xuICBteXR5cGUgPSBDaGFydFR5cGUuVGltZWxpbmU7XG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuICBteUljb246IGFueTtcbiAgbGliVmVyc2lvbjphbnk7XG4gIGlzQ2hhcnRWaWV3PXRydWU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saWJWZXJzaW9uID0gXCIwLjAuMjFcIjtcbiAgICAvLyB0aGlzLm15SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUljb25JbWcnKTtcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXG4gIH1cbiAgY2hhbmdlQ2hhdFR5cGUoKSB7XG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IGZhbHNlO1xuICAgICAgdGhpcy5teXR5cGUgPSBDaGFydFR5cGUuVGFibGU7XG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XG4gICAgICB0aGlzLm15dHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcbiAgICAgXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgfVxuICB9XG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5uZXh0KGZhbHNlKTtcbiAgfVxuICBjaGFuZ2VEYXRhVHlwZVVzZXIoKSB7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gdHJ1ZTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsNnVCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydFR5cGUgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jaGFydGhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydGhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0aGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxuICApIHt9XG4gIFxuICAvL3ZhcmlhYmxlc1xuICBteXR5cGUgPSBDaGFydFR5cGUuVGltZWxpbmU7XG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuICBteUljb246IGFueTtcbiAgbGliVmVyc2lvbjphbnk7XG4gIGlzQ2hhcnRWaWV3PXRydWU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saWJWZXJzaW9uID0gXCIwLjAuMjJcIjtcbiAgICAvLyB0aGlzLm15SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUljb25JbWcnKTtcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXG4gIH1cbiAgY2hhbmdlQ2hhdFR5cGUoKSB7XG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IGZhbHNlO1xuICAgICAgdGhpcy5teXR5cGUgPSBDaGFydFR5cGUuVGFibGU7XG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XG4gICAgICB0aGlzLm15dHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcbiAgICAgXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgfVxuICB9XG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5uZXh0KGZhbHNlKTtcbiAgfVxuICBjaGFuZ2VEYXRhVHlwZVVzZXIoKSB7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gdHJ1ZTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
@@ -24,7 +24,7 @@ export class ChartviewComponent {
24
24
  }
25
25
  ngOnInit() { }
26
26
  loadChart(response) {
27
- // console.log(' IN --> 8 loadChart');
27
+ console.log(' INloadChart -->', response);
28
28
  this.totalUsers = 0;
29
29
  this.eligibleUsers = 0;
30
30
  this.currentUsers = 0;
@@ -111,7 +111,8 @@ export class ChartviewComponent {
111
111
  while (labels.firstChild) {
112
112
  labels.removeChild(labels.lastChild);
113
113
  }
114
- this.chartDataTable = this.myChartDataMatrix;
114
+ const filteredData = this.myChartDataMatrix.filter(node => node[0] !== "-" && node[0] !== "--");
115
+ this.chartDataTable = filteredData; //this.myChartDataMatrix;
115
116
  console.log("this.myChartDataMatrix", this.myChartDataMatrix);
116
117
  (this.myChartOptions = {
117
118
  tooltip: {
@@ -133,6 +134,9 @@ export class ChartviewComponent {
133
134
  }, 1000);
134
135
  }
135
136
  calulateTotalDuration(detailViewMatrix) {
137
+ console.log('detailViewMatrix-->', detailViewMatrix);
138
+ const filteredData = detailViewMatrix.filter(item => item.userName !== "-" && item.userName !== "--");
139
+ detailViewMatrix = filteredData;
136
140
  let id_durationArray;
137
141
  let id_durationMatrix = new Array();
138
142
  id_durationMatrix = [];
@@ -367,7 +371,7 @@ export class ChartviewComponent {
367
371
  ChartviewComponent.decorators = [
368
372
  { type: Component, args: [{
369
373
  selector: 'lib-chartview',
370
- template: "<div id=\"pd-chartview-main-container\" class=\"pd-chartview-main-container\">\n <div id=\"userSummary\">\n <table class=\"summaryTable\">\n <tbody>\n <tr>\n <td id=\"totalUsers\" class=\"chartview-navigationbar\">\n Total users: {{totalUsers}}\n </td>\n <td id=\"eligibleUsers\" class=\"chartview-navigationbar\">\n Eligible users: {{eligibleUsers}}\n </td>\n <td id=\"currentUsers\" class=\"chartview-navigationbar\">\n Current users: {{currentUsers}}\n </td>\n <td id=\"totalRooms\" class=\"chartview-navigationbar\">\n Installed Classrooms: {{installedClassrooms}}\n </td>\n <td id=\"currentRooms\" class=\"chartview-navigationbar\">\n Current Classrooms: {{currentRooms}}\n </td>\n <!-- <td\n id=\"currentRooms\"\n \n >\n <span id=\"totalUsers_list\" class=\"activeAll\">User List</span>\n </td> -->\n </tr>\n </tbody>\n </table>\n </div>\n <div id=\"pd-messageDivContainer\" class='pd-messageDivContainer'>\n <div id=\"pd-messageDiv\" class='pd-messageDiv'>Click the bars to view details of content accessed by a teacher.</div>\n <div id=\"pd-toggleContainer\" class=\"pd-toggleContainer\">\n \n <div id=\"pd-currentUserBtn\" class=\"pd-currentUserBtn-div pd-commonStyleBtn\" (click)=\"showCurrentUser()\" [ngStyle]=\"{ color: isAllUsers ? '#000000' : '#ffffff' , backgroundColor: isAllUsers ? '#c4c4c4' : '#000000'}\">\n {{currentList}}</div>\n <div id=\"pd-allUserBtn\" class=\"pd-allUserBtn-div pd-commonStyleBtn\" (click)=\"showAllUser()\" [ngStyle]=\"{ color: isAllUsers ? '#ffffff' : '#000000' , backgroundColor: isAllUsers ? '#000000' : '#c4c4c4'}\">\n {{allList}}</div>\n </div>\n </div>\n <div id=\"pd-chartview\" class=\"pd-chartview\">\n <div id=\"myChartDiv\">\n <div id=\"myTimeLine\">\n <google-chart\n [type]=\"myChartType\"\n [data]=\"chartDataTable\"\n [options]=\"myChartOptions\"\n [width]=\"myChartwidth\"\n [height]=\"myChartHeight\"\n (select)=\"onSelectRowData($event)\"\n (ready)=\"myChartReady()\"\n > \n </google-chart>\n \n </div>\n <div class=\"inline\" id=\"labels\"></div> \n \n \n </div>\n</div>\n",
374
+ template: "<div id=\"pd-chartview-main-container\" class=\"pd-chartview-main-container\">\n <div id=\"userSummary\">\n <table class=\"summaryTable\">\n <tbody>\n <tr>\n <td id=\"totalUsers\" class=\"chartview-navigationbar\">\n Total users: {{totalUsers}}\n </td>\n <td id=\"eligibleUsers\" class=\"chartview-navigationbar\">\n Eligible users: {{eligibleUsers}}\n </td>\n <td id=\"currentUsers\" class=\"chartview-navigationbar\">\n Current users: {{currentUsers}}\n </td>\n <td id=\"totalRooms\" class=\"chartview-navigationbar\">\n Installed Classrooms: {{installedClassrooms}}\n </td>\n <td id=\"currentRooms\" class=\"chartview-navigationbar\">\n Current Classrooms: {{currentRooms}}\n </td>\n <!-- <td\n id=\"currentRooms\"\n \n >\n <span id=\"totalUsers_list\" class=\"activeAll\">User List</span>\n </td> -->\n </tr>\n </tbody>\n </table>\n </div>\n <div id=\"pd-messageDivContainer\" class='pd-messageDivContainer'>\n <div id=\"pd-messageDiv\" class='pd-messageDiv'>Click the bars to view details of content accessed by a teacher.</div>\n <div id=\"pd-toggleContainer\" class=\"pd-toggleContainer\">\n \n <div id=\"pd-currentUserBtn\" class=\"pd-currentUserBtn-div pd-commonStyleBtn\" (click)=\"showCurrentUser()\" [ngStyle]=\"{ color: isAllUsers ? '#000000' : '#ffffff' , backgroundColor: isAllUsers ? '#c4c4c4' : '#000000'}\">\n {{currentList}}</div>\n <div id=\"pd-allUserBtn\" class=\"pd-allUserBtn-div pd-commonStyleBtn\" (click)=\"showAllUser()\" [ngStyle]=\"{ color: isAllUsers ? '#ffffff' : '#000000' , backgroundColor: isAllUsers ? '#000000' : '#c4c4c4'}\">\n {{allList}}</div>\n </div>\n </div>\n <div id=\"pd-chartview\" class=\"pd-chartview\">\n <div id=\"myChartDiv\">\n <div id=\"myTimeLine\">\n <google-chart\n [type]=\"myChartType\"\n [data]=\"chartDataTable\"\n [options]=\"myChartOptions\"\n [width]=\"myChartwidth\"\n [height]=\"myChartHeight\"\n (select)=\"onSelectRowData($event)\"\n (ready)=\"myChartReady()\"\n > \n </google-chart>\n \n </div>\n <div class=\"inline babloo\" id=\"labels\"></div> \n \n \n </div>\n</div>\n",
371
375
  styles: [".pd-chartview-main-container .pd-chartview{display:block;overflow:scroll;width:100%;height:484px;font-family:Tahoma;font-size:12pt;font-weight:400;color:#666;margin:10 auto;text-align:center;padding-top:1px}.pd-chartview-main-container #userSummary{background:#e0e0e0;margin-top:1px}.pd-chartview-main-container #roomSummary,.pd-chartview-main-container #userSummary{position:relative;width:100%;text-align:center;padding-top:6px;padding-bottom:6px;font-size:13px}.pd-chartview-main-container .pd-messageDivContainer{margin-top:1px}.pd-chartview-main-container .pd-messageDivContainer .pd-messageDiv{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;position:absolute;margin-left:5px;font-size:13px}.pd-chartview-main-container .pd-messageDivContainer .pd-toggleContainer{line-height:30px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;float:right;margin:5px 0}.pd-chartview-main-container .pd-messageDivContainer .pd-allUserBtn-div{border-radius:0 5px 5px 0}.pd-chartview-main-container .pd-messageDivContainer .pd-currentUserBtn-div{border-radius:5px 0 0 5px}.pd-chartview-main-container .pd-messageDivContainer .pd-commonStyleBtn{display:inline-block;cursor:pointer;font-size:12px;width:92px;text-align:center}.pd-chartview-main-container .summaryTable{width:100%;border-collapse:collapse;border-spacing:2px;border-color:grey}.pd-chartview-main-container .activeAll{cursor:pointer;background:none!important;border-radius:13px;border:none;width:64px;height:18px!important;line-height:18px!important;color:#45a1da;margin-right:0!important;padding:1px 5px;vertical-align:sub}.pd-chartview-main-container #myTimeLine{width:89%;height:60%;margin-left:5px;overflow-x:scroll;overflow-y:hidden;float:left}.pd-chartview-main-container #myTimeLine2{width:71px;position:relative;overflow-x:hidden;overflow-y:hidden}.pd-chartview-main-container #myChartDiv{width:100%}.pd-chartview-main-container .chartview-navigationbar{border-collapse:collapse;border-right:1px solid #999;text-align:center}.pd-chartview-main-container #labels{border-right:1px solid #b7b7b7;border-top:1px solid #b7b7b7;width:10%;float:left;font-size:1.2vw;overflow-x:hidden;overflow-y:hidden}.inline{vertical-align:top;position:relative}"]
372
376
  },] }
373
377
  ];
@@ -377,4 +381,4 @@ ChartviewComponent.ctorParameters = () => [
377
381
  ChartviewComponent.propDecorators = {
378
382
  data: [{ type: Input }]
379
383
  };
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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Q0FBQzthQUNuQjtTQUVGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULGlDQUFpQztJQUNuQyxDQUFDOzs7WUF6WkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qix5MkVBQXlDOzthQUUxQzs7O1lBTFEsOEJBQThCOzs7bUJBT3BDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXJ0VHlwZSwgR29vZ2xlQ2hhcnRDb21wb25lbnQgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgZWxlbWVudCB9IGZyb20gJ3Byb3RyYWN0b3InO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2hhcnR2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0dmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0dmlldy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydHZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZXQgZGF0YShyZXM6IGFueSkge1xuICAgIGlmKHJlcyE9PSBudWxsKXtcbiAgICAgIHRoaXMubG9hZENoYXJ0KHJlcyk7XG4gICAgfVxuICAgICAgXG4gIH1cbiAgY2hhcnR2aWV3OmFueTtcbiAgbXlEYXRhTGlzdDphbnk7XG4gIGNoYXJ0RGF0YVRhYmxlOmFueTtcbiAgbXlDaGFydE9wdGlvbnM6IGFueTtcbiAgQWxscm93SGVpZ2h0OiBhbnk7XG4gIG15WG1sRGF0YTogYW55O1xuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xuICByZXNvdXJjZURhdGFMaXN0OmFueTtcbiAgYWxsZGF0YUxpc3Q6YW55O1xuICBzZWxlY3RlZFVzZXJEYXRhOmFueTtcbiAgcm93RWxlbWVudHM6YW55O1xuIFxuICBpbnN0YWxsZWRDbGFzc3Jvb21zOiBhbnk7XG4gIGN1cnJlbnRSb29tczogYW55O1xuICB0b3RhbFVzZXJzID0gMDtcbiAgZWxpZ2libGVVc2VycyA9IDA7XG4gIGN1cnJlbnRVc2VycyA9IDA7XG4gIG15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xuICBteUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XG4gIG15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIGN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XG4gIGFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xuICBpc0FsbFVzZXJzID0gZmFsc2U7XG4gIGlzVXNlcldpc2UgPSBmYWxzZTtcbiAgYWxsdXNlckxpc3Q6IGFueTtcbiAgbXlDaGFydERhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgXG4gIHRvdGFsQ2hhcnREYXRhTWF0cml4ICA9IG5ldyBBcnJheSgpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBsb2FkQ2hhcnQocmVzcG9uc2U6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCcgSU4gLS0+IDggbG9hZENoYXJ0Jyk7XG4gICAgdGhpcy50b3RhbFVzZXJzID0gMDtcbiAgICB0aGlzLmVsaWdpYmxlVXNlcnMgPSAwO1xuICAgIHRoaXMuY3VycmVudFVzZXJzID0gMDtcbiAgICB0aGlzLm15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xuICAgIHRoaXMubXlDaGFydHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjg4O1xuICAgIHRoaXMubXlDaGFydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XG4gICAgdGhpcy5hbGxMaXN0ID0gXCJBbGwgVXNlcnNcIjtcbiAgICB0aGlzLmlzQWxsVXNlcnMgPSBmYWxzZTtcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBmYWxzZTtcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID1bXTtcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ICA9W107XG5cbiAgICB0aGlzLmNoYXJ0dmlldyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZC1jaGFydHZpZXcnKTtcbiAgICB0aGlzLm15RGF0YUxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGQteG1sRGF0YScpO1xuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcbiAgICBpZihyZXNwb25zZSl7XG4gICAgICB0aGlzLm15WG1sRGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xuICAgIH1cbiAgICBcbiAgICBpZih0aGlzLm15WG1sRGF0YSl7XG4gICAgICB0aGlzLmN1cnJlbnRkYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XG4gICAgICB0aGlzLmFsbHVzZXJMaXN0ID0gdGhpcy5wZFNlcnZpY2UuYWxsVXNlckNoYXJ0RGF0YSgpO1xuICAgICAgdGhpcy5yZXNvdXJjZURhdGFMaXN0ID0gdGhpcy5wZFNlcnZpY2UuZ2VuYXJhdGVSZXNvdXJzZVJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XG4gICAgICB0aGlzLnRvdGFsVXNlcnMgPSB0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2Vyc01ldGFkYXRhLmxlbmd0aDtcbiAgICAgIHRoaXMuZWxpZ2libGVVc2VycyA9IHRoaXMuZmluZEVsaWdpYmxlVXNlckNvdW50KCk7XG4gICAgICB0aGlzLmluc3RhbGxlZENsYXNzcm9vbXMgPSB0aGlzLmZpbmRJbnN0YWxsZWRDbGFzc3Jvb21zKCk7XG4gICAgICB0aGlzLmN1cnJlbnRSb29tcyA9IHRoaXMuZmluZEN1cnJlbnRDbGFzc3Jvb21zKCk7XG4gICAgICB0aGlzLmZpbmRDdXJyZW50VXNlckNvdW50KCk7XG4gICAgfVxuICAgIHRoaXMucGRTZXJ2aWNlLmNoYXJ0VHlwZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hhcnRUeXBlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRGF0YVR5cGUoZGF0YSk7XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemVXaW5kb3cuYmluZCh0aGlzKSk7XG4gIH1cbiAgb25SZXNpemVXaW5kb3coZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubXlDaGFydHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjg4OyAvL3NldCBhbiBhcHByb3ByaWF0ZSAgZmFjdG9yXG4gIH1cbiAgbXlDaGFydFJlYWR5KCkge1xuICAgIHRoaXMuY3JlYXRlRGl2Zm9yVG90YWxEdXJhcnRpb24oKTtcbiAgICB0aGlzLnNldEhlaWdodG9mRGl2Zm9yVG90YWxEdXJhcnRpb24oKTtcbiAgICAgIC8vIHRoaXMucmVtb3ZlQmxhbmtFbnRyeUJhcigpO1xuICB9XG4gIHVwZGF0ZUNoYXJ0VHlwZShkYXRhVHlwZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY2hhcnR2aWV3ICE9IG51bGwgJiYgdGhpcy5jaGFydHZpZXcgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YVR5cGUgPT0gQ2hhcnRUeXBlLlRhYmxlKSB7XG4gICAgICAgIHRoaXMuY2hhcnR2aWV3LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlRGF0YVR5cGUoZGF0YVR5cGU6IGFueSkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGRhdGFUeXBlO1xuICAgIGlmICh0aGlzLm15WG1sRGF0YSkge1xuICAgICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xuICAgICAgICBpZih0aGlzLmlzQWxsVXNlcnMpe1xuICAgICAgICAgIHRoaXMudXNlcldpc2VBbGxEYXRhKCk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMudXNlcldpc2VDdXJyZW50RGF0YSgpO1xuICAgICAgICB9IFxuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuYWxsTGlzdCA9IFwiQWxsIFJvb21zXCI7XG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgUm9vbXNcIjtcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcbiAgICAgICAgICB0aGlzLmNsYXNzUm9vbVdpc2VBbGxEYXRhKCk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XG4gICAgICAgIH0gXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVwZGF0ZUNoYXJ0KCkge1xuICAgIGxldCBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XG4gICAgd2hpbGUgKGxhYmVscy5maXJzdENoaWxkKSB7XG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XG4gICAgfVxuICAgIHRoaXMuY2hhcnREYXRhVGFibGUgPSB0aGlzLm15Q2hhcnREYXRhTWF0cml4O1xuICAgIGNvbnNvbGUubG9nKFwidGhpcy5teUNoYXJ0RGF0YU1hdHJpeFwiLHRoaXMubXlDaGFydERhdGFNYXRyaXgpO1xuICAgIFxuICBcbiAgICAodGhpcy5teUNoYXJ0T3B0aW9ucyA9IHtcbiAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgdHJpZ2dlcjogJ25vbmUnLFxuICAgICAgfSxcbiAgICAgIGNvbG9yczogWycjZmY3ZjBlJywgJyMyY2EwMmMnLCAnIzhjNTY0YicsICcjZDYyNzI4JywgJyNiY2JkMjInLCAnIzE3YmVjZiddLFxuICAgICAgdGltZWxpbmU6IHtcbiAgICAgICAgY29sb3JCeVJvd0xhYmVsOiB0cnVlLFxuICAgICAgICBiYXJMYWJlbFN0eWxlOiB7XG4gICAgICAgICAgZm9udFNpemU6IDcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaEF4aXM6IHtcbiAgICAgICAgZm9ybWF0OiAnSEg6bW0gYScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5teUNoYXJ0SGVpZ2h0ID0gdGhpcy5BbGxyb3dIZWlnaHQgKyAxMDA7Ly90byBzZXQgcGVyZmVjdCBoZWlnaHQgb2YgY2hhcnQgXG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBjYWx1bGF0ZVRvdGFsRHVyYXRpb24oZGV0YWlsVmlld01hdHJpeDphbnkpIHtcbiAgICAgXG4gICAgbGV0IGlkX2R1cmF0aW9uQXJyYXk7XG4gICAgbGV0IGlkX2R1cmF0aW9uTWF0cml4ID0gbmV3IEFycmF5KCk7XG4gICAgaWRfZHVyYXRpb25NYXRyaXggPSBbXTtcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ID0gW107XG4gICAgaWYgKHRoaXMuaXNVc2VyV2lzZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlkX2R1cmF0aW9uQXJyYXkgPSB7XG4gICAgICAgICAgbmFtZTogZGV0YWlsVmlld01hdHJpeFtpXS51c2VyTmFtZSxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoZGV0YWlsVmlld01hdHJpeFtpXS5kdXJhdGlvbiksXG4gICAgICAgIH07XG4gICAgICAgIGlkX2R1cmF0aW9uTWF0cml4LnB1c2goaWRfZHVyYXRpb25BcnJheSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsVmlld01hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImRldGFpbFZpZXdNYXRyaXhbaV1cIixkZXRhaWxWaWV3TWF0cml4W2ldKTtcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcbiAgICAgICAgICBuYW1lOiBkZXRhaWxWaWV3TWF0cml4W2ldLnRlcm1pbmFsSVAsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxuICAgICAgICB9O1xuICAgICAgICBpZF9kdXJhdGlvbk1hdHJpeC5wdXNoKGlkX2R1cmF0aW9uQXJyYXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBsZXQgb2JqOiBhbnkgPSB7fTtcbiAgICBpZF9kdXJhdGlvbk1hdHJpeCA9IFsuLi5uZXcgU2V0KGlkX2R1cmF0aW9uTWF0cml4KV07XG4gICAgXG4gICAgaWRfZHVyYXRpb25NYXRyaXguZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKG9ialtpdGVtLm5hbWVdKSB7XG4gICAgICAgIG9ialtpdGVtLm5hbWVdLnZhbHVlID0gb2JqW2l0ZW0ubmFtZV0udmFsdWUgKyBpdGVtLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBvYmpbaXRlbS5uYW1lXSA9IGl0ZW07XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHZhbHVlc0FyciA9IE9iamVjdC52YWx1ZXMob2JqKTtcbiAgIFxuICAgIGxldCBteUFycmF5ID0gbmV3IEFycmF5KCk7XG4gICAgbXlBcnJheSA9IFtdO1xuICAgIHZhbHVlc0Fyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIG15QXJyYXkucHVzaChpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgIGZvciAobGV0IGkgPSAwOyBpIDwgbXlBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHRvdGFsZHVyYXRpb25QZXJSb3cgPSBbdGhpcy50aW1lQ29udmVydChteUFycmF5W2ldKS50b1N0cmluZygpICsgJyBocnMnXTtcbiAgICAgIC8vIGxldCB0b3RhbENoYXJ0Um93RGF0YUFycmF5ID0gW3RvdGFsZHVyYXRpb25QZXJSb3ddO1xuICAgICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5wdXNoKHRvdGFsZHVyYXRpb25QZXJSb3cpO1xuICAgIH1cbiAgfVxuICB0aW1lQ29udmVydChuOiBhbnkpIHtcbiAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihuKTtcbiAgICB2YXIgaG91cnMgPSBudW0gLyA2MDtcbiAgICB2YXIgcmhvdXJzID0gTWF0aC5mbG9vcihob3Vycyk7XG4gICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByaG91cnMpICogNjA7XG4gICAgdmFyIHJtaW51dGVzID0gTWF0aC5yb3VuZChtaW51dGVzKTtcbiAgICByZXR1cm4gcmhvdXJzICsgJzonICsgcm1pbnV0ZXM7XG4gIH1cbiAgcmVtb3ZlQmxhbmtFbnRyeUJhcigpIHtcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XG4gICAgdmFyIGVsID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJyZWN0XCIpOyAgICAgIC8vZ2V0IGFsbCB0aGUgZGVzY2VuZGFudCByZWN0IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgICAgICBcbiAgICB2YXIgd2lkdGggPSAxMDAwMDAwMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldCBhIGxhcmdlIGluaXRpYWwgdmFsdWUgdG8gd2lkdGhcbiAgICB2YXIgZWxUb1JlbSA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VsZW1lbnQgd291bGQgYmUgYWRkZWQgdG8gdGhpcyBhcnJheSBmb3IgcmVtb3ZhbFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvb3Bpbmcgb3ZlciBhbGwgdGhlIHJlY3QgZWxlbWVudCBvZiBjb250YWluZXJcbiAgICAgIHZhciBjd2lkdGggPSBwYXJzZUludChlbFtpXS5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7Ly9nZXR0aW5nIHRoZSB3aWR0aCBvZiBpdGggZWxlbWVudFxuICAgICAgaWYgKGN3aWR0aCA8IHdpZHRoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgY3VycmVudCBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB3aWR0aCB0aGVuIHRoaXMgaXMgbWluLiB3aWR0aCBhbmQgaXRoIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWRcbiAgICAgICAgZWxUb1JlbSA9IFtlbFtpXV07XG4gICAgICAgIHdpZHRoID0gY3dpZHRoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHRpbmcgdGhlIHdpZHRoIHdpdGggbWluIHdpZHRoXG4gICAgICB9XG4gICAgICBlbHNlIGlmIChjd2lkdGggPT0gd2lkdGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBjdXJyZW50IGVsZW1lbnQgd2lkdGggaXMgZXF1YWwgdG8gcHJldmlvdXMgd2lkdGggdGhlbiBtb3JlIHRoYXQgb25lIGVsZW1lbnQgd291bGQgYmUgcmVtb3ZlZFxuICAgICAgICBlbFRvUmVtLnB1c2goZWxbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsVG9SZW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIG5vdyBpdGVyYXRlIEpVU1QgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZVxuICAgICAgZWxUb1JlbVtpXS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcblxuICAgIH1cbiAgfVxuICBjcmVhdGVEaXZmb3JUb3RhbER1cmFydGlvbigpIHtcbiAgICBsZXQgcm93TGFiZWxzID0gW107XG4gICAgdGhpcy5yb3dFbGVtZW50cyA9IFtdO1xuICAgIHZhciBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XG4gICAgd2hpbGUgKGxhYmVscy5maXJzdENoaWxkKSB7XG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRlYW0gPSB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4W2ldWzBdO1xuICAgICAgcm93TGFiZWxzLnB1c2godGVhbSk7XG4gICAgICB2YXIgbGFiZWwgPSBsYWJlbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICAgICBsYWJlbC5zdHlsZVsnYm9yZGVyLWJvdHRvbSddID0gJzFweCBzb2xpZCAjYjdiN2I3JztcbiAgICAgIGxhYmVsLnN0eWxlWydmb250LWZhbWlseSddID0gJ0FyaWFsJztcbiAgICAgIGxhYmVsLnN0eWxlWydmb250LXNpemUnXSA9ICcxM3B4JztcbiAgICAgIGxhYmVsLnN0eWxlWyd0ZXh0LWFsaWduJ10gPSAnbGVmdCc7XG4gICAgICBsYWJlbC5zdHlsZVsncGFkZGluZy1sZWZ0J10gPSAnOHB4JztcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSAnOHB4JztcbiAgICAgIGxhYmVsLnN0eWxlLnBvc2l0aW9uID0gJ2luaGVyaXQnO1xuICAgICAgaWYgKGkgJSAyKSB7XG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2U2ZTZlNic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbC5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJyNmZmZmZmYnO1xuICAgICAgfVxuICAgICAgbGFiZWwuaW5uZXJIVE1MID0gdGVhbTtcbiAgICAgIHRoaXMucm93RWxlbWVudHMucHVzaChsYWJlbCk7XG4gICAgfVxuICB9XG4gIHNldEhlaWdodG9mRGl2Zm9yVG90YWxEdXJhcnRpb24oKSB7XG4gICBcbiAgICB0aGlzLkFsbHJvd0hlaWdodCA9IDA7XG4gICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlUaW1lTGluZScpO1xuICAgIGxldCByb3dzID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3JlY3QnKTtcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgcm93SW5kZXgrKztcbiAgICAgIGlmIChyb3dJbmRleCA8IHRoaXMucm93RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGxldCByb3dIZWlnaHQgPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSkgKyAncHgnO1xuICAgICAgICB0aGlzLkFsbHJvd0hlaWdodCArPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudENlbGwgPSB0aGlzLnJvd0VsZW1lbnRzW3Jvd0luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XG4gICAgICAgICAgY3VycmVudENlbGwuc3R5bGUuaGVpZ2h0ID0gcm93SGVpZ2h0O1xuICAgICAgICAgIGN1cnJlbnRDZWxsLnN0eWxlLmxpbmVIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlbGVjdFJvd0RhdGEoZXZlbnQ6IGFueSkge1xuICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZXZlbnQuc2VsZWN0aW9uWzBdOyBcbiAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xuICAgIFxuICAgfWVsc2V7XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xuICBcbiAgICBcbiAgIH1cbiAgLy8gIGNvbnNvbGUubG9nKFwidGhpcy5zZWxlY3RlZFVzZXJEYXRhXCIsdGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcbiAgICB0aGlzLnBkU2VydmljZS5kZXRhaWxlZHZpZXdEYXRhLm5leHQodGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgLy8gYWxsdXNlckxpc3RcbiAgfVxuICBzaG93QWxsVXNlcigpIHtcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5pc0FsbFVzZXJzID0gdHJ1ZTtcbiAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xuICAgICAgdGhpcy51c2VyV2lzZUFsbERhdGEoKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcbiAgICB9XG4gIH1cbiAgc2hvd0N1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNBbGxVc2VycyA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzQWxsVXNlcnMubmV4dChmYWxzZSk7XG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcbiAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XG4gICAgfWVsc2V7XG4gICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XG4gICAgfVxuICB9XG4gdXNlcldpc2VDdXJyZW50RGF0YSgpe1xuIFxuICAgbGV0IGNoYXJ0RGF0YVVzZXJXaXNlID0gdGhpcy5wZFNlcnZpY2UudXNlcldpc2VDaGFydERhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlXCIsY2hhcnREYXRhVXNlcldpc2UpO1xuICAgIFxuICAgaWYoY2hhcnREYXRhVXNlcldpc2UubGVuZ3RoPjApe1xuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcbiAgICBpZih0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEubGVuZ3RoPjApe1xuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XG4gICAgfVxuICAgfSAgXG4gfVxuIHVzZXJXaXNlQWxsRGF0YSgpe1xuICAgIGxldCBjaGFydERhdGFVc2VyV2lzZSA9IHRoaXMuYWxsdXNlckxpc3QuZm9yQ2hhcnREYXRhO1xuICAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID1jaGFydERhdGFVc2VyV2lzZTtcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5hbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlKTtcbiAgICB9XG4gICBcbiB9XG4gY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCl7XG4gICBsZXQgY2xhc3NSb29tZGF0YSA9IHRoaXMucGRTZXJ2aWNlLmNsYXNzUm9vbVdpc2VDaGFydERhdGEoKTtcbiAgY29uc29sZS5sb2coXCJjbGFzc1Jvb21kYXRhXCIsY2xhc3NSb29tZGF0YSk7XG4gICBpZihjbGFzc1Jvb21kYXRhICYmIGNsYXNzUm9vbWRhdGEubGVuZ3RoPjApe1xuICAgIFxuICAgICBcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID1jbGFzc1Jvb21kYXRhOyAgICBcbiAgICBjb25zb2xlLmxvZyhcIm15Q2hhcnREYXRhTWF0cml4XCIsdGhpcy5teUNoYXJ0RGF0YU1hdHJpeClcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcbiAgICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XG4gICAgfVxuICAgfSBcbiB9XG4gXG4gY2xhc3NSb29tV2lzZUFsbERhdGEoKXtcbiAgIGxldCBhbGxjbGFzc1Jvb21MaXN0ID0gdGhpcy5wZFNlcnZpY2UuYWxsUm9vbXNEYXRhKCk7XG4gICBpZihhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YSAmJiBhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YS5sZW5ndGggPiAwKXtcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID0gYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGE7XG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xuICAgfVxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlICYmIGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZS5sZW5ndGggPiAwKXtcbiAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbihhbGxjbGFzc1Jvb21MaXN0LmZvcmR1cmF0aW9uVGFibGUpO1xuICAgfVxuICAgXG4gfVxuXG4gIGZpbmRDdXJyZW50VXNlckNvdW50KCl7XG4gICAgbGV0IHVzZXJDb25zb2xlRGF0YSA9IHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YTtcbiAgIFxuICAgIGxldCB1c2VyTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XG4gICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICBjb25zdCBlbGVtZW50ID0gdXNlckNvbnNvbGVEYXRhW2luZGV4XS51c2VyTmFtZTtcbiAgICAgdXNlck5hbWVBcnJheS5wdXNoKGVsZW1lbnQpO1xuICAgfVxuICAgIGxldCB1bmlxdWVVc2VyTmFtZSA9IFsuLi5uZXcgU2V0KHVzZXJOYW1lQXJyYXkpXTtcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IHVuaXF1ZVVzZXJOYW1lLmxlbmd0aDtcbiAgfVxuXG4gIGZpbmRDdXJyZW50Q2xhc3Nyb29tcygpe1xuICAgIC8vY29uc29sZS5sb2coXCJmaW5kQ3VycmVudENsYXNzcm9vbXNcIiwgdGhpcy5jdXJyZW50ZGF0YUxpc3Quc2Nob29sVGVybWluYWxEYXRhKVxuICAgIGxldCBjbGFzc1Jvb21kYXRhID0gdGhpcy5wZFNlcnZpY2UubmV3R2V0Q3VycmVudENsYXNzcm9vbURhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhcImZpbmRDdXJyZW50Q2xhc3Nyb29tc1wiLGNsYXNzUm9vbWRhdGEpO1xuICAgIHJldHVybiBjbGFzc1Jvb21kYXRhLmxlbmd0aDtcbiAgfVxuICBmaW5kSW5zdGFsbGVkQ2xhc3Nyb29tcygpe1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgY29uc29sZS5sb2coXCJmaW5kSW5zdGFsbGVkQ2xhc3Nyb29tc1wiLCB0aGlzLmN1cnJlbnRkYXRhTGlzdC5zY2hvb2xUZXJtaW5hbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudGRhdGFMaXN0LnNjaG9vbFRlcm1pbmFsRGF0YS5sZW5ndGg7XG4gIH1cbiAgZmluZEVsaWdpYmxlVXNlckNvdW50KCl7XG4gICAgY29uc29sZS5sb2coXCJmaW5kRWxpZ2libGVVc2VyQ291bnRcIiwgdGhpcy5jdXJyZW50ZGF0YUxpc3QpXG4gICAgXG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBsZXQgdXNlck1ldGFEYXRhID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlcnNNZXRhZGF0YVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyTWV0YURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdXNlck1ldGFEYXRhW2luZGV4XS51c2VyU3ViamVjdHM7XG4gICAgICBpZihlbGVtZW50ICE9PSBcIlwiKXtcbiAgICAgICAvLyBjb25zb2xlLmxvZyhcImZpbmRFbGlnaWJsZVVzZXJDb3VudFwiLCBlbGVtZW50KVxuICAgICAgICBjb3VudCA9IGNvdW50ICsgMTtcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3kgPj4nKTtcbiAgfVxufVxuIl19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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a0IsQ0FBQyxNQUFNLENBQUM7SUFDeEQsQ0FBQztJQUNELHFCQUFxQjtRQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUUxRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQTtRQUNyRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUcsT0FBTyxLQUFLLEVBQUUsRUFBQztnQkFDakIsZ0RBQWdEO2dCQUMvQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNuQjtTQUVGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULGlDQUFpQztJQUNuQyxDQUFDOzs7WUFuYUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixnM0VBQXlDOzthQUUxQzs7O1lBTFEsOEJBQThCOzs7bUJBT3BDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXJ0VHlwZSwgR29vZ2xlQ2hhcnRDb21wb25lbnQgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgZWxlbWVudCB9IGZyb20gJ3Byb3RyYWN0b3InO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2hhcnR2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0dmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0dmlldy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydHZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZXQgZGF0YShyZXM6IGFueSkge1xuICAgIGlmKHJlcyE9PSBudWxsKXtcbiAgICAgIHRoaXMubG9hZENoYXJ0KHJlcyk7XG4gICAgfVxuICAgICAgXG4gIH1cbiAgY2hhcnR2aWV3OmFueTtcbiAgbXlEYXRhTGlzdDphbnk7XG4gIGNoYXJ0RGF0YVRhYmxlOmFueTtcbiAgbXlDaGFydE9wdGlvbnM6IGFueTtcbiAgQWxscm93SGVpZ2h0OiBhbnk7XG4gIG15WG1sRGF0YTogYW55O1xuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xuICByZXNvdXJjZURhdGFMaXN0OmFueTtcbiAgYWxsZGF0YUxpc3Q6YW55O1xuICBzZWxlY3RlZFVzZXJEYXRhOmFueTtcbiAgcm93RWxlbWVudHM6YW55O1xuIFxuICBpbnN0YWxsZWRDbGFzc3Jvb21zOiBhbnk7XG4gIGN1cnJlbnRSb29tczogYW55O1xuICB0b3RhbFVzZXJzID0gMDtcbiAgZWxpZ2libGVVc2VycyA9IDA7XG4gIGN1cnJlbnRVc2VycyA9IDA7XG4gIG15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xuICBteUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XG4gIG15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIGN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XG4gIGFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xuICBpc0FsbFVzZXJzID0gZmFsc2U7XG4gIGlzVXNlcldpc2UgPSBmYWxzZTtcbiAgYWxsdXNlckxpc3Q6IGFueTtcbiAgbXlDaGFydERhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgXG4gIHRvdGFsQ2hhcnREYXRhTWF0cml4ICA9IG5ldyBBcnJheSgpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBsb2FkQ2hhcnQocmVzcG9uc2U6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCcgSU5sb2FkQ2hhcnQgLS0+JywgcmVzcG9uc2UpO1xuICAgIHRoaXMudG90YWxVc2VycyA9IDA7XG4gICAgdGhpcy5lbGlnaWJsZVVzZXJzID0gMDtcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IDA7XG4gICAgdGhpcy5teUNoYXJ0VHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcbiAgICB0aGlzLm15Q2hhcnR3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICogMC44ODtcbiAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgdGhpcy5jdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xuICAgIHRoaXMuYWxsTGlzdCA9IFwiQWxsIFVzZXJzXCI7XG4gICAgdGhpcy5pc0FsbFVzZXJzID0gZmFsc2U7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XG4gICAgdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCA9W107XG4gICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeCAgPVtdO1xuXG4gICAgdGhpcy5jaGFydHZpZXcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGQtY2hhcnR2aWV3Jyk7XG4gICAgdGhpcy5teURhdGFMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLXhtbERhdGEnKTtcbiAgICAvLyBsZXQgcGFyc2UgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgaWYocmVzcG9uc2Upe1xuICAgICAgdGhpcy5teVhtbERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgXG4gICAgaWYodGhpcy5teVhtbERhdGEpe1xuICAgICAgdGhpcy5jdXJyZW50ZGF0YUxpc3QgPSB0aGlzLnBkU2VydmljZS5nZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xuICAgICAgdGhpcy5hbGx1c2VyTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmFsbFVzZXJDaGFydERhdGEoKTtcbiAgICAgIHRoaXMucmVzb3VyY2VEYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xuICAgICAgdGhpcy50b3RhbFVzZXJzID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlcnNNZXRhZGF0YS5sZW5ndGg7XG4gICAgICB0aGlzLmVsaWdpYmxlVXNlcnMgPSB0aGlzLmZpbmRFbGlnaWJsZVVzZXJDb3VudCgpO1xuICAgICAgdGhpcy5pbnN0YWxsZWRDbGFzc3Jvb21zID0gdGhpcy5maW5kSW5zdGFsbGVkQ2xhc3Nyb29tcygpO1xuICAgICAgdGhpcy5jdXJyZW50Um9vbXMgPSB0aGlzLmZpbmRDdXJyZW50Q2xhc3Nyb29tcygpO1xuICAgICAgdGhpcy5maW5kQ3VycmVudFVzZXJDb3VudCgpO1xuICAgIH1cbiAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0VHlwZShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGFUeXBlKGRhdGEpO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uUmVzaXplV2luZG93LmJpbmQodGhpcykpO1xuICB9XG4gIG9uUmVzaXplV2luZG93KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm15Q2hhcnR3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICogMC44ODsgLy9zZXQgYW4gYXBwcm9wcmlhdGUgIGZhY3RvclxuICB9XG4gIG15Q2hhcnRSZWFkeSgpIHtcbiAgICB0aGlzLmNyZWF0ZURpdmZvclRvdGFsRHVyYXJ0aW9uKCk7XG4gICAgdGhpcy5zZXRIZWlnaHRvZkRpdmZvclRvdGFsRHVyYXJ0aW9uKCk7XG4gICAgICAvLyB0aGlzLnJlbW92ZUJsYW5rRW50cnlCYXIoKTtcbiAgfVxuICB1cGRhdGVDaGFydFR5cGUoZGF0YVR5cGU6IGFueSkge1xuICAgIGlmICh0aGlzLmNoYXJ0dmlldyAhPSBudWxsICYmIHRoaXMuY2hhcnR2aWV3ICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGFUeXBlID09IENoYXJ0VHlwZS5UYWJsZSkge1xuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGFydHZpZXcuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVwZGF0ZURhdGFUeXBlKGRhdGFUeXBlOiBhbnkpIHtcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBkYXRhVHlwZTtcbiAgICBpZiAodGhpcy5teVhtbERhdGEpIHtcbiAgICAgIGlmKHRoaXMuaXNVc2VyV2lzZSl7XG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgVXNlcnNcIjtcbiAgICAgICAgdGhpcy5hbGxMaXN0ID0gXCJBbGwgVXNlcnNcIjtcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQWxsRGF0YSgpO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQ3VycmVudERhdGEoKTtcbiAgICAgICAgfSBcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBSb29tc1wiO1xuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFJvb21zXCI7XG4gICAgICAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XG4gICAgICAgICAgdGhpcy5jbGFzc1Jvb21XaXNlQWxsRGF0YSgpO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICB0aGlzLmNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgIH1cbiAgfVxuICB1cGRhdGVDaGFydCgpIHtcbiAgICBsZXQgbGFiZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhYmVscycpO1xuICAgIHdoaWxlIChsYWJlbHMuZmlyc3RDaGlsZCkge1xuICAgICAgbGFiZWxzLnJlbW92ZUNoaWxkKGxhYmVscy5sYXN0Q2hpbGQpO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLm15Q2hhcnREYXRhTWF0cml4LmZpbHRlcihub2RlID0+IG5vZGVbMF0gIT09IFwiLVwiICYmIG5vZGVbMF0gIT09IFwiLS1cIik7XG5cbiAgICB0aGlzLmNoYXJ0RGF0YVRhYmxlID0gIGZpbHRlcmVkRGF0YTsvL3RoaXMubXlDaGFydERhdGFNYXRyaXg7XG4gICAgY29uc29sZS5sb2coXCJ0aGlzLm15Q2hhcnREYXRhTWF0cml4XCIsdGhpcy5teUNoYXJ0RGF0YU1hdHJpeCk7XG4gICAgXG4gIFxuICAgICh0aGlzLm15Q2hhcnRPcHRpb25zID0ge1xuICAgICAgdG9vbHRpcDoge1xuICAgICAgICB0cmlnZ2VyOiAnbm9uZScsXG4gICAgICB9LFxuICAgICAgY29sb3JzOiBbJyNmZjdmMGUnLCAnIzJjYTAyYycsICcjOGM1NjRiJywgJyNkNjI3MjgnLCAnI2JjYmQyMicsICcjMTdiZWNmJ10sXG4gICAgICB0aW1lbGluZToge1xuICAgICAgICBjb2xvckJ5Um93TGFiZWw6IHRydWUsXG4gICAgICAgIGJhckxhYmVsU3R5bGU6IHtcbiAgICAgICAgICBmb250U2l6ZTogNyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoQXhpczoge1xuICAgICAgICBmb3JtYXQ6ICdISDptbSBhJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB0aGlzLkFsbHJvd0hlaWdodCArIDEwMDsvL3RvIHNldCBwZXJmZWN0IGhlaWdodCBvZiBjaGFydCBcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGNhbHVsYXRlVG90YWxEdXJhdGlvbihkZXRhaWxWaWV3TWF0cml4OmFueSkge1xuICAgICBcbiAgICBjb25zb2xlLmxvZygnZGV0YWlsVmlld01hdHJpeC0tPicsZGV0YWlsVmlld01hdHJpeClcblxuXG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gZGV0YWlsVmlld01hdHJpeC5maWx0ZXIoaXRlbSA9PiBpdGVtLnVzZXJOYW1lICE9PSBcIi1cIiAmJiBpdGVtLnVzZXJOYW1lICE9PSBcIi0tXCIpO1xuXG5cbiAgICBkZXRhaWxWaWV3TWF0cml4ID0gZmlsdGVyZWREYXRhO1xuXG4gICAgbGV0IGlkX2R1cmF0aW9uQXJyYXk7XG4gICAgbGV0IGlkX2R1cmF0aW9uTWF0cml4ID0gbmV3IEFycmF5KCk7XG4gICAgaWRfZHVyYXRpb25NYXRyaXggPSBbXTtcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ID0gW107XG4gICAgaWYgKHRoaXMuaXNVc2VyV2lzZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlkX2R1cmF0aW9uQXJyYXkgPSB7XG4gICAgICAgICAgbmFtZTogZGV0YWlsVmlld01hdHJpeFtpXS51c2VyTmFtZSxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoZGV0YWlsVmlld01hdHJpeFtpXS5kdXJhdGlvbiksXG4gICAgICAgIH07XG4gICAgICAgIGlkX2R1cmF0aW9uTWF0cml4LnB1c2goaWRfZHVyYXRpb25BcnJheSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsVmlld01hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImRldGFpbFZpZXdNYXRyaXhbaV1cIixkZXRhaWxWaWV3TWF0cml4W2ldKTtcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcbiAgICAgICAgICBuYW1lOiBkZXRhaWxWaWV3TWF0cml4W2ldLnRlcm1pbmFsSVAsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxuICAgICAgICB9O1xuICAgICAgICBpZF9kdXJhdGlvbk1hdHJpeC5wdXNoKGlkX2R1cmF0aW9uQXJyYXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBsZXQgb2JqOiBhbnkgPSB7fTtcbiAgICBpZF9kdXJhdGlvbk1hdHJpeCA9IFsuLi5uZXcgU2V0KGlkX2R1cmF0aW9uTWF0cml4KV07XG4gICAgXG4gICAgaWRfZHVyYXRpb25NYXRyaXguZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKG9ialtpdGVtLm5hbWVdKSB7XG4gICAgICAgIG9ialtpdGVtLm5hbWVdLnZhbHVlID0gb2JqW2l0ZW0ubmFtZV0udmFsdWUgKyBpdGVtLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBvYmpbaXRlbS5uYW1lXSA9IGl0ZW07XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHZhbHVlc0FyciA9IE9iamVjdC52YWx1ZXMob2JqKTtcbiAgIFxuICAgIGxldCBteUFycmF5ID0gbmV3IEFycmF5KCk7XG4gICAgbXlBcnJheSA9IFtdO1xuICAgIHZhbHVlc0Fyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIG15QXJyYXkucHVzaChpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgIGZvciAobGV0IGkgPSAwOyBpIDwgbXlBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHRvdGFsZHVyYXRpb25QZXJSb3cgPSBbdGhpcy50aW1lQ29udmVydChteUFycmF5W2ldKS50b1N0cmluZygpICsgJyBocnMnXTtcbiAgICAgIC8vIGxldCB0b3RhbENoYXJ0Um93RGF0YUFycmF5ID0gW3RvdGFsZHVyYXRpb25QZXJSb3ddO1xuICAgICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5wdXNoKHRvdGFsZHVyYXRpb25QZXJSb3cpO1xuICAgIH1cbiAgfVxuICB0aW1lQ29udmVydChuOiBhbnkpIHtcbiAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihuKTtcbiAgICB2YXIgaG91cnMgPSBudW0gLyA2MDtcbiAgICB2YXIgcmhvdXJzID0gTWF0aC5mbG9vcihob3Vycyk7XG4gICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByaG91cnMpICogNjA7XG4gICAgdmFyIHJtaW51dGVzID0gTWF0aC5yb3VuZChtaW51dGVzKTtcbiAgICByZXR1cm4gcmhvdXJzICsgJzonICsgcm1pbnV0ZXM7XG4gIH1cbiAgcmVtb3ZlQmxhbmtFbnRyeUJhcigpIHtcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XG4gICAgdmFyIGVsID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJyZWN0XCIpOyAgICAgIC8vZ2V0IGFsbCB0aGUgZGVzY2VuZGFudCByZWN0IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgICAgICBcbiAgICB2YXIgd2lkdGggPSAxMDAwMDAwMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldCBhIGxhcmdlIGluaXRpYWwgdmFsdWUgdG8gd2lkdGhcbiAgICB2YXIgZWxUb1JlbSA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VsZW1lbnQgd291bGQgYmUgYWRkZWQgdG8gdGhpcyBhcnJheSBmb3IgcmVtb3ZhbFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvb3Bpbmcgb3ZlciBhbGwgdGhlIHJlY3QgZWxlbWVudCBvZiBjb250YWluZXJcbiAgICAgIHZhciBjd2lkdGggPSBwYXJzZUludChlbFtpXS5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7Ly9nZXR0aW5nIHRoZSB3aWR0aCBvZiBpdGggZWxlbWVudFxuICAgICAgaWYgKGN3aWR0aCA8IHdpZHRoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgY3VycmVudCBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB3aWR0aCB0aGVuIHRoaXMgaXMgbWluLiB3aWR0aCBhbmQgaXRoIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWRcbiAgICAgICAgZWxUb1JlbSA9IFtlbFtpXV07XG4gICAgICAgIHdpZHRoID0gY3dpZHRoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHRpbmcgdGhlIHdpZHRoIHdpdGggbWluIHdpZHRoXG4gICAgICB9XG4gICAgICBlbHNlIGlmIChjd2lkdGggPT0gd2lkdGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBjdXJyZW50IGVsZW1lbnQgd2lkdGggaXMgZXF1YWwgdG8gcHJldmlvdXMgd2lkdGggdGhlbiBtb3JlIHRoYXQgb25lIGVsZW1lbnQgd291bGQgYmUgcmVtb3ZlZFxuICAgICAgICBlbFRvUmVtLnB1c2goZWxbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsVG9SZW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIG5vdyBpdGVyYXRlIEpVU1QgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZVxuICAgICAgZWxUb1JlbVtpXS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcblxuICAgIH1cbiAgfVxuICBjcmVhdGVEaXZmb3JUb3RhbER1cmFydGlvbigpIHtcbiAgICBsZXQgcm93TGFiZWxzID0gW107XG4gICAgdGhpcy5yb3dFbGVtZW50cyA9IFtdO1xuICAgIHZhciBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XG4gICAgd2hpbGUgKGxhYmVscy5maXJzdENoaWxkKSB7XG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRlYW0gPSB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4W2ldWzBdO1xuICAgICAgcm93TGFiZWxzLnB1c2godGVhbSk7XG4gICAgICB2YXIgbGFiZWwgPSBsYWJlbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICAgICBsYWJlbC5zdHlsZVsnYm9yZGVyLWJvdHRvbSddID0gJzFweCBzb2xpZCAjYjdiN2I3JztcbiAgICAgIGxhYmVsLnN0eWxlWydmb250LWZhbWlseSddID0gJ0FyaWFsJztcbiAgICAgIGxhYmVsLnN0eWxlWydmb250LXNpemUnXSA9ICcxM3B4JztcbiAgICAgIGxhYmVsLnN0eWxlWyd0ZXh0LWFsaWduJ10gPSAnbGVmdCc7XG4gICAgICBsYWJlbC5zdHlsZVsncGFkZGluZy1sZWZ0J10gPSAnOHB4JztcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSAnOHB4JztcbiAgICAgIGxhYmVsLnN0eWxlLnBvc2l0aW9uID0gJ2luaGVyaXQnO1xuICAgICAgaWYgKGkgJSAyKSB7XG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2U2ZTZlNic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbC5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJyNmZmZmZmYnO1xuICAgICAgfVxuICAgICAgbGFiZWwuaW5uZXJIVE1MID0gdGVhbTtcbiAgICAgIHRoaXMucm93RWxlbWVudHMucHVzaChsYWJlbCk7XG4gICAgfVxuICB9XG4gIHNldEhlaWdodG9mRGl2Zm9yVG90YWxEdXJhcnRpb24oKSB7XG4gICBcbiAgICB0aGlzLkFsbHJvd0hlaWdodCA9IDA7XG4gICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlUaW1lTGluZScpO1xuICAgIGxldCByb3dzID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3JlY3QnKTtcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgcm93SW5kZXgrKztcbiAgICAgIGlmIChyb3dJbmRleCA8IHRoaXMucm93RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGxldCByb3dIZWlnaHQgPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSkgKyAncHgnO1xuICAgICAgICB0aGlzLkFsbHJvd0hlaWdodCArPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudENlbGwgPSB0aGlzLnJvd0VsZW1lbnRzW3Jvd0luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XG4gICAgICAgICAgY3VycmVudENlbGwuc3R5bGUuaGVpZ2h0ID0gcm93SGVpZ2h0O1xuICAgICAgICAgIGN1cnJlbnRDZWxsLnN0eWxlLmxpbmVIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlbGVjdFJvd0RhdGEoZXZlbnQ6IGFueSkge1xuICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZXZlbnQuc2VsZWN0aW9uWzBdOyBcbiAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xuICAgIFxuICAgfWVsc2V7XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJEYXRhID0gdGhpcy5wZFNlcnZpY2UuZGF0YUZvckRldGFpbGVkVmlldyh0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEsdGhpcy5yZXNvdXJjZURhdGFMaXN0LCByb3cpO1xuICBcbiAgICBcbiAgIH1cbiAgLy8gIGNvbnNvbGUubG9nKFwidGhpcy5zZWxlY3RlZFVzZXJEYXRhXCIsdGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcbiAgICB0aGlzLnBkU2VydmljZS5kZXRhaWxlZHZpZXdEYXRhLm5leHQodGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgLy8gYWxsdXNlckxpc3RcbiAgfVxuICBzaG93QWxsVXNlcigpIHtcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5pc0FsbFVzZXJzID0gdHJ1ZTtcbiAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xuICAgICAgdGhpcy51c2VyV2lzZUFsbERhdGEoKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcbiAgICB9XG4gIH1cbiAgc2hvd0N1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNBbGxVc2VycyA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzQWxsVXNlcnMubmV4dChmYWxzZSk7XG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcbiAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XG4gICAgfWVsc2V7XG4gICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XG4gICAgfVxuICB9XG4gdXNlcldpc2VDdXJyZW50RGF0YSgpe1xuIFxuICAgbGV0IGNoYXJ0RGF0YVVzZXJXaXNlID0gdGhpcy5wZFNlcnZpY2UudXNlcldpc2VDaGFydERhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlXCIsY2hhcnREYXRhVXNlcldpc2UpO1xuICAgIFxuICAgaWYoY2hhcnREYXRhVXNlcldpc2UubGVuZ3RoPjApe1xuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcbiAgICBpZih0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2VyQ29uc29sZURhdGEubGVuZ3RoPjApe1xuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XG4gICAgfVxuICAgfSAgXG4gfVxuIHVzZXJXaXNlQWxsRGF0YSgpe1xuICAgIGxldCBjaGFydERhdGFVc2VyV2lzZSA9IHRoaXMuYWxsdXNlckxpc3QuZm9yQ2hhcnREYXRhO1xuICAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID1jaGFydERhdGFVc2VyV2lzZTtcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5hbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlKTtcbiAgICB9XG4gICBcbiB9XG4gY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCl7XG4gICBsZXQgY2xhc3NSb29tZGF0YSA9IHRoaXMucGRTZXJ2aWNlLmNsYXNzUm9vbVdpc2VDaGFydERhdGEoKTtcbiAgY29uc29sZS5sb2coXCJjbGFzc1Jvb21kYXRhXCIsY2xhc3NSb29tZGF0YSk7XG4gICBpZihjbGFzc1Jvb21kYXRhICYmIGNsYXNzUm9vbWRhdGEubGVuZ3RoPjApe1xuICAgIFxuICAgICBcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID1jbGFzc1Jvb21kYXRhOyAgICBcbiAgICBjb25zb2xlLmxvZyhcIm15Q2hhcnREYXRhTWF0cml4XCIsdGhpcy5teUNoYXJ0RGF0YU1hdHJpeClcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcbiAgICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XG4gICAgfVxuICAgfSBcbiB9XG4gXG4gY2xhc3NSb29tV2lzZUFsbERhdGEoKXtcbiAgIGxldCBhbGxjbGFzc1Jvb21MaXN0ID0gdGhpcy5wZFNlcnZpY2UuYWxsUm9vbXNEYXRhKCk7XG4gICBpZihhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YSAmJiBhbGxjbGFzc1Jvb21MaXN0LmZvckNoYXJ0RGF0YS5sZW5ndGggPiAwKXtcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID0gYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGE7XG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xuICAgfVxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlICYmIGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZS5sZW5ndGggPiAwKXtcbiAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbihhbGxjbGFzc1Jvb21MaXN0LmZvcmR1cmF0aW9uVGFibGUpO1xuICAgfVxuICAgXG4gfVxuXG4gIGZpbmRDdXJyZW50VXNlckNvdW50KCl7XG4gICAgbGV0IHVzZXJDb25zb2xlRGF0YSA9IHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YTtcbiAgIFxuICAgIGxldCB1c2VyTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XG4gICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICBjb25zdCBlbGVtZW50ID0gdXNlckNvbnNvbGVEYXRhW2luZGV4XS51c2VyTmFtZTtcbiAgICAgdXNlck5hbWVBcnJheS5wdXNoKGVsZW1lbnQpO1xuICAgfVxuICAgIGxldCB1bmlxdWVVc2VyTmFtZSA9IFsuLi5uZXcgU2V0KHVzZXJOYW1lQXJyYXkpXTtcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IHVuaXF1ZVVzZXJOYW1lLmxlbmd0aDtcbiAgfVxuXG4gIGZpbmRDdXJyZW50Q2xhc3Nyb29tcygpe1xuICAgIC8vY29uc29sZS5sb2coXCJmaW5kQ3VycmVudENsYXNzcm9vbXNcIiwgdGhpcy5jdXJyZW50ZGF0YUxpc3Quc2Nob29sVGVybWluYWxEYXRhKVxuICAgIGxldCBjbGFzc1Jvb21kYXRhID0gdGhpcy5wZFNlcnZpY2UubmV3R2V0Q3VycmVudENsYXNzcm9vbURhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhcImZpbmRDdXJyZW50Q2xhc3Nyb29tc1wiLGNsYXNzUm9vbWRhdGEpO1xuICAgIHJldHVybiBjbGFzc1Jvb21kYXRhLmxlbmd0aDtcbiAgfVxuICBmaW5kSW5zdGFsbGVkQ2xhc3Nyb29tcygpe1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgY29uc29sZS5sb2coXCJmaW5kSW5zdGFsbGVkQ2xhc3Nyb29tc1wiLCB0aGlzLmN1cnJlbnRkYXRhTGlzdC5zY2hvb2xUZXJtaW5hbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudGRhdGFMaXN0LnNjaG9vbFRlcm1pbmFsRGF0YS5sZW5ndGg7XG4gIH1cbiAgZmluZEVsaWdpYmxlVXNlckNvdW50KCl7XG4gICAgY29uc29sZS5sb2coXCJmaW5kRWxpZ2libGVVc2VyQ291bnRcIiwgdGhpcy5jdXJyZW50ZGF0YUxpc3QpXG4gICAgXG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBsZXQgdXNlck1ldGFEYXRhID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlcnNNZXRhZGF0YVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyTWV0YURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdXNlck1ldGFEYXRhW2luZGV4XS51c2VyU3ViamVjdHM7XG4gICAgICBpZihlbGVtZW50ICE9PSBcIlwiKXtcbiAgICAgICAvLyBjb25zb2xlLmxvZyhcImZpbmRFbGlnaWJsZVVzZXJDb3VudFwiLCBlbGVtZW50KVxuICAgICAgICBjb3VudCA9IGNvdW50ICsgMTtcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3kgPj4nKTtcbiAgfVxufVxuIl19